0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 34
1

Если длина строка больше 80 символов, копировать в новый файл по 80 символов

13.11.2012, 23:45. Показов 1783. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие:
написать программу копирования текста при условии:
1. если длина строка больше 80 символов, копировать в новый файл по 80символов.
2. пустые строки не копируются.

Программа:
Pascal
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
Program DZ;                                                            
Uses CRT;                                                                     
Var S,S1:string;                                                          
      F,F1:text;        {F-файл с текстом, F1-новый файл}                                                        
      N,L,i:integer;                                                            
Begin                                                                         
ClrScr;                                                                       
Assign(F,'C:\temp\file.txt');                                                 
Reset(F);                                                                     
N:=0;                                                                         
Assign(F1,'C:\temp\file1.txt');                                               
Rewrite(F1);                                                                  
if IoResult <>0 then WriteLn('Файла нет'); Close(F);                          
Reset(F);                                                                     
Begin                                                                         
   Readln(F,S);          {читать файл F в строку S}                                                     
   if not (S='')  then    {если S не пустая строка то}                                                    
                      Begin                                                   
                           L:=Length(S);                                      
                           For i:=1 to Length(S) do Begin                     
                                    if S[i]=' ' then inc(N);                  
                             if N=L then WriteLn('Строка состоит из пробелов')
                                    else Begin                                
                                            if L>=80 then Begin               
                                                           S1:=Copy(S,1,80);  
                                                           Delete(S,1,80);    
                                                           L:=L-80;           
                                                           Writeln;           
                                                           End                
                                                     else Begin               
                                                           S1:=Copy(S,1,L);   
                                                           WriteLn;           
                                                           L:=0;              
                                                           End;               
                                         End;                                 
                                          WriteLn(F1,S1);                     
                                          WriteLn(S1);                        
                                                    End;                      
 end;                End;                                                     
 Close(F);                                                                    
 Close(F1);                                                                   
 readln;       
End.
что-то не работает) похоже намудрил с бегинами. но найти ошибку не могу)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2012, 23:45
Ответы с готовыми решениями:

Строка: Если длина строки больше 10, то оставить только первые 6 символов...
Дана строка.Если ее длина больше 10,то оставить в строке только первые 6 символов,иначе дополнить...

Текстовый файл. Сформировать новый файл, исключив строки, длина которых превышает 50 символов
Дан текстовый файл. Сформировать новый файл, исключив из него строки, длина которых превышает 50...

дана строка символов. 1)Определить количество слов. Длина которых больше длины первого слова
2) определить длину самого длинного слова и напечатать его 3)Определить длину строки с символа с...

Дана строка. Если её длина не менее трёх символов, добавить ‘ing’ в конце
Дана строка. Если её длина не менее трёх символов, добавить ‘ing’ в конце. Если трока уже...

3
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
14.11.2012, 13:10 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
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
Uses CRT;
Var S,S1:string;
      F,F1:text;        {F-файл с текстом, F1-новый файл}
      N,i:integer;
Begin
ClrScr;
Assign(F,'file.txt'); //сменил путь к файлам
Reset(F);
N:=0;
Assign(F1,'file1.txt');
Rewrite(F1);
if IoResult <>0 then WriteLn('Файла нет'); Close(F);
Reset(F);
While not eof(f) do
 begin
  Readln(F,S);          {читать файл F в строку S}
  if not (S='')  then    {если S не пустая строка то}
   Begin
    n:=0;
    For i:=1 to Length(S) do
    if S[i]=' ' then inc(N);
    if N<>Length(S) then writeln(f1,copy(s,1,80));
   end;
 end;
 Close(F);
 Close(F1);
 readln;
End.
0
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 34
14.11.2012, 21:35  [ТС] 3
Цитата Сообщение от Puporev Посмотреть сообщение
Pascal
1
2
if S[i]=' ' then inc(N);
 if N<>Length(S) then writeln(f1,copy(s,1,80));
В N накапливаем количество пробелов и если N равно S то значит строка состоит из пробелов и ее не копируем, а Вы копируете.
0
424 / 424 / 338
Регистрация: 25.06.2012
Сообщений: 668
14.11.2012, 23:33 4
Цитата Сообщение от trane133 Посмотреть сообщение
В N накапливаем количество пробелов и если N равно S то значит строка состоит из пробелов и ее не копируем, а Вы копируете.
А теперь еще раз внимательно прочитай строчку кода. Особенно обрати внимание на знак <>.
Pascal
1
if N<>Length(S) then writeln(f1,copy(s,1,80));
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2012, 23:33
Помогаю со студенческими работами здесь

Если длина строки больше 10 - оставить первые 6 символов, иначе дополнить строку символами 'о'
Дана строка.Если ее длина больше 10,то оставить в строке только первые 6 символов,иначедополнить...

Записать в другой файл все строки, длина которых больше 5 символов
Дан текстовый файл. Записать в другой файл все строки, длина которых больше 5 символов. Помогите...

Если ее длина больше 10, то оставить в строке только первые 6 символов, иначе дополнить строку символами 'o' до длины
Дана строка. Если ее длина больше 10, то оставить в строке только первые 6 символов, иначе...

Записать в текстовый файл все слова длина которых больше девяти символов
Записать в текстовый файл все слова длина которых больше девяти символов. Выполнить через процедуру


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru