Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2009, 17:54   #1
N@stya
 
Аватар для N@stya
 
Регистрация: 28.12.2009
Сообщений: 5
Печаль программа на файлы(Delphi)

Здравствуйте! Помогите пожалуйста с этой программкой.У меня не получается
Дан файл целых чисел F1. Выполнить над элементами файла следующие действия:Среди каждых трех компонент файла F1 удалить максимальное, а два других поменять местами.
N@stya вне форума Ответить с цитированием
Старый 29.12.2009, 17:58   #2
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

Цитата:
У меня не получается
Показывайте попытки)
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Старый 29.12.2009, 19:32   #3
N@stya
 
Аватар для N@stya
 
Регистрация: 28.12.2009
Сообщений: 5
По умолчанию

да, конечно. Но я сделала очень мало

type tfile=file of integer;
procedure VvodFile(var f:tfile);
var k:integer;
begin
rewrite(f);
while random(30)<>20 do
begin
k:=random(100)-50;
write(f,k);
end;
closefile(f);
end;

procedure VivodFile(var f:tfile);
var k:integer;
begin
reset(f);
while not eof(f) do
begin
read(f,k);
write(k,' ');
end;
closefile(f);
writeln;
end;

var f1,f2,f3:tfile;
k,k1,p,max,min:integer;
begin

randomize;
assign(f1,'1.dat');
assign(f2,'2.dat');
assign(f3,'3.dat');
VvodFile(f1);
writeln('1 file');
VivodFile(f1);
reset(f1);
rewrite(f2);
rewrite(f3);


while not eof(f1) do
begin
p:=0;
max:=-100;

while (p<3) and not eof(f1) do begin
read(f1,k);
if k>max then max:=k;

p:=p+1;
end;

Вот в этом куске программы среди каждых трех компонент я нашла все максимумы. Вот на этом я остановилась... Дальше я собиралась во второй файл запсать все кроме максимумов, перевернуть во втором каждые две компоненты и записать это в третий файл.Это и будет ответ. Помогите пожалуйста с продолжением программы
N@stya вне форума Ответить с цитированием
Старый 29.12.2009, 20:54   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Что такое компонент файла? Ни разу не слышал. Но если Вы про значение строки, то лучше всего использовать TStringList и в цикле for to do уже делать, то что Вам надо.
FaTaL вне форума Ответить с цитированием
Старый 30.12.2009, 16:41   #5
N@stya
 
Аватар для N@stya
 
Регистрация: 28.12.2009
Сообщений: 5
По умолчанию

Компонента-это элемент файла. Например в файле f1 записано: 123462823. В итоге должно получиться 232432.
N@stya вне форума Ответить с цитированием
Старый 30.12.2009, 17:06   #6
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

считывай в массив в каждой тройке ищи максимум и удаляй а 2 других меняй местами а потом записывай в тот же файл
что то вроде:
Код:
i:=1;
k:=n;
while i<=round(2/3*n) do begin
 max:=a[i];
 im:=i;
for j:=i to i+2 do
if a[j]>max then begin max:=a[j];im:=j;end;
for x:=im to k do
a[x]:=a[x+1];
k:=k-1;
tmp:=a[i];
a[i]:=a[i+1];
a[i+1]:=tmp;
i:=i+2;
end;
прикрутите использование файлов для ввода вывода массива и усе)))
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»

Последний раз редактировалось IT-man; 30.12.2009 в 17:28.
IT-man вне форума Ответить с цитированием
Старый 30.12.2009, 17:45   #7
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Объясните что это такое
Код:
while i<=round(2/3*n) do begin
Asira вне форума Ответить с цитированием
Старый 30.12.2009, 17:48   #8
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

это цикл с предусловием)))
а серьезно: если из массива удалить 1/3 элементов то сколько их останется,если их было n===> правильно 2/3*n
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»

Последний раз редактировалось IT-man; 30.12.2009 в 17:50.
IT-man вне форума Ответить с цитированием
Старый 30.12.2009, 17:52   #9
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Спасибо !! но ещё тупой вопросик А куда мы тогда максимум то откинули???
у меня просто задачка наподобии...
Asira вне форума Ответить с цитированием
Старый 30.12.2009, 17:54   #10
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

Цитата:
А куда мы тогда максимум то откинули
в небытие))) мы его из массива выкинули
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi, файлы. Юлия_Конн Помощь студентам 4 15.05.2009 00:57
Программа и файлы: что же делать? Anekdot Общие вопросы Delphi 1 27.03.2009 10:57
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi Верчик Помощь студентам 9 02.03.2009 17:46
Программа, анализирующая текстовые файлы и строящая графики Karabister Фриланс 15 08.06.2008 15:30