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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2008, 00:33   #11
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

Код:
var i,n,sum:integer;   
begin   
writeln('Vvedite chislo');   
readln(n); {Вводим число}   
sum:=0; {Обнуляем значение переменной, так как начальная сумма равна 0}   
for i:=1 to 1 do 
 begin   
 sum:=sum+(n mod 10); {Здесь считаем сумму цифр} 
 n:=n div 10; {Здесь записсиваем, целую часть числа от деления на 10}  
 if(n=0) then break; {Здесь проверяем если n равно 0, выходим с цикла}  
 i:=i-1; {здесь уменьшаем значение переменной i на 1, тем самым делая цикл бесконечним}   
 end;   
 writeln(sum); {Выводим результат}   
 readln;   
end.
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Старый 22.03.2008, 06:42   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Stepler, во-первых, я лично согласен со [Smarik] - изменять счётчик цикла внутри цикла - дурной тон!
Попробуйте откомпилировать Ваш код в Дельфи - там такой трюк
по умолчанию не пройдёт.
Да и не нужен там цикл FOR!! (напоминаю, что это цикл, когда
известно число повторений!
Вам оно известно? нет?! так и используйте, while True do , например.)
Если уже и делать универсальную программу для числа с любой
разрядностью - то смотрите код от Шамана в посте #6.
И последнее -
Цитата:
А затем что количество цыфр числа наперед неизвестно, и без цикла там не обойтись!
ну как же неизвестно?!
Вы условие внимательно прочитали?
Цитата:
Сумму цифр введенного ТРЕХЗНАЧНОГО числа
Код:
var
  n,a,b,c,sum:integer; {описание переменных - все целого типа. 
N - вводимое число. 
A, B, C - вспомогательные переменные - в каждую из них 
помещается одна цифра введённого трёхзначного числа
SUM - для суммы}
begin
  write('Vvedite chislo '); readln(n); {выдать текст запроса на экран 
     и ввести число в переменную N}
a:=n div 100; {получить в переменную A целую часть  
  от деления числа на 100 (подсказка - это будет первая цифра числа)}
b:=n div 10 mod 10; {разделить число на 10, потом от полученного
 частного взять остаток от деления на 10
 так в И получим вторую цифру числа}
c:=n mod 10; {остаток от деления введённого числа на 10 - в переменной С третья цифра числа}
sum:=a+b+c; {просуммировали три цифры}
writeln('summa chisel: ',sum); {вывели результат}
readln; {остановились, ждём нажатия клавиши ENTER (она же ВВОД),
чтобы можно было прочитать результат с консоли}
end. {конец фильма}

Последний раз редактировалось Serge_Bliznykov; 22.03.2008 в 06:45.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2008, 21:17   #13
by -ORTODOX-
Пользователь
 
Регистрация: 07.03.2008
Сообщений: 12
По умолчанию

Спасибо всем! Буду разбираться! :beer:
by -ORTODOX- вне форума Ответить с цитированием
Старый 22.03.2008, 22:36   #14
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

to Serge_Bliznykov
Цитата:
Stepler, во-первых, я лично согласен со [Smarik] - изменять счётчик цикла внутри цикла - дурной тон!
Это ваше мнение, спорить я с вами не буду! Я привел пример как можно сделать задание с использованием цикла for!

Цитата:
Попробуйте откомпилировать Ваш код в Дельфи - там такой трюк
по умолчанию не пройдёт.
Да действительно компилятор Дельфи видает ошибку если питаемся изменить значение счетчика! (Код писал на паскале, не думал что будет такой косяк если запустить на Дельфи, чесно говоря даже не знал что компялятор дельфи не дает изменять значение счетчика в цикле, на Дельфи пишу очень редко почти все на СИ пишу, там такой проблеми нету с изменением стетчика, да и впрочем на паскале тоже)

