• Предмет: Информатика
  • Автор: КАТЯ20000000000
  • Вопрос задан 1 год назад

Даны два трехзначных числа.Найти сумму цифр этих чисел,если сумма является двузначным числом,то найти произведение этих чисел,в противном случаи найти разность этих чисел.
В ПАСКАЛЕ

Ответы

Ответ дал: Аноним
0
Var 
a,b,asum,bsum,sum:integer;
Begin 
Write('Введите два трёхзначных числа: '); 
Readln(a,b); 
if (abs(a)<100) or (abs(a)>999) or (abs(b)<100) or (abs(b)>999) then write('Несоблюдено условие ввода') else
Begin 
asum:=a mod 10 + a div 10 mod 10 + a div 100; 
bsum:=b mod 10 + b div 10 mod 10 + b div 100; 
sum:=asum+bsum; 
if (sum>9) and (sum<100) then write('Произведение этих чисел равно ',a*b) else write('Разность этих чисел равна ',a-b); 
End;
End.  

vladmor: А если числа трехзначные, но отрицательные?
vladmor: Программа не поддерживает трехзначные отрицательные
Аноним: Вроде поддерживает
vladmor: Введите -999 и -888 и получите разность, а должно быть произведение
vladmor: Так как сумма цифр = 51 и число явно двузначное
Аноним: После строчки readln Надо вставить две строчки a:=abs(a); b:=abs(b) И в остальных местах убрать abs
Ответ дал: vladmor
0
var
  x,x1,x2,s: integer;
begin
  write('Введите x1:');readln(x1);
  write('Введите x2:');readln(x2);
  //ищем сумму цифр этих чисел
  x:=x1 div 100; s:=s+x;
  x:=x2 div 100; s:=s+x;
  x:=x1 div 10 mod 10; s:=s+x;
  x:=x2 div 10 mod 10; s:=s+x;
  x:=x1 mod 10; s:=s+x;
  x:=x2 mod 10; s:=s+x;
  s:=abs(s);
  //Теперь в s сумма цифр введенных x1 и x2
  writeln('Сумма цифр ',x1,' и ', x2,' = ',s);
  if (s>9) and (s<100) then writeln('Произведение чисел =',x1*x2)
    else writeln('Разность чисел = ',x1-x2);
end.

Тест №1

Введите x1:-999
Введите x2:-888
Сумма цифр -999 и -888 = 51
Произведение чисел =887112

Тест №2
Введите x1:111
Введите x2:222
Сумма цифр 111 и 222 = 9
Разность чисел = -111



vladmor: А если числа трехзначные, но отрицательные?
Вас заинтересует