С Новым годом! Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 34

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

13.11.2012, 23:45. Показов 2007. Ответов 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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.11.2012, 23:45
Ответы с готовыми решениями:

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

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

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

3
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
14.11.2012, 13:10
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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  [ТС]
Цитата Сообщение от 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
 Аватар для Reveng
424 / 424 / 338
Регистрация: 25.06.2012
Сообщений: 668
14.11.2012, 23:33
Цитата Сообщение от trane133 Посмотреть сообщение
В N накапливаем количество пробелов и если N равно S то значит строка состоит из пробелов и ее не копируем, а Вы копируете.
А теперь еще раз внимательно прочитай строчку кода. Особенно обрати внимание на знак <>.
Pascal
1
if N<>Length(S) then writeln(f1,copy(s,1,80));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.11.2012, 23:33
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru