В паскале создать программу: «Взвесить», то есть найти суммы в двух массивах, двух файлах, двух списках и максимально уравновесить их, обменивая значения.
program Balance; const n = 5; // длина массивов и списков var arr1, arr2: array[1..n] of Integer; list1, list2: ^List; file1, file2: text; i, sum1, sum2, diff, temp: Integer; type List = record value: Integer; next: ^List; end; procedure ReadArray(var f: text; var arr: array of Integer); var i: Integer; begin for i := 1 to n do read(f, arr[i]); end; procedure ReadList(var f: text; var list: ^List); var temp: Integer; p: ^List; begin p := list; while not eof(f) do begin new(p^.next); p := p^.next; p^.next := nil; read(f, temp); p^.value := temp; end; end; procedure CalculateSumAndDiff(arr1, arr2: array of Integer; var sum1, sum2, diff: Integer); var i: Integer; begin sum1 := 0; sum2 := 0; for i := 1 to n do begin sum1 := sum1 + arr1[i]; sum2 := sum2 + arr2[i]; end; diff := sum1 - sum2; end; procedure ExchangeValues(var arr1, arr2: array of Integer; i, j: Integer); var temp: Integer; begin temp := arr1[i]; arr1[i] := arr2[j]; arr2[j] := temp; end; begin // Открываем файлы для чтения assign(file1, 'file1.txt'); reset(file1); assign(file2, 'file2.txt'); reset(file2); // Читаем данные из файлов ReadArray(file1, arr1); ReadArray(file2, arr2); // Вычисляем суммы и разницу CalculateSumAndDiff(arr1, arr2, sum1, sum2, diff); // Если суммы различаются, то уравновешиваем значения if diff <> 0 then begin for i := 1 to n do begin for j := 1 to n do begin if arr1[i] - arr2[j] = diff then begin ExchangeValues(arr1, arr2, i, j); CalculateSumAndDiff(arr1, arr2, sum1, sum2, diff); if diff = 0 then break; end; end; if diff = 0 then break; end; end; // Вывод результатов writeln('Array 1 after balancing:'); for i := 1 to n do write(arr1[i], ' '); writeln; writeln('Array 2 after balancing:'); for i := 1 to n do write(arr2[i], ' '); writeln; // Закрываем файлы close(file1); close(file2); end.
Этот код предполагает, что файлы "file1.txt" и "file2.txt" содержат по 5 чисел каждый, массивы arr1 и arr2 имеют фиксированную длину 5, а список задается структурой List.
Программа считывает данные из файлов, находит разницу сумм двух массивов, и если суммы не равны, то происходит обмен значениями элементов массивов для уравновешивания. Результаты выводятся на экран.
Программа на языке Pascal:
program Balance;const
n = 5; // длина массивов и списков
var
arr1, arr2: array[1..n] of Integer;
list1, list2: ^List;
file1, file2: text;
i, sum1, sum2, diff, temp: Integer;
type
List = record
value: Integer;
next: ^List;
end;
procedure ReadArray(var f: text; var arr: array of Integer);
var
i: Integer;
begin
for i := 1 to n do
read(f, arr[i]);
end;
procedure ReadList(var f: text; var list: ^List);
var
temp: Integer;
p: ^List;
begin
p := list;
while not eof(f) do
begin
new(p^.next);
p := p^.next;
p^.next := nil;
read(f, temp);
p^.value := temp;
end;
end;
procedure CalculateSumAndDiff(arr1, arr2: array of Integer; var sum1, sum2, diff: Integer);
var
i: Integer;
begin
sum1 := 0;
sum2 := 0;
for i := 1 to n do
begin
sum1 := sum1 + arr1[i];
sum2 := sum2 + arr2[i];
end;
diff := sum1 - sum2;
end;
procedure ExchangeValues(var arr1, arr2: array of Integer; i, j: Integer);
var
temp: Integer;
begin
temp := arr1[i];
arr1[i] := arr2[j];
arr2[j] := temp;
end;
begin
// Открываем файлы для чтения
assign(file1, 'file1.txt');
reset(file1);
assign(file2, 'file2.txt');
reset(file2);
// Читаем данные из файлов
ReadArray(file1, arr1);
ReadArray(file2, arr2);
// Вычисляем суммы и разницу
CalculateSumAndDiff(arr1, arr2, sum1, sum2, diff);
// Если суммы различаются, то уравновешиваем значения
if diff <> 0 then
begin
for i := 1 to n do
begin
for j := 1 to n do
begin
if arr1[i] - arr2[j] = diff then
begin
ExchangeValues(arr1, arr2, i, j);
CalculateSumAndDiff(arr1, arr2, sum1, sum2, diff);
if diff = 0 then
break;
end;
end;
if diff = 0 then
break;
end;
end;
// Вывод результатов
writeln('Array 1 after balancing:');
for i := 1 to n do
write(arr1[i], ' ');
writeln;
writeln('Array 2 after balancing:');
for i := 1 to n do
write(arr2[i], ' ');
writeln;
// Закрываем файлы
close(file1);
close(file2);
end.
Этот код предполагает, что файлы "file1.txt" и "file2.txt" содержат по 5 чисел каждый, массивы arr1 и arr2 имеют фиксированную длину 5, а список задается структурой List.
Программа считывает данные из файлов, находит разницу сумм двух массивов, и если суммы не равны, то происходит обмен значениями элементов массивов для уравновешивания. Результаты выводятся на экран.