Помогите Люди Добрые! Дан файл 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
Sozialist
22.03.2007 4:41
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.
С тебя бутыль, хоть я и не пью. Если не в дельфяке программируешь, перепиши там пару строк. Я не шарю в простом паскале
Адель
22.03.2007 4:46
здесь посты на Pascal а не Delphi
Sozialist
22.03.2007 4:47
Цитата(Адель @ 22.03.2007 0:46)
здесь посты на Pascal а не Delphi
Ухах А ты все еще суешь свой нос, куда не следует?
!
Sozialist в премоде на неделю за этот пост. Lapp
Гость
22.03.2007 4:49
Sozialist-а в премод... За оскорбление участника форума...
Sozialist
22.03.2007 4:52
Где оскорбление? Учи русский язык, читай словарь Даля. Ну давайте, все по очереди, накидывайте проценты. Поражаюсь над вами, люди. Вам по 10 лет что ли? Оффтоп, прошу прощения, но это того стоило. А тема себя исчерпала все равно уже.
мисс_граффити
22.03.2007 5:01
М
Sozialist, правила никто не отменял: 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
КМА
22.03.2007 5:16
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;
В общем есть идея все эти массивы забабахать в еще один большой из 4 элементов. Но условие есть условия, таковы данные.
Sozialist
22.03.2007 5:21
А смысл использовать 4 массива? Перегрузка программы. Переменная типа компонента файла одна.
КМА
22.03.2007 5:31
Вот то, о чем я говорил в моем предыдущем посте. Просто, если разрешено рассматривать а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.
Алена
22.03.2007 5:31
Цитата
Переменная типа компонента файла одна.
Переменных типа компонента файла столько, сколько решит сделать программист... ТВОЙ вариант мы уже видели...
Перестань флудить по всему форуму... По хорошему прошу...
мисс_граффити
22.03.2007 5:32
Sozialist, а смысл не закрывать файл после записи?
Sozialist
22.03.2007 5:41
Цитата(мисс_граффити @ 22.03.2007 1:32)
Sozialist, а смысл не закрывать файл после записи?
Ну ты наверно не знаешь, что в Delphi, копилятор следит за процессами. В частности, если файл открыт для записи, close(F) писать не нужно, если нужно открывать для чтения. В других местах писал, вроде пунктуации, но не привык.
Артемий
22.03.2007 5:48
Это она не знает!!!?Не смеши! Про дельфи забудь,100 раз сказали!
Lapp
22.03.2007 9:46
!
Sozialist в премоде на неделю (см.выше)
Кончаем флуд..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.