![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Переписать текст из одного файла в другой в порядке возрастания длин строк)
Ввести и вывести в файле проблем не вызывает. Проблема : расставить строки по возрастанию. Хотел использовать цикл в цикле. 1) найти строку min 2) Найти строки такой же min длины 3)Проделывать эти два действия пока не закончиться файл Ну и все) А ну самое главное, желательно на языке Pascal Последний раз редактировалось manik136, 04.11.2010 в 20:24. |
#2
|
||||
|
||||
![]() Ваш код программы и что не получается?
длина строки определяется функцией length(<строка>). |
#3
|
|||
|
|||
![]() Код:
Program primer; Var f1,f2:text; I,n: integer; S: string; a:char; k:string; Begin Assign(f1,'1.txt'); reset(f1); assign(f2,'2.txt); rewrite(f2); while (not(eof(f1))) and a<>#10#13 do begin readln(f1,s); for i:=1 to length(s) do Последний раз редактировалось Admin, 04.11.2010 в 20:55. |
#4
|
||||
|
||||
![]() В делфи точно, а в паскале вроде тоже есть функция EOLN (конец строки, заменяет твои #10#13), дак вот:
Код:
var i: integer; a: array[0..255] of string; // массив строк (можно сделать динамическим) ... i:=0; While(not(EOF(F1)) and (not(EOLN(F1)) do begin readln(f1, a[i]); inc(i); // i:=i+1; end; end; // Теперь все строки мы записали из файла 1 в массив. Можем тупо сравнить все строки в массиве... думаю как сам поймешь, если не поймешь - напишу. Помогаю за Спасибо ![]() |
#5
|
|||
|
|||
![]() Грузи файл в массив цкликом (или в TStringList), сортируй там (да хоть пузырьком) и сохраняй в новый:
Код:
procedure CopySorted(AFileIn, AFileOut : String); var L : TStringList; I, J : Integer; begin L := TStringList.Create; Try L.LoadFromFile(AFileIn); For I := 0 To L.Count-2 Do For J := I + 1 To L.Count-1 Do If Length(L[i]) > Length(L[J]) Then L.exchange(I,J); L.saveToFile(AFileOut); Finally L.Free; End; end; |
#6
|
|||
|
|||
![]() К сожалению я не проходил делфи =)
Что ж вы так массив выбрали) Цикл в цикле легче же должен быть ? |
#7
|
||||
|
||||
![]() Я ж поэтому и писал вам как делать (раз паскаль надо):
читаете все строки файла в массив (можно даже динамический) (т.к. TStringList.LoadFromFile не подходит, ибо это не делфи), и просто сортируете любым методом, даже пузырьком как уже было сказано выше. В нем и надо использовать 2 цикла. Этот метод состоит в том, что сравнивать i-тый элемент с i+1 и если s[i] > s[i+1] то надо поменять их местами, можно с помощью 3 переменной, или же так: Код:
s[i]:=s[i]+s[i+1]; s[i+1]:=s[i]-s[i+1]; s[i]:=s[i]-s[i+1]; Помогаю за Спасибо ![]() |
#8
|
|||
|
|||
![]() И все таки)
Сегодня мне сказали что нельзя использовать массив строк ( Так что возвращаемся к моей первой версии Последний раз редактировалось manik136, 05.11.2010 в 19:33. |