Цитата:
Сообщение от Mr.Програмист
Вот мой вариант:
|
Между прочим - куча ошибок. Не говоря уже о том, что использование меток и переходов по меткам - вообще дурной стиль.
Цитата:
Uses Crt;
Label met1;
Var a:array[1..40] of Word;
i,k:integer;
Begin
randomize; {я могу ошибиться}
For i:=1 to 40 do
a[i]:=random(1000)-1000;
|
Итак, вы определили тип массива Word. Но тип Word вообще не допускает отрицательных значений! А вот присваиваете Вы значение элементам массива в диапазоне -1..-1000, что плохо по двум причинам: во-первых, как уже говорилось, явная нестыковка по типам, во-вторых, при такой выборке ВСЕ БЕЗ ИСКЛЮЧЕНИЯ элементы массива будут отрицательными, а потому исходная задача (поиск первого отрицательного элемента) теряет смысл.
Непонятно, зачем вообще нужно k? Почему не написать просто Writeln(a[i],i);? Между прочим, и сам вывод сделан безграмотно: без форматов или пробелов оба числа просто сольются в одно целое. Ну очень удобно!
P.S. Мне кажется, рановато Вы такой ник выбрали. Учитесь!
P.P.S. А если Вы не знаете, как без меток выйти из цикла - подскажу. Для этого в Паскале предусмотрен оператор Break. С его помощью блок выбора первого отрицательного числа можно преобразовать, например, так:
Код:
For i:=1 to 40 do
if a[i]<0 then
begin
Writeln(i,' ',a[i]);
break;
end;
Readkey;