Turbo Pascal

Пух

كنت بلهاء
Модератор
Ответ: Turbo Pascal

З.ы. Я на звание великого программиста не претендую, поэтому когда пишу проги на первом месте для меня – правильный ответ, а не здравый смысл кода…
гы, то для тебя на первом месте правильный ответ, а для Рождественского О.Н. (это его задача) на первом месте правильный код+правильный ответ и никак иначе... Если была брешена задача без mod, он просто сказал бы что ты не умеешь читать и задачу не защитал...
з.ы. жаль поздно увидел задачу
з.ы.ы. келбас поменял задачки, у меня такой небыло :)
 

Cris

Member
Ответ: Turbo Pascal

Дано натуральное число которое меньше 1000. Используя операции div и mod, определить, сколько цифр в этом числе ???

Слово в слово.
та шо ві там пугру гоните єто все делается в 5 строчек(он строки и ціклі неучил)(єтот алгоритм давно известній и работает для любого почти числа):
Код:
program g;
var n,s:longint;
begin
read(n);
s:=0;
while n<>0 do
begin
s:=s+1;
n:=n div 10;
end;
writeln(s);
end.
 

[Spider]

New Member
Ответ: Turbo Pascal

Итак, продолжим анализ твоего, nilayn, кода :)
После запроса ввода числа ты проверяешь, выполняется ли условие задачи, по которому число не должно превышать 1000, и если это условие не выполняется (x>=1000), то выводишь предупреждающее сообщение и запрашиваешь ввод нового числа. Однако, даже если пользователь и введёт неправильное число (ну, есть такие пользователи, которые не умеют читать :)), то работа программы не завершиться, и у числа будет подсчитано количество цифр, что, согласись, неправильно.
В результате, на экране можно получить такое:
Код:
Vvedite naturalnoe chislo <1000. X=1234
Vvedennoe vami chislo ne sootvetstvuet usloviu zadachi. Perezapustite prilozhenie i povtorite popitku..
Otvet: 3
Короче говоря, даже после ввода неправильно числа, будет выведен ответ, причём неправильный (потому что во введенном числе 1234 4 цифры, а не 3).
nilayn а зачем ты используешь во втором условии mod?
Действительно. Тем более что условие x mod 100>=1 после выполнения первого условия всегда будет истинно (поскольку x<100 и, значит, x mod 100=x, который по условию задачи является числом натуральным, а значит не может быть меньше 1), а True and Cond=Cond. То есть, если там убрать условие с mod, то ничего не изменится.
 

[Spider]

New Member
Ответ: Turbo Pascal

Второй код [Spider] оптимальный при данном условии задачи.
Неа, самый классный код у GH0ST --- самое простое, оригинальное и изящное решение поставленной задачи. Вот только, GH0ST, а зачем там строчка z:=i[0] div 1? "Шоб було"? "Шоб использовать div"?
И вообще, по нормальному используя див задачу без цикла не решить.
Не решить, если число произвольное, а если заданы ограничения на него, то вполне можно.
та шо ві там пугру гоните єто все делается в 5 строчек(он строки и ціклі неучил)(єтот алгоритм давно известній и работает для любого почти числа):
Код:
program g;
var n,s:longint;
begin
read(n);
s:=0;
while n<>0 do
begin
s:=s+1;
n:=n div 10;
end;
writeln(s);
end.
Ну, во-первых, а разве ты не цикл используешь? А, во-вторых, разве не такой же код я писал? Читай внимательно все предшествующие посты
 

WerSus64

New Member
Cris любую задачу можна решить любими методами и есть, почти всегда, оптимальное и простое решение. НО это в том случаи если нет дополнительных условий к методам решения. В нашем случаи эт mod и div и мы просто пытаемся найти оптимальное решение для данной условия

Я думаю что вариантов решения уже показано немало. И пусть тот кто запросил их выбирает тот, который поможет ему сдать эту задачу и получить положительную оценку.

Думаю надо прекращать поиск решения данной задачи и переходить к новой, или пока ее нету будем мучать эту ?????
 
Ответ: Turbo Pascal

Итак, продолжим анализ твоего, nilayn, кода :)
После запроса ввода числа ты проверяешь, выполняется ли условие задачи, по которому число не должно превышать 1000, и если это условие не выполняется (x>=1000), то выводишь предупреждающее сообщение и запрашиваешь ввод нового числа. Однако, даже если пользователь и введёт неправильное число (ну, есть такие пользователи, которые не умеют читать :)), то работа программы не завершиться, и у числа будет подсчитано количество цифр, что, согласись, неправильно.
В результате, на экране можно получить такое:
Код:
Vvedite naturalnoe chislo <1000. X=1234
Vvedennoe vami chislo ne sootvetstvuet usloviu zadachi. Perezapustite prilozhenie i povtorite popitku..
Otvet: 3
Короче говоря, даже после ввода неправильно числа, будет выведен ответ, причём неправильный (потому что во введенном числе 1234 4 цифры, а не 3).
Ты так в этом уверен??? Раз ты решил протестить мой код, так хоть бы не приписывал мне не существующих ошибок…

if x>=1000 then //проверка условия задачи
writeln ('Vvedennoe vami chislo ne sootvetstvuet usloviu zadachi. Perezapustite prilozhenie i povtorite popitku..')
else
….
Прокомментирую… подсчет разрядности будит производиться, только в том случае, если условие Х больше 1000 не будит выполнятся, следовательно никакой ответ на экран не будит выведен…
 

Вкладення

[Spider]

New Member
Ответ: Turbo Pascal

Да, извини, ты права, даже не знаю как я упустил из виду... Просто наверное сработал стереотип, я бы это программировал немного не так.
Так что извини если обидел. В дальнейшем буду более внимательным
 

critick

Философ
Ответ: Turbo Pascal

Дано натуральное число которое меньше 1000. Используя операции div и mod, определить, сколько цифр в этом числе ???

Слово в слово.
А вот мой вариант программы,который работает для любых чисел

Код:
var i,j,c:integer;

procedure kolcifr(n:integer);
begin
 
 if( (n div 10)>0) then kolcifr(n div 10);
 i:=i+1;
end;
	

begin
	i:=0;
	writeln('Введите число');readln(c);
        kolcifr(c);
	writeln('Количество цифр в числе ',c,' равняется ',i);
end.
ЗЫ.Только вот не пойму,каким боком можно использовать mod для определния количества цифр,разве что для какого то извращенного варианта :)
 

KoLoB

KoLoB.cz
Ответ: Turbo Pascal

ЗЫ.Только вот не пойму,каким боком можно использовать mod для определния количества цифр,разве что для какого то извращенного варианта :)
Гланды тоже можно через жопу вырывать.

З.Ы. Когда то решали такую задачу, но лень вспоминать, а конспект посеял :(
 

[Spider]

New Member
Ответ: Turbo Pascal

А вот мой вариант программы,который работает для любых чисел
Ты бы не мог скомпилировать этот код и приложить скриншоты работающей программы? :) Только, раз уж твоя программа работает для любых чисел, то ты возьми числа побольше :)
 
Зверху