Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2016, 22:28   #1
pirat2k
Пользователь
 
Регистрация: 28.11.2012
Сообщений: 34
По умолчанию Перевод с паскаля на c# и поиск ошибки

перевел этот код
Код:
uses crt;
function sum(n:integer):integer;
var s:integer;
begin
s:=0;
while n>0 do
 begin
  s:=s+n mod 10;
  n:=n div 10
 end;
sum:=s
end;
var n,k:integer;
begin
write('n=');
read(n);
k:=0;
while n>0 do
 begin
  n:=n-sum(n);
  k:=k+1
 end;
write('k=',k);
end.
на с#

Код:
class Program
    {
       static int zero(int otv)
        {

            int s = 0;
            int n=0;
            while (n > 0)
            {
                s = s + n % 10;
                n=n/10;
            }
            otv = s;
            
            return otv;
        }
        static void Main(string[] args)
        {
           
            int n, k;
            k = 0;
            Console.WriteLine("Введите число");
            
            n= Convert.ToInt32(Console.ReadLine());
            
            zero(n);
            while (n > 0)
            {
                n = n - zero(n);
                k = k + 1;
            }
            Console.WriteLine("Через {0} операции будет 0",zero(k));
            Console.ReadLine();
        }
    }
}
Но при выполнении программа зацикливается. Какую ошибку я допустил при переводе кода?
pirat2k вне форума Ответить с цитированием
Старый 14.06.2016, 23:49   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

для начала -
Код:
      static int  sum(int n)
        {
            int s = 0;
            while (n > 0)
            {
                s += n % 10;
                n /=10;
            }
            return s;
        }
ну и основной цикл тоже не совсем корректен.
вот это (выделено красным):
Цитата:
Код:
n= Convert.ToInt32(Console.ReadLine());
            
            zero(n);
            while (n > 0)
для чего бессмысленный "пустой" вызов функции?

и ещё раз, вместо того, чтобы просто вывести k, ещё один бессмысленный вызов функции
Цитата:
Код:
Console.WriteLine("Через {0} операции будет 0",zero(k));
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.06.2016, 11:34   #3
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию

Честно сказать, я не совсем улавливаю суть задания...
И что должен выполнять метод sum()?
Не знаю, в курсе вы или нет, но он всегда будет возвращать 0. При любых входных параметрах. Зачем тогда такой метод?
Соответственно цикл
Код:
while (n > 0)
            {
                n = n - zero(n);
                k = k + 1;
            }
у вас зацикливается, т.к. n=n-0 - всегда будет больше 0 (если конечно вы ввели n как положительное).

Вы лучше напишите, что данная функция должна делать, может чем и поможем.

P.S. Хотя чего я распинаюсь, уже все сказано.

Последний раз редактировалось max_prorok; 15.06.2016 в 11:37. Причина: Не доглядел. Сверху все написали уже.
max_prorok вне форума Ответить с цитированием
Старый 15.06.2016, 12:07   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Честно сказать, я не совсем улавливаю суть задания...
дано число, найти, за сколько итераций число превратиться в ноль, если на каждой итерации вычитать из числа сумму его цифр.

Цитата:
что должен выполнять метод sum()?
найти сумму цифр числа
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод с Паскаля на Си Calumbuber Помощь студентам 3 18.04.2016 11:59
Перевод с паскаля на си++ dolphin-cv Помощь студентам 1 06.01.2016 15:12
Перевод с Паскаля на C# Camelot_2012 C# (си шарп) 1 10.11.2015 17:23
Перевод с паскаля на С++ trum Помощь студентам 0 01.11.2013 19:23