Помогите Люди Добрые!
Дан файл F, элементами которого являються целочисленные массивы a0,a1,a2,a3,a4. Требуеться преобразовать каждый из массивов, заменив элементы с наибольшим значением на 0. Полученные массивы должны быть записаны в тот же самый файл F.
Исходные данные:
5 6 7 4 8
11 8 3 2 1
2 1 -5 -6 -10
-8 2 -9 -2 -1
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
Type
TMas=array[1..4] of integer;
Var
a:TMas;
F:file of TMas;
i,k:byte;
max:integer;
begin
AssignFile(F,'data.dat');
rewrite(F);
for k:=1 to 5 do
begin
writeln('Fill in the ', k ,' massive:');
for i:=1 to 4 do read(a[i]);
write(F,a);
end;
reset(F);
for i:=1 to 5 do
begin
read(F,a); max:=a[1];
for k:=1 to 3 do
begin
if a[k+1]>max then max:=a[k+1];
end;
for k:=1 to 4 do
if a[k]=max then a[k]:=0;
seek(F,i-1);
write(F,a);
end;
closeFile(F);
writeln;
//вывод на экран
reset(F);
for i:=1 to 5 do
begin
read(F,a);
for k:=1 to 4 do write(' ',a[k]);
writeln;
end;
readln; readln;
end.
здесь посты на Pascal а не Delphi
! | Sozialist в премоде на неделю за этот пост. Lapp |
Sozialist-а в премод... За оскорбление участника форума...
Где оскорбление? Учи русский язык, читай словарь Даля.
Ну давайте, все по очереди, накидывайте проценты. Поражаюсь над вами, люди. Вам по 10 лет что ли?
Оффтоп, прошу прощения, но это того стоило. А тема себя исчерпала все равно уже.
М | Sozialist, правила никто не отменял: 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). |
const n=5;
type massive=array [1..n] of integer;
Var f: file of massive;
a0, a1, a2, a3, a4: massive;
procedure createRandomMassive(Var x: massive);
Var i: byte;
Begin
for i:=1 to n do
x[i]:=random (199) - 100;
End;
procedure printMassive (x: massive);
Var i: byte;
Begin
for i:=1 to n do
write (x[i],' ');
writeLn;
End;
function numMaxElMassive (x: massive): byte;
Var i, iMax: byte;
Begin
iMax:=1;
for i:=2 to n do
if x[iMax]<x[i]
then iMax:=i;
numMaxElMassive:=iMax;
End;
BEGIN
assign (f, 'C:\zadacha1.kma');
{---------------------------------------}
{создадим файл и занесем в него массивы}
reWrite (f);
createRandomMassive (a0);
write (f, a0);
createRandomMassive (a1);
write (f, a1);
createRandomMassive (a2);
write (f, a2);
createRandomMassive (a3);
write (f, a3);
createRandomMassive (a4);
write (f, a4);
close (f);
{-----------------------------------------}
{теперь начинается собвственно твоя программа, все что отделенно
-----------------------------------------
не считать. Это вообще отдельная программа должна быть}
writeLn ('File before:');
reSet (f);
{читаем из файла массив выводим его на экран,
находим максимальный, обнуляем}
read (f, a0);
printMassive (a0);
a0[numMaxElMassive (a0)]:=0;
read (f, a1);
printMassive (a1);
a1[numMaxElMassive (a1)]:=0;
read (f, a2);
printMassive (a2);
a2[numMaxElMassive (a2)]:=0;
read (f, a3);
printMassive (a3);
a3[numMaxElMassive (a3)]:=0;
read (f, a4);
printMassive (a4);
a4[numMaxElMassive (a4)]:=0;
writeLn ('File after:');
{Теперь стираем все данные из файла и перезаписываем новые массивы}
reWrite (f);
write (f, a0);
write (f, a1);
write (f, a2);
write (f, a3);
write (f, a4);
printMassive (a0);
printMassive (a1);
printMassive (a2);
printMassive (a3);
printMassive (a4);
close (f);
readLn;
END.
А смысл использовать 4 массива? Перегрузка программы. Переменная типа компонента файла одна.
Вот то, о чем я говорил в моем предыдущем посте. Просто, если разрешено рассматривать а0, а1, а2, а3, а4 как элементы массива, то тогда код можно ужать (сразу вспоминается лекция про соотношение пространства и времени). Думаю, этот вариант будет немного помедленее, но зато более удобно читаемый.
const n=5;
type massive=array [1..n] of integer;
Var f: file of massive;
an: array [0..4] of massive;
i: byte;
procedure createRandomMassive(Var x: massive);
Var i: byte;
Begin
for i:=1 to n do
x[i]:=random (199) - 100;
End;
procedure printMassive (x: massive);
Var i: byte;
Begin
for i:=1 to n do
write (x[i],' ');
writeLn;
End;
function numMaxElMassive (x: massive): byte;
Var i, iMax: byte;
Begin
iMax:=1;
for i:=2 to n do
if x[iMax]<x[i]
then iMax:=i;
numMaxElMassive:=iMax;
End;
BEGIN
assign (f, 'C:\zadacha1.kma');
{---------------------------------------}
{создадим файл и занесем в него массивы}
reWrite (f);
Randomize;
for i:=0 to 4 do
begin
createRandomMassive (an[i]);
write (f, an[i])
end;
close (f);
{-----------------------------------------}
{теперь начинается собвственно твоя программа, все что отделенно
-----------------------------------------
не считать. Это вообще отдельная программа должна быть}
writeLn ('File before:');
reSet (f);
{читаем из файла массив выводим его на экран,
находим максимальный, обнуляем}
for i:=0 to 4 do
begin
read (f, an[i]);
printMassive (an[i]);
an[i][numMaxElMassive (an[i])]:=0;
end;
writeLn ('File after:');
{Теперь стираем все данные из файла и перезаписываем новые массивы}
reWrite (f);
for i:=0 to 4 do
begin
write (f, an [i]);
printMassive (an[i])
end;
close (f);
readLn;
END.
Sozialist, а смысл не закрывать файл после записи?
Это она не знает!!!?Не смеши! Про дельфи забудь,100 раз сказали!
! | Sozialist в премоде на неделю (см.выше) Кончаем флуд.. |