Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.11.2010, 20:19
manik136 manik136 вне форума
Прохожий
 
Регистрация: 04.11.2010
Сообщения: 5
Репутация: 10
По умолчанию Поможете решить задачку ?

Переписать текст из одного файла в другой в порядке возрастания длин строк)

Ввести и вывести в файле проблем не вызывает. Проблема : расставить строки по возрастанию.

Хотел использовать цикл в цикле.
1) найти строку min
2) Найти строки такой же min длины
3)Проделывать эти два действия пока не закончиться файл
Ну и все)

А ну самое главное, желательно на языке Pascal

Последний раз редактировалось manik136, 04.11.2010 в 20:24.
Ответить с цитированием
  #2  
Старый 04.11.2010, 20:29
Аватар для _Антон_
_Антон_ _Антон_ вне форума
Прохожий
 
Регистрация: 17.08.2010
Сообщения: 36
Репутация: 10
По умолчанию

Ваш код программы и что не получается?
длина строки определяется функцией length(<строка>).
Ответить с цитированием
  #3  
Старый 04.11.2010, 20:36
manik136 manik136 вне форума
Прохожий
 
Регистрация: 04.11.2010
Сообщения: 5
Репутация: 10
По умолчанию только это

Код:
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: Не забываем про теги!

Последний раз редактировалось Admin, 04.11.2010 в 20:55.
Ответить с цитированием
  #4  
Старый 04.11.2010, 20:57
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

В делфи точно, а в паскале вроде тоже есть функция 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  
Старый 04.11.2010, 21:02
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Грузи файл в массив цкликом (или в 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  
Старый 04.11.2010, 21:10
manik136 manik136 вне форума
Прохожий
 
Регистрация: 04.11.2010
Сообщения: 5
Репутация: 10
По умолчанию

К сожалению я не проходил делфи =)
Что ж вы так массив выбрали)

Цикл в цикле легче же должен быть ?
Ответить с цитированием
  #7  
Старый 04.11.2010, 21:17
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Я ж поэтому и писал вам как делать (раз паскаль надо):
читаете все строки файла в массив (можно даже динамический) (т.к. 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  
Старый 04.11.2010, 21:28
manik136 manik136 вне форума
Прохожий
 
Регистрация: 04.11.2010
Сообщения: 5
Репутация: 10
По умолчанию

И все таки)
Сегодня мне сказали что нельзя использовать массив строк (

Так что возвращаемся к моей первой версии

Последний раз редактировалось manik136, 05.11.2010 в 19:33.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:41.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025