помогите с здачкой.условие такое:
дан файл,каждая строка которго-целое число.найти наименьшее число и поставить его первым.
[Pascal]Работа с файлами.
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Решение: создаёшь массив со всеми числами файла, и ищешь там минимальный элемент - это и будет наименьшее число. Ставим его первым, и всё!
Вот код:
Вот код:
Код: Выделить всё
var f: text;
a: array [1..100] of integer;
i,min,index,n: integer;
begin
assign(f, '1.txt'); reset(f);
while not eof(f) do begin
inc(i);
readln(f,a[i]);
end;
n:=i;
min:=a[1];
index:=1;
for i:= 1 to n do if a[i]<min then begin
min:=a[i];
index:=i;
end;
close(f);
for i:= 1 to n do begin
a[index]:=a[1];
a[1]:=min;
break;
end;
assign(f, '1.txt'); rewrite(f);
for i:= 1 to n do writeln(f,a[i]);
close(f);
end.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Зачем вообще создавать массив? (в приведенном тексте задачи про массив, вообще-то, не блоы сказано ни слова). У тебя жестко объявлен массив лишь на 100 элементов. А если в файле строк больше? (btw, перед подсчетом строк в цикле чтения из файлы не обнулена переменная-счетчик). Можно искать минимум без всякого массива, по ходу чтения строк из файла.Колядин Максим писал(а):Решение: создаёшь массив со всеми числами файла, и ищешь там минимальный элемент - это и будет наименьшее число. Ставим его первым, и всё!
Правда, я не понял, что надо сделать с найденным числом. Из фразы в тексте задачи "поставить его первым" мне не ясно, КУДА его надо поставить первым. Единственное ПРЕДПОЛОЖЕНИЕ, пришедшее мне в голову - поставить первой строкой в данном файле.
UPD:
Код: Выделить всё
for i:= 1 to n do begin
a[index]:=a[1];
a[1]:=min;
break;
end;

можно сделать так.
1. пробегаем по всему файлу и находим минимальное число.
2. записываем в выходной файл минимальное число
3. идем по входному файлу, считываем по одному числу, сравниваем с минимальным. если не совпадает - выводим в выходной файл. если совпадает - пропускаем.
4. если на предыдущем ходу только что было пропущено число - перетаскиваем весь остальной входной файл чохом в выходной
1. пробегаем по всему файлу и находим минимальное число.
2. записываем в выходной файл минимальное число
3. идем по входному файлу, считываем по одному числу, сравниваем с минимальным. если не совпадает - выводим в выходной файл. если совпадает - пропускаем.
4. если на предыдущем ходу только что было пропущено число - перетаскиваем весь остальной входной файл чохом в выходной
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.