IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Программа с циклом, помогите доделать
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Аскер

Репутация: -  0  +


Здравствуйте
помогите с задачкой

Надо ввести число от 100 до 10100,если число вводится и не попадает в этот интервал,то запрос повторяется до тех пор ,пока не дойдет до правильного.Если число введено правильно,то выдать сумму его цифр.

тоесть если я ввожу 678 то мне нужно получить сумму цифр пример 6+7+8=21
как мне это сделать?
Подскажите пожалуста.

Добавлено через 12 мин.
вот код который я написал
но не знаю правельно ли!
uses crt;
Var x,s:integer;
begin
Clrscr;
writeln('Введите число');
readln(x);
repeat writeln('Введите число');
readln(x); until (x<100) and (x>10100);

writeln('сумма,s);
readln;
end.


Сообщение отредактировано: Lakibooy -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


а где ты считаешь сумму?


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Аскер

Репутация: -  0  +


Цитата(compiler @ 6.06.2007 19:48) *

а где ты считаешь сумму?

я еще не считал не знаю как?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


вобщем держи
type i=integer;
var n:i;

function ReadN:i;
var a:i;
begin
repeat
write('-->');
readln(a);
until ( (a>100) and (a<10100) );
ReadN:=a;
end;

function SumNem(const n:integer):i;
var a:i;
begin
a:=n;
SumNem:=0;
while a<>0 do begin
SumNem:= SumNem+ (a mod 10);
a:=a div 10;
end;
end;

begin
n:=ReadN;
WriteLn ( SumNem(n) );
readln;
read;
end.
очистку экрана только добавь(если хочеш)...

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Аскер

Репутация: -  0  +


спасибо в который раз уже выручаешь!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Lakibooy @ 6.06.2007 19:01) *
спасибо в который раз уже выручаешь!!!
та незачто 10.gif
я вот тебе процедурку не много переписал 1.gif теперь она пищит smile.gif
function ReadN:i;
var a:i;
begin
write('-->');
readln(a);
while ( (a<100) or (a>10100) ) do begin
Clrscr; //добавь библиатеку!!!
write('-->', #7);
readln(a);
end;
ReadN:=a;
end;


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Аскер

Репутация: -  0  +


Цитата(compiler @ 6.06.2007 19:55) *

вобщем держи
type i=integer;
var n:i;

function ReadN:i;
var a:i;
begin
repeat
write('-->');
readln(a);
until ( (a>100) and (a<10100) );
ReadN:=a;
end;

function SumNem(const n:integer):i;
var a:i;
begin
a:=n;
SumNem:=0;
while a<>0 do begin
SumNem:= SumNem+ (a mod 10); //перед+ пишет что не хватает ( не знаешь почему?
a:=a div 10;
end;
end;

begin
n:=ReadN;
WriteLn ( SumNem(n) );
readln;
read;
end.
очистку экрана только добавь(если хочеш)...

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


>перед+ пишет что не хватает ( не знаешь почему?
чего не хватает ?процитируй что имено віводится...

Добавлено через 3 мин.
а все я понял это же TP... прошу прощения... сейчас перепишу...

Добавлено через 3 мин.
не перепишу, уже всё забыл... можеш пока ввести отдельную переменную и подождать пока кто нибудь напишет...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Аскер

Репутация: -  0  +



Добавлено через 3 мин.
не перепишу, уже всё забыл... можеш пока ввести отдельную переменную и подождать пока кто нибудь напишет...
[/quote]

подожду может кто напишет!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(compiler @ 6.06.2007 20:12) *

>перед+ пишет что не хватает ( не знаешь почему?

Напиши лучше так:
function sumNem (n:integer):integer;
begin
if n=0 then sumNem:=0
else
Sumnem:=(n mod 10)+sumnem (n div 10);
end;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Malice @ 6.06.2007 19:38) *
Напиши лучше так:
но так мы лишились замечательного const ... smile.gif . В принципе это не безопасно yes2.gif , когда функция будет менять глобальную переменную, можна здорово погареть (я так както час потратил выясняя странное поведения своей переменой, думал баг lol.gif )
хотя конечно для данной задачи можно и так...

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской
Реальное имя: Аскер

Репутация: -  0  +


Огромное СПАСИБО ВСЕМ кто помог все работает!!!!
вот код программы может кому пригодиться!
uses crt;
type i=integer;
var n:i;

function ReadN:i;
var a:i;
begin
write('-->');
readln(a);
while ( (a<100) or (a>10100) ) do begin
Clrscr;
write('-->', #7);
readln(a);
end;
ReadN:=a;
end;


function sumNem (n:integer):integer;
begin
if n=0 then sumNem:=0
else
Sumnem:=(n mod 10)+sumnem (n div 10);
end;


begin
n:=ReadN;
WriteLn ( SumNem(n) );
readln;
read;
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


примечание
ReadN можна и ИМХО, лучше реализовать через процедуру с out...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 1.12.2020 19:50
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name