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

(PASCAL)помогите найти ошибку в коде задачи, и исправить

program symma_masiva; uses crt; var a:array[1..10] of real; {Объявляем массив} Summ:real; {Сумма всех элементов массива} i,S1,S2:integer; {Параметр цикла For} procedure vvod_massiva(S1,S2:integer ; var Summ:real) ; {процедура ввода масива и подсчета суммы} Begin {Заполняем массив числами} For i:=1 to 10 do begin write('Введи элемент массива: [',i,'] '); readln(a); end; Summ:=0; {Обнуляем нашу сумму} For i:=1 to 10 do Summ:=Summ+a; write('Сумма всех элементов массива=',Summ); readln; {вывод суммы на экран} end; begin {вызов процедур по имени} vvod_massiva(S1,Summ); vvod_massiva(S2,Summ); if S1>S2 then writeln('больше') else writeln('меньше') end.
Pulodjon Kamol
Pulodjon Kamol
118
Должно быть вот так:
program symma_masiva;

function vvod_massiva: real;{процедура ввода масива и подсчета суммы}
var
i:integer;
a: array[1..10] of real; {Объявляем массив}
Summ:Real;
begin

{Заполняем массив числами}
Summ := 0; {Обнуляем нашу сумму}
for i := 1 to 10 do
begin
write('Введи элемент массива: [', i, '] ');
readln(a[ i]);
Summ := Summ + a[ i];
end;

writeLn('Сумма всех элементов массива=', Summ);
vvod_massiva := Summ;
end;

var
S1, S2 : Real;
begin{вызов процедур по имени}
S1 := vvod_massiva;
S2 := vvod_massiva;
if S1 > S2 then writeln('больше') else writeln('меньше')
end.
Только в конце нужно ещё один вариант условия: если S1 = S2,
а то не каширно получается...
ЕП
Евгений Подлужный
59 976
Лучший ответ
Не на что отвечать - код сильно искажен. Во всяком случае, параметр цикла i должен быть локальным. Кроме того, в процедуре vvod_massiva три формальных парамера, но два локальных. А в конце вообще какой-то бред, возможно, из-за искаженного кода.
во первых, зачем тебе параметры S1 и S2 если в процедуре ты их не используешь.
Во вторых, ты сравнивать должна суммы, а не S1 и S2
в третьих, вызов процедур во второй раз перезапишет сумму первого массива
Ошибок много :)
Но! Чтобы программа заработала, достаточно правильно подсчитать сумму элементов массива.
Массив - в переменной a. Эта переменная - массив, а не скаляр. Поэтому нельзя эту переменную добавлять куда-либо. Ошибочно выражение Summ:=Summ+a;. Надо так: Summ:=Summ+a[ i ];
Чет не дает на английском писать.
Возможно ошибка в том что массив вводить в процедуру нужно типизированным, т. е. создать новый тип массив из дестяти реловских чисел, а в объявлении процедуры присвоить С1 и С2 этому типу.
А что он пишет? И это что за паскаль? На моем немного другие операторы...