Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос по Pascal. помогите правильно написать цикл

Maxim Ученик (87), закрыт 6 лет назад
Вот есть цикл while. Он мне выводит все числа, допустим от 1 до 3. Как мне сделать, чтобы выводилось не "1 2 3", а их сумма (так сказать кол-во чисел). Например: 1 2 3 - (3); 2 3 4 - (3).
Лучший ответ
Вадим Сухотин Мудрец (14275) 6 лет назад
Прочитал комментарий выше. Всё ясно. Вот ваш текст:
var
n,r: integer;

begin
r:=0;

readln(n,r);
while r <= n do
begin

r:=r+1;
write(r, ' ');

end;
end.

Если цикл завершился, значит, перестало выполняться условие цикла, и в этом месте r=n+1. А вывести надо было число (n-r+1), которое и представляет собой количество чисел от r до n.

Иными словами, это количество считается не в цикле, а до него:
var
n,r,count: integer;

begin

readln(n,r);
count:=n-r+1;
while r <= n do
begin

r:=r+1;
write(r, ' ');

end;
write(" - (",count,")");
end.

Но если уж приспичило это количество именно посчитать в цикле, то так:
var
n,r,count: integer;

begin

readln(n,r);
count:=0;
while r <= n do
begin

r:=r+1;
write(r, ' ');
count:=count+1;

end;
write(" - (",count,")");
end.
==========
Только сейчас заметил, что у вас в начале идёт присваивание r:=0, А потом переменная r читается с консоли вместе с n. То есть она одновременно должна выполнять и роль счётчика чисел, и роль очередного числа? Так не бывает. Я разнёс эти функции по разным переменным: r и count.
Остальные ответы
Sergey V. Voronin Искусственный Интеллект (267797) 6 лет назад
сделать две п еременнные: счетчик и сумму. Вот к исходно нулевой сумме счетчик и прибавлять каждый раз.
MaximУченик (87) 6 лет назад
Хм... Чего не хватает? var
n,r: integer;

begin
r:=0;

readln(n,r);
while r <= n do
begin

r:=r+1;
write(r, ' ');

end;
end.
Natan Профи (787) 6 лет назад
Используйте lв массиве while: length, она подсчитает количество строк
Похожие вопросы