Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 6
1

Переписать содержимое файла А в файл В. Удалить слова,длина которых меньше заданной

27.09.2012, 16:46. Просмотров 1221. Ответов 7
Метки нет (Все метки)

Завтра мне задачу сдавать.Помогите плиз
Условие:
Дан текстовый файл А.Переписать содержимое файла А в файл В.Удалить слова,длина которых меньше заданной.




Delphi
1
2
3
4
5
6
7
8
9
10
11
12
uses
  SysUtils;
Var f1: Textfile;
 
Begin
{ TODO -oUser -cConsole Main : Insert code here }
AssignFile(f1, 'D:\A.txt');
ReWrite(f1);
Writeln(f1, 'My name is Stas');
Closefile(f1);
CopyFile('D:\A.txt', 'D:\B.txt', true);
end.
Файл А создается,но процедура копирования
Delphi
1
CopyFile('D:\A.txt', 'D:\B.txt', true);
не удается....
Что не так?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2012, 16:46
Ответы с готовыми решениями:

Переписать из файла F в файл G все слова, состоящие меньше, чем из трех букв.
Создать текстовый файл F. Переписать из файла F в файл G все слова, состоящие меньше, чем из трех...

Дан текстовый файл, содержащий строки. Переписать содержимое файла
Дан текстовый файл, содержащий строки. Переписать содержимое файла в другой файл, ...

Типизированный файл: Вывести записи должников, у которых дата платежа меньше заданной
Здравствуйте! Подскажите как написать исходный код. Есть задание: Типизированный файл. Дан файл...

Файл: Переписать содержимое текстового файла a.txt диска С в текстовый файл в.txt без пробелов
1.Переписать содержимое текстового файла a.txt диска С в текстовый файл в.txt без пробелов 2.Дан...

7
Nikelset
27.09.2012, 17:59 2
Попробуй так: CopyFile(Pchar('D:\A.txt'), Pchar('D:\B.txt'), true)
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 6
27.09.2012, 18:22  [ТС] 3
Не хочет работать....
0
895 / 342 / 65
Регистрация: 11.02.2012
Сообщений: 1,502
27.09.2012, 18:25 4
Цитата Сообщение от Стас36 Посмотреть сообщение
Переписать содержимое файла А в файл В
А ты вообще другое делаешь.
Прочитай данные из первого файла и запиши их во второй.
1
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 6
27.09.2012, 18:41  [ТС] 5
Я в Delphi нуб...Можно написать подробно как прочесть информацию из файла?
0
895 / 342 / 65
Регистрация: 11.02.2012
Сообщений: 1,502
27.09.2012, 20:33 6
Лучший ответ Сообщение было отмечено как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var 
F1, F2: Text;
smbtext: string;
 
begin
Assignfile(F1,'D:\A.txt');
Assignfile(F2,'D:\B.txt');
Reset(F1); // открываем 1-ый файл для чтения
Rewrite(F2); //перезаписываем второй файл
Readln(F1, smbtext); // Читаем из файла
Writeln(F2, smbtext); // Записываем во второй
CloseFile(F);
CloseFile(R);
end;
end.
Как-то так.

Добавлено через 18 минут
А вот приблизительный вариант второй части алгоритма.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var
    smbtext: string;
    len, i, j: integer;
F1, F2: Textfile;
 
begin
Assignfile(F1,'D:\A.txt');
Assignfile(F2,'D:\B.txt');
Reset(F1); // открываем 1-ый файл для чтения
Rewrite(F2); //перезаписываем второй файл
Readln(F1, smbtext); // Читаем из файла
Writeln(F2, smbtext); // Записываем во второй
 
    len:= length(smbtext);
 
    i:= 1; {начинаем с первого символа в строке}
    j:= 0; {сначала длина слова равна нулю}
    while i<=len do begin
        if smbtext[i] <> ' ' then begin  {если очередной символ не пробел}
            j:= j+1; {увеличиваем длину слова}
            i:= i+1; {переходим к следующей букве}
        end
        else begin {если очередной символ пробел}
            if j < 5 then begin  {если длина слова < 5}
                delete(smbtext,i-j,j+1); {вырезаем вместе с пробелом после слова}
                len:= length(smbtext);
                i:= i-j; {i в начало на длину вырезанной подстроки}
                j:= 0; {обнуляем длину слова}
            end
            else begin {если длина слова > 5}
                i:= i+1; {переходим к следующей букве}
                j:= 0; {обнуляем длину слова}
            end;
        end;
    end;
 
    if j < 5 then {если последнее слово < 5 букв}
        delete(smbtext,i-j,j);
 
    writeln(f2, smbtext);
CloseFile(F1);
CloseFile(F2);
end.
1
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 6
28.09.2012, 17:19  [ТС] 7
О...Спасибо огромное)

Добавлено через 19 часов 3 минуты
А вот чисто ради интереса....Как написать алгоритм,чтобы самому писать число(количество букв в слове) меньше которого слова будут удоляться?
0
895 / 342 / 65
Регистрация: 11.02.2012
Сообщений: 1,502
28.09.2012, 17:41 8
Используй edit.text, только сразу это значение нужно будет перевести в целое(StrToInt).

Например
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var
    smbtext: string;
    len, i, j: integer;
F1, F2: Textfile;
 
begin
Assignfile(F1,'D:\A.txt');
Assignfile(F2,'D:\B.txt');
Reset(F1); // открываем 1-ый файл для чтения
Rewrite(F2); //перезаписываем второй файл
Readln(F1, smbtext); // Читаем из файла
Writeln(F2, smbtext); // Записываем во второй
 
    len:= length(smbtext);
 
    i:= 1; {начинаем с первого символа в строке}
    j:= 0; {сначала длина слова равна нулю}
    while i<=len do begin
        if smbtext[i] <> ' ' then begin  {если очередной символ не пробел}
            j:= j+1; {увеличиваем длину слова}
            i:= i+1; {переходим к следующей букве}
        end
        else begin {если очередной символ пробел}
            if j < strtoint(edit1.text) then begin  {если длина слова < 5}
                delete(smbtext,i-j,j+1); {вырезаем вместе с пробелом после слова}
                len:= length(smbtext);
                i:= i-j; {i в начало на длину вырезанной подстроки}
                j:= 0; {обнуляем длину слова}
            end
            else begin {если длина слова > 5}
                i:= i+1; {переходим к следующей букве}
                j:= 0; {обнуляем длину слова}
            end;
        end;
    end;
 
    if j < strtoint(edit1.text) then {если последнее слово < 5 букв}
        delete(smbtext,i-j,j);
 
    writeln(f2, smbtext);
CloseFile(F1);
CloseFile(F2);
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2012, 17:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Дан типизированный файл целых чисел. Переписать содержимое файла в новый типизированный файл
Дан типизированный файл целых чисел. Переписать содержимое файла в новый типизированный...

Удалить из строки слова, длина которых меньше заданной
Удалить из строки слова, длина которых меньше заданной. PREDICATES razd(string,integer,string) ...

Из заданной строки удалить слова, длина которых меньше указанной.
Помогите написать программу которая из заданной символьной строки удаляет слова длина которых...

Из заданной строки символов удалить слова, длина которых меньше указанной пользователем
Из заданной строки символов удалить слова, длина которых меньше указанной пользователем int n,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.