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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2011, 21:44   #1
KatruKot
Пользователь
 
Регистрация: 19.05.2010
Сообщений: 31
По умолчанию Целочисленная арифметика

Дано натуральное число N. Определить количество цифр в цифровой записи данного числа, которые имеют наибольшее значение. Поскажите пожалуйста как исправить код.

Код:
var
n,k,min:integer;
begin
cls;
min:=9;
k:=0;
write('Введите число ');
readln(n);
while n<>0 do begin
if n mod 10 >= min then inc(k) else
if n mod 10 < min then
begin
min:=n mod 10;
end;
n:= n div 10;
end;
writeln('Количество наибольших элементов ',k);
end.
KatruKot вне форума Ответить с цитированием
Старый 02.03.2011, 21:48   #2
KatruKot
Пользователь
 
Регистрация: 19.05.2010
Сообщений: 31
По умолчанию

Когда преподавателю показал, задал мне число 23453, вот тут у меня и возникла ошибка... а вот например число 1808 считает спокойно выдаёт 2.
KatruKot вне форума Ответить с цитированием
Старый 03.03.2011, 06:40   #3
JinglsOrg
Пользователь
 
Аватар для JinglsOrg
 
Регистрация: 27.01.2011
Сообщений: 48
По умолчанию

у вас лишняя строчка: "if n mod 10 < min then", т.к. если n mod 10 не больше и не равен min'у (о чём сообщает строчка выше), то уже очевидно что он меньше. Но она у вас не лишняя т.к. строчна над ней не правильна..
Если я правильно понял то нужно подсчитать кол-во самых больших цифр в числе?
В таком случае вам нуден не min, а max.
Замените знак "больше или равно" на равно, ведьь вам нужно подсчитать только одинаковые числа.
Замените знак меньше на больше в строке "if n mod 10 < min then" т.к. вам нужны самые большие числа.
Если программа нашла цифру больше, то нужно сбить счётчик "k", т.к. вам нужны только кол-во одной цифры, а не всех чисел которые больше всех чисел стоящих справа от них.

Ваша же программа находит кол-во чисел слева от наименьшего числа находящегося как можно правей. Т.е. т.к. у вас 0 - наименьшее число, программа считает кол-во цифр слева от него. Ну и ещё т.к. счётчик не сбивается она прибавляет результаты предыдущих вычислений.
Например: 999069 она тоже "как бы" правильно подсчитает.
Всё написанное мной является лично моим мнением за исключением когда указан источник данных.

Последний раз редактировалось JinglsOrg; 03.03.2011 в 06:47.
JinglsOrg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Целочисленная арифметика Lebron129 Паскаль, Turbo Pascal, PascalABC.NET 1 20.05.2010 19:27
Целочисленная арифметика Neyrone Помощь студентам 4 11.03.2010 09:53
(Делфи) Целочисленная арифметика Doublefaced Помощь студентам 3 18.06.2009 21:31
Целочисленная арифметика Doublefaced Помощь студентам 11 22.03.2009 19:33