Другие языки программирования и технологии

помогите найти ошибку в коде. ПАскаль

write(a:5) что делает эта строка по замыслу? у нас переменная а не может быть в принципи 5 символов после запятой, округление лишнее

имхо, использование типов явно лишнее

та и потом, в теле первого цикла ты какой именно елемент масиива пытаешься присвоить рандом?)) )
укажи его, нельзя просто так присваивать елемент
детская ошибка, бывает
и потом, в результате всех перемножений получается число выходяшие за рамки интеджер
поэтому нужно использовать лонгинт, а то ты уввидишь отрицатеьные значения перемнной С
Program Lab_4;
uses crt;
var a:array [1..10] of integer;
i:integer;
S:longint;
Begin
clrscr;
Randomize;
For I:=1 To 10 Do
begin
a:=100-random(201);
writeln(a);
end;
writeln;
S:=1;
for i:=1 to 10 do begin
If a > 1 Then begin
S:=S*a;
Writeln('S=',S);
end
else
end;
Readkey;
End.
Ермек Шамгунов
Ермек Шамгунов
771
Лучший ответ
На первый взгляд, ошибок нет, только зачем два цикла?
Program Lab_4;
uses crt;
Cоnst N=10;
Var a: array [1..N] of real; ' Зачем переопределять стандартный тип array?
k: integer;
S: real; ' Случайное число может быть и нецелым
Begin
clrscr;
Randomize; {генератор случ значений} ' Никогда не понимал, зачем этот Randomize нужен?
S:=1;
For k:=1 To N Do
begin
a[k] := 100-random(201);
write(a[k]:5);
If a[k] > 0 Then S := S*a[k];
end;
writeln;
Write('S=',S);
Readkey;
End.
Мда. Ты хоть сам понимаешь что ты написал? Ты сам понимаешь КАК работает этот код.
У вас значения массива могут достигать 100... Даже если во всем массиве будет 3 числа близких к сотне, размера переменной S типа Integer просто-напросто не хватит для хранения произведения...
Алексей Ивлев
Алексей Ивлев
23 519
Ты сам Знаешь что написал. Мудвен