Написать в программе Паскаль программу: Вывести сначала положительные числа из отрезка [a;b], а потом отрицательные числа из отрезка [a;b] и количество положительных и отрицательных чисел из отрезка [a;b]
Answers & Comments
Veter0k
Var a,b,c,k:integer; begin read(a,b); if (a<0) and (b>0) then begin for k:=1 to b do write (k,' '); for k:=1 to a do write (-k, ' '); write(-a,' ',b); end else if (a>0) and (b>0) then begin for k:= a to b do write (k,' '); write (b-a); end else b:=-1*b; a:=-1*a; for k:= b to a do write (k,' '); write (b-a); end.
Adequate
Проверяю. Во первых в условии ЕСЛИ do не ставиться, во-вторых почему переменная заканчивается "k;" ?! и end - else - if не могут быть в одном порядке
Котик14
у меня те же вопросы, как и у BloodyDevil, основу я знаю, а вот For, While или Repeat, я немного не понимаю
Veter0k
Блуд, ты на правильность проверь, я без проги пишу
Котик14
Veter0k, я заметила, что вы исправили программу, теперь всё работает, спасибо
Sky09
Твоя программа работает неверно, т.к., во-первых, она не выводит все отрицательные числа, а только начало отрезка и то, если он отрицательный, то вывод такого же по модулю. Во-вторых, вывод в одной строке, что для восприятия не удобно. В-третьих, количество отрицательных чисел считается неверно. В-четвертых, твоя программа полностью валит элементарный тест с вводом отрезка от отрицательного до отрицательного, допустим [-4;-1]. Стоит еще подумать над решением.
Sky09
И дело даже не в том, есть тебе на чем проверять или нет. Суть твоего кода в целом неверный. Даже подсказка была в комментарии: массив.
Sky09
Uses crt; const Q=10000; var a:array [1..Q] of integer; x,k,p,m,n,o:integer; begin write('a='); readln(m); write('b='); readln(n); a[1]:=m; for x:=2 to (n-m+1) do a[x]:=a[x-1]+1; write('Положительные: '); for x:=1 to (n-m+1) do if a[x]>0 then begin inc(p); write(a[x],' '); end; writeln; write('Отрицательные: '); for x:=1 to (n-m+1) do if a[x]<0 then begin inc(o); write(a[x],' '); end; writeln; writeln('Положительных чисел:', p); writeln('Отрицательных чисел:',o); end.
Answers & Comments
begin
read(a,b);
if (a<0) and (b>0) then begin
for k:=1 to b do write (k,' '); for k:=1 to a do write (-k, ' '); write(-a,' ',b);
end
else if (a>0) and (b>0) then begin
for k:= a to b do write (k,' '); write (b-a);
end
else b:=-1*b; a:=-1*a; for k:= b to a do write (k,' '); write (b-a);
end.
const Q=10000;
var a:array [1..Q] of integer;
x,k,p,m,n,o:integer;
begin
write('a='); readln(m);
write('b='); readln(n);
a[1]:=m;
for x:=2 to (n-m+1) do
a[x]:=a[x-1]+1;
write('Положительные: ');
for x:=1 to (n-m+1) do
if a[x]>0 then begin inc(p); write(a[x],' '); end;
writeln;
write('Отрицательные: ');
for x:=1 to (n-m+1) do
if a[x]<0 then begin inc(o); write(a[x],' '); end;
writeln;
writeln('Положительных чисел:', p);
writeln('Отрицательных чисел:',o);
end.