Если число заканчивается ** 2 или 3, то исходное число умножить ** число десятков в нем,...

0 голосов

Если число заканчивается на 2 или 3, то исходное число умножить на число десятков в нем, если число единиц от 7 до 9, то из числа вычесть сумму цифр
числа, в противном случае отбросить последнюю цифру.Я в 8 классе помогите решить похоже , что это я решал )


спросил от (20 баллов) в категории Информатика
2 Ответы
0 голосов
ответил от Одаренный (2.6k баллов)
 
Лучший ответ

Var 
i, n, a, b,n1: integer;
begin 
write('Введите число '); 
Readln(n); 
n1 := n; 
a := n mod 10; 
case a of   
2, 3: n := n * ((n div 10) mod 10);   
7, 8, 9:      begin        for i := 1 to length(inttostr(n)) do         begin          b := b + (n mod 10);n := n div 10; end;n := n1 - b; end;   
1, 4, 5, 6, 0: n := n div 10; 
End; 
Write(n);
end.

0 голосов
ответил от Отличник (5.1k баллов)

Примерно так, надеюсь не ошибся:
Function SumCifr(N : Integer) : Byte;
Begin
  If N>0 then SumCifr:=N mod 10+SumCifr(N div 10) else SumCifr:=0;
end;

Var A : Integer;
Begin
  Readln(a);
  Case a mod 10 of
    2,3  : a:=a*(a div 10 mod 10);
    7..9 : a:=a-SumCifr(a);
    else a:=a div 10;
  end;
  Writeln(a);
end.

оставил комментарий от Одаренный (2.6k баллов)

Функции я думая они ещё не проходили (в принципе как и case)

оставил комментарий от Отличник (5.1k баллов)

все возможно, но писать совсем элементарщину, которую можно заменить короткой рекурсией у меня рука не поднялась... так что твой вариант в данном случае считаю лучшим

оставил комментарий от Отличник (5.1k баллов)

хотя я его не проверял, но надеюсь все верно

оставил комментарий от Одаренный (2.6k баллов)

Я проверил (всё работает)

...