Цитата:
Да и не нужен там цикл FOR!!
Можно было и два других цикла использовать, или организировать цикл с помощью if(...) goto label, или накрайняк рекурсию использовать, но результат это би неизменило. Это дело вкуса, я пошел нестандартним путем, и ничего противопоказаного здесь нет.

Цитата:
Да и не нужен там цикл FOR!! (напоминаю, что это цикл, когда
известно число повторений!
Вам оно известно? нет?! так и используйте, while True do , например.)
Не нужно мне напоминать я прекрасно знаю работу циклов, а то что вы говорити <когда известно число повторений!> это всего лиш рекомендации, так как цикл for наиболее удобно применять когда наперед известно количество повторений, но это не означает что его не можно применять в тех ситуация когда неизвестно количество повторений!

Цитата:
Если уже и делать универсальную программу для числа с любой
разрядностью - то смотрите код от Шамана в посте #6.
Разница только в циклах, но результат выходит тотже, разници большой нет!
Цитата:
ну как же неизвестно?!
Вы условие внимательно прочитали?
Я имел ввиду конкретно свой код, товарищу Smarikу было непонятно зачем там использовать цикл!
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Старый 22.03.2008, 23:34   #15
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

А если так :

var num,summaCifr,i: Integer;
stroka:string;
begin
stroka:=IntToStr(num);
summaCifr:=0;
for i:=1 to Length(stroka) do
summaCifr:=SummaCifr+StrToInt(Strok a[i]);
end;
type_Oleg на форуме Ответить с цитированием
Старый 14.11.2010, 17:47   #16
perjik
Новичок
Джуниор
 
Регистрация: 14.11.2010
Сообщений: 1
Злость operatorr whileeeeeeeeeee

задача выделить третью цифру с конца в введеннном числе ю расскажите как там в этом while знать где какая цифра? заранее спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!
perjik вне форума Ответить с цитированием
Старый 14.11.2010, 17:54   #17
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

а чем плох такой вариант:
Код:
str:= inttostr(125);
a:= strtoint(str[1]) + strtoint(str[2]) + strtoint(str[3]);
мда... меня опередили =)

"задача выделить третью цифру"
str:=inttostr(125);
a:=str[3]; // a='5'
b:=strtoint(a); // b=5

Последний раз редактировалось xrob; 14.11.2010 в 17:57.
xrob вне форума Ответить с цитированием
Старый 01.02.2011, 14:40   #18
ToMpLiEr
Новичок
Джуниор
 
Регистрация: 01.02.2011
Сообщений: 2
По умолчанию

А как сюда добавить процедуру проверки на то что введённое число действительно 3х значное.
ToMpLiEr вне форума Ответить с цитированием
Старый 01.02.2011, 14:51   #19
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

да элементарно же
Код:
if (n>=100) and (n<=999) 
  then //yes
  else //no
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 01.02.2011 в 14:54.
Grag вне форума Ответить с цитированием
Старый 02.02.2011, 12:10   #20
ToMpLiEr
Новичок
Джуниор
 
Регистрация: 01.02.2011
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Grag Посмотреть сообщение
да элементарно же
Код:
if (n>=100) and (n<=999) 
  then //yes
  else //no
Спасибо, но препод требует чего-то размером в строк 10-15
ToMpLiEr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разложение введенного слова в виде дерева на дельфи Gauss Общие вопросы Delphi 7 23.03.2008 21:57
for SAS888 please help! макрос выделения цифр жирным шрифтом прописывает числа без нулей после запятой Dorvir Microsoft Office Excel 1 03.03.2008 22:39
#Delphi задача на сумму цифр числа forumu Помощь студентам 11 12.01.2008 19:02
Подсчитать сумму цифр числа введеного с клавиатуры. Prolog Дурин Помощь студентам 3 10.01.2008 16:29
Найти количество различных цифр данного натурального числа. stalker Паскаль, Turbo Pascal, PascalABC.NET 10 22.05.2007 17:45