profile
Опубликовано 5 лет назад по предмету Информатика от Аккаунт удален

Требовалось написать программу, которая получает на входе натуральное число n и выводит число, которое получается из n после удаления всех пятерок, порядок остальных цифр при этом не меняется. Программист торопился и написал программу неверно, найдите неверную строку и исправьте ее.
var n, r, t:longint; 
d:integer;
begin 
readln (n); 
 r:=0;  t:=1; 
while n>0 do begin 
d:=n mod 10;  if d=5 then begin 
 r:=r+d*t; 
t:=t+1 
end; 
n:=n div 10;
 end;
writeln (t);
end.

  1. Ответ
    Ответ дан Аккаунт удален
    var n, r, t:longint; 
    d:integer;
    begin  
    readln (n); 
     r:=0;  t:=1;  
    while n>0 do begin  
    d:=n mod 10;  if d=5 then begin    1 ошибка: надо вместо d=5 написать d<>5
     r:=r+d*t;  
    t:=t+1                                         2 ошибка: надо вместо t+1 написать t*10
    end; 
    n:=n div 10;
     end;
    writeln (t);                                   3 ошибка: надо вместо t написать r
    end.
    1. Ответ
      Ответ дан Аккаунт удален
      Такой вопрос: почему t*10?
    2. Ответ
      Ответ дан Аккаунт удален
      В этой переменной хранится как бы разряд цифры. Например, 253. 5 выкидываем, а двойка теперь обозначать будет не число сотен, а число десятков. Не знаю, как это грамотно по-научному объяснить, ну вот так как-то. Понятно так?
    3. Ответ
      Ответ дан Аккаунт удален
      Когда слева направо по числу идем в t заносим сначала 1, потом 10, потом 100, ... Т.е. запоминаем, что работаем с единицами, десятками, сотнями.
    4. Ответ
      Ответ дан Аккаунт удален
      Блин((( идем справа налево!!!
Самые новые вопросы