Консультация № 144343
18.09.2008, 21:36
0.00 руб.
0 4 1
Помогите пожайлуста это легкая программа но я непонимаю её суть.
Дана последовательность целых чисел а1...а10. Выяснить какое число встречается раньше - положительное или отрицательное

Обсуждение

Неизвестный
18.09.2008, 21:37
общий
Помогите пожайлуста это легкая программа но я непонимаю её суть.
Дана последовательность целых чисел а1...а10. Выяснить какое число встречается раньше - положительное или отрицательное
давно
Старший Модератор
31795
6196
18.09.2008, 21:53
общий
если А1 не 0, то нужно только проверить знак числа это будет результатом
если А1 = 0, то проверяем А2
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
18.09.2008, 22:42
общий
Подходит?
Код:
program e1;
uses crt; {Без этого не работает функция ClrScr - функция для очистки экрана. Не нужно}
const n=10; {Количество элементов}
var a: array [1..n] of integer; {A1, A2 и т.д. задаю как массив}
var i: integer; {Счетчик}
var b: integer;
begin
b:=0; {Указываем, что b=0}
ClrScr; {Очищаем экран}
randomize; {Я используют random для генерации чисел}
for i:=1 to n do
begin
a[i]:=random(100); {Задаем число}
if random(3)=0 then a[i]:=a[i]*(-1); {Задаем знак числа}
end;
i:=0; {Обнуляем счетчик}
while (b=0) and (i<=10) do {Пока b=0 и i<=10, то ...}
begin
i:=i+1; {Увеличиваем счетчик. Можно писать: inc(i)}
if a[i]>0 then b:=1; {Если число положительное, то b=1}
if a[i]<0 then b:=2; {Если число отрицательное, то b=2}
end;
if b=1 then writeln('Встретилось раньше положительное число, число - ', a[i]);
if b=2 then writeln('Встретилось раньше отрицательное число, число - ', a[i]);
readln; {Ожидаем нажатия кнопки Enter}
end.
Неизвестный
19.09.2008, 08:19
общий
это ответ
Здравствуйте, Bekirov!
Суть вопроса в задании: найти знак первого отличного от нуля числа.
Пример в приложении.

Приложение:
var
a: array[0..9] of integer = (0, 4, -3, 5, 6, -2, 1, 2, 4, 0);
temp, i: integer;
priznak: boolean; {признак окончания перебора}

begin
//1
priznak:= False;
i:= 0; temp:= 0;
while not priznak and (i< 10) do begin
temp:= a[i];
if temp <> 0 then priznak:= True;
i:= i + 1;
end;

if temp > 0 then writeln('Первым встретилось положительное число');
if temp < 0 then writeln('Первым встретилось отрицательное число');
if temp = 0 then writeln('Нет результата'); {Когда весь массив состоит из нулей}
end.
Форма ответа