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

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

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

 
 Ответить  Открыть новую тему 
> Программа с циклом, помогите доделать
Lakibooy
сообщение 6.06.2007 18:33
Сообщение #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 - 6.06.2007 18:47
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 6.06.2007 18:48
Сообщение #2


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

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

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


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


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


Новичок
*

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

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


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

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

я еще не считал не знаю как?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 6.06.2007 18:55
Сообщение #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 - 6.06.2007 18:57


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


Новичок
*

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

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


спасибо в который раз уже выручаешь!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 6.06.2007 19:05
Сообщение #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 
 К началу страницы 
+ Ответить 
Lakibooy
сообщение 6.06.2007 19:07
Сообщение #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 
 К началу страницы 
+ Ответить 
compiler
сообщение 6.06.2007 19:12
Сообщение #8


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

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

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


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

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

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


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


Новичок
*

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

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



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

подожду может кто напишет!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 6.06.2007 19:38
Сообщение #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 
 К началу страницы 
+ Ответить 
compiler
сообщение 6.06.2007 19:48
Сообщение #11


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

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

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


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

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lakibooy
сообщение 6.06.2007 19:52
Сообщение #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 
 К началу страницы 
+ Ответить 
compiler
сообщение 6.06.2007 19:58
Сообщение #13


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

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

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


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


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

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

 

- Текстовая версия 17.07.2025 21:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"