Спасибо VOLVO за предыдущую задачу. И теперь на ее основе, как можно сделать так:
Введем слово (1) допустим, что его рекорд 2000, слово (2) – 500 и т.д. Не больше 7 слов.
(1) – 2000
(2) – 500
(3) – 1500
(4) – 5000
(5) – 100
(6) – 750
(7) – 2400
Как сделать, чтобы в файле слова сохранились по возрастанию рекордов в виде:
(4) – 5000
(7) – 2400
(1) – 2000
(3) – 1500
(6) – 750
(2) – 500
(5) – 100
При вводе слова с рекордом 1900 или любым другим, оно вставало на нужную позицию, в данном случае между словами (1) и (3), и т.д.
Уточни одну деталь: у тебя вот этот самый файл должен создаваться в начале работы программы, и только те слова, которые ты ввел ПРИ ЭТОМ запуске должны вот так циклически записываться в файл, или надо, чтобы и то, что РАНЬШЕ записывалось в файл тоже принималось во внимание?
Ну я же спрашивал не просто так, наверное... Ты на вопросы-то отвечай !!!
Повторяю вопрос: "при запуске игры ты хранишь только ЭТИ рекорды, или надо учитывать и то, что БЫЛО сохранено вчера, скажем?" + еще вопрос: сами рекорды (числа) ты хранишь где-то в массиве (и только при выходе из программы сохраняешь), или каждый раз хочешь обращаться к файлу, и ТОЛЬКО там хранить все рекорды?
Отвечаю на вопрос:
Да я хочу каждый раз обращаться к файлу, и ТОЛЬКО там хранить все рекорды?
Ну допустим я играл вчера и получил …. рекорд (этот рекорд должен сохр.), и играл сегодня и получил …. рекорд (и этот рекорд тоже должен сохр.).
И при открывании таблицы рекордов там должен быть вчерашний и сегодняшний рекорд.
Следовательно надо наверное учитывать все сохр. рекорды.
..--..
--..--
Ну так считывай из файла старые данные в массив, добавляй новые и сортируй. Что не понятно?
PS Можно построчно копировать файл и сразу вставить новые данные на нужную позицию. Объяснить подробней, или первый способ устроит?
, а вы код не подскажите?
Подскажем. Вот этот код демонстрирует запись в файл рекордов:
uses crt;Если что не понятно - спрашивай.
var
Name, NewName : string;
Score, NewScore : longint;
f1, f2 : text;
count : integer;
flag : boolean;
begin
ClrScr;
Write('Do you wanna new score-file? (y/n): ');
if ReadKey in ['y', 'Y'] then begin
WriteLn('y');
assign(f1,'1.txt');
rewrite(f1);
Name := 'unknown';
Score := 0;
for count := 1 to 7 do begin
WriteLn(f1, Name);
WriteLn(f1, Score);
end;
close(f1);
end
else WriteLn('n');
Write(' Name: ');
ReadLn(NewName);
Write('Score: ');
ReadLn(NewScore);
assign(f1,'1.txt');
assign(f2,'1.tmp');
reset(f1);
rewrite(f2);
count := 0;
flag := true;
while not(eof(f1)) do begin
ReadLn(f1, Name);
ReadLn(f1, Score);
if (Score < NewScore) and flag then begin
WriteLn(f2, NewName);
WriteLn(f2, NewScore);
Inc(count);
flag := false;
end;
if count < 7 then begin
WriteLn(f2, Name);
WriteLn(f2, Score);
Inc(count);
end;
end;
close(f1);
close(f2);
erase(f1);
rename(f2, '1.txt');
end.