IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> типизированные файлы, целочисленные массивы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


Помогите Люди Добрые!
Дан файл 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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Клавиатурный тиран
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  -2  +


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.


С тебя бутыль, хоть я и не пью. blum.gif Если не в дельфяке программируешь, перепиши там пару строк. Я не шарю в простом паскале wink.gif

Сообщение отредактировано: Sozialist -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Иллюзия мира
***

Группа: Пользователи
Сообщений: 180
Пол: Женский

Репутация: -  4  +


здесь посты на Pascal а не Delphi
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Клавиатурный тиран
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  -2  +


Цитата(Адель @ 22.03.2007 0:46) *

здесь посты на Pascal а не Delphi

Ухах lol.gif А ты все еще суешь свой нос, куда не следует?

 ! 
Sozialist в премоде на неделю за этот пост. Lapp

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Sozialist-а в премод... За оскорбление участника форума...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Клавиатурный тиран
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  -2  +


Где оскорбление? Учи русский язык, читай словарь Даля.
Ну давайте, все по очереди, накидывайте проценты. Поражаюсь над вами, люди. Вам по 10 лет что ли?
Оффтоп, прошу прощения, но это того стоило. А тема себя исчерпала все равно уже.

Сообщение отредактировано: Sozialist -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


М
Sozialist, правила никто не отменял:
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).



--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 69
Пол: Мужской

Репутация: -  3  +


 
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 элементов. Но условие есть условия, таковы данные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Клавиатурный тиран
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  -2  +


А смысл использовать 4 массива? Перегрузка программы. Переменная типа компонента файла одна.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 69
Пол: Мужской

Репутация: -  3  +


Вот то, о чем я говорил в моем предыдущем посте. Просто, если разрешено рассматривать а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.



Сообщение отредактировано: КМА -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Цитата
Переменная типа компонента файла одна.
Переменных типа компонента файла столько, сколько решит сделать программист... ТВОЙ вариант мы уже видели... nea.gif

Перестань флудить по всему форуму... По хорошему прошу...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Sozialist, а смысл не закрывать файл после записи?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Клавиатурный тиран
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  -2  +


Цитата(мисс_граффити @ 22.03.2007 1:32) *

Sozialist, а смысл не закрывать файл после записи?

Ну ты наверно не знаешь, что в Delphi, копилятор следит за процессами. В частности, если файл открыт для записи, close(F) писать не нужно, если нужно открывать для чтения.
В других местах писал, вроде пунктуации, но не привык.

Сообщение отредактировано: Sozialist -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


Это она не знает!!!?Не смеши! Про дельфи забудь,100 раз сказали!


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


 ! 
Sozialist в премоде на неделю (см.выше)

Кончаем флуд..



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 2:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name