IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Несколько задач на работу с файлами и строками., 3 небольших задачи.
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 145
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


1.Текст программы на Паскале хранится в файле на диске. Составить программу обработки текста программы: а)определить максимальную степень вложенности циклов в программе; б)определить общее количество строк и количество символов, отличных от пробела; в)удалить из текста программы все комментарии.
2.Текст программы на Паскале хранится в файле на диске. Составить программу обработки текста программы: а)первые буквы служебных слов сделать заглавными; б)текст комментария заменить на номер комментария по порядку; в)переписать текст программы в новый файл с минимальным количеством пробелов, сохранив их только там, где они необходимы.
3.Текст программы на Паскале хранится в файле на диске. Распечатать на экране текст программы таким образом, чтобы в каждой строке размещался только один оператор. Организовать смещение операторов относительно операторных скобок, как это принято в Паскале.
Помогите сделать какую-нибудь одну !


--------------------
- Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


первая пока
Код
{
1.Текст программы на Паскале хранится в файле на диске. Составить программу
обработки текста программы:
+ а)определить максимальную степень вложенности циклов в программе;
б)определить общее количество строк и количество символов,отличных от пробела;
в)удалить из текста программы все комментарии.
}
Program Format_Text_Program_Pascal;
Uses CRT;
var
F,f2:text; {файл с текстом программы}
filename:string; {путь к файлу}
s:string; {читаемая строка из файла}
NZ,i,ii,j,k,stringys,charsys:byte;
z:boolean;
c:char;
koment:boolean;
{-------------------}
Function UpStr(S:String):String; {перевод строки в верхний регистр}
Var I:Byte;
Begin
For I:=1 To ORD(S[0]) Do
Begin
 Case S[I] Of
  'a'..'z':S[I]:=Chr(Ord(S[I])-$20);
  'а'..'п':S[I]:=Chr(Ord(S[I])-$20);
  'р'..'я':S[I]:=Chr(Ord(S[I])-$50)
 End
End;
UpStr:=S
End;
{PROGRAM BEGIN ...}
Begin
repeat
 ClrScr;
 Writeln('Введите путь к файлу');
 readln(filename);
 Assign(f,filename);
 {$I-} Reset(f); {$I+}
until IOResult=0;  {повторяем если произошла ошибка}
While NOT EOF(F) do
begin
 ReadLn(f,s);
 Inc(stringys);
 {Ищем символы исчитаем их}
 For k:=1 to Ord(s[0]) do If s[k]<>' ' then inc(chsrsys);
 {для избежания ошибок приводим строку к верхнему регистру}
 s:=UpStr(s);
 For I:=1 to ORD(S[0]) do
 begin
  If ((s[i]='F') and (s[i+1]='O') and (s[i+2]='R')) or
     ( (s[i]='W') and (s[i+1]='H') and (S[i+2]='I') and (s[i+3]='L')
        and (s[i+4]='E')) or
     ( (s[i]='R') and (S[i+1]='E') and (S[I+2]='P') and (S[I+3]='E')
        and (s[i+4]='A') and (s[i+5]='T') then
  begin
   {Значит цикл "открылся"}
   j:=i+1;   {запомним, где цикл отрылся, а на 1 больше, чтобы потом заново
   его не посчитать }  Inc(NZ); {увелич. счетчик вложенности циклов}
   For ii:=j to ORD(s[0]) do
   begin
    If ((s[ii]='E') and (s[ii+1]='N') and (s[ii+2]='D')) or
       ((s[ii]='U') and (S[ii+1]='N') and (S[ii+2]='T') and
        (s[Ii+3]='I') and (s[ii+4]='L')) then
    begin
     {цикл "закрылся"}
     Dec(NZ)
    end
   end
  end
 end
end; CLose(F);
Writeln('Информация о файле . . . . . . . . . . . . . .',filename);
Writeln('Вложенность циклов равна . . . . . . . . . . .',NZ);
Writeln('Колическво строк равно . . . . . . . . . . . .',stringys);
Writeln(Количество символов, отличных от пробела равно ',charsys);
Writeln('-------------------------------------------------------');
writeln;
writeln('сейчас файл будет перезаписан - из него будут удалены коментарии');
Assign(f2,'datafile.tmp');
Rewrite(f2);
Reset(f);
While not Eof(f) do
begin
 read(f,c);
 If c= '{' then  koment:=true;
 If (c=('}') and (koment=true) then koment:=false;
 If koment=false then write(f,c)
end;
Close(f); Close(f2);
Erase(f);
Rename(f2,filename);
Writeln('Программа выполнена.');
end.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Jaxx   Несколько задач на работу с файлами и строками.   28.04.2004 18:46
APAL   Первая, на мой взгляд, самая простая. А циклы в не…   29.04.2004 13:18
Jaxx   Я думаю, что нужна степень вложенности по каждому …   30.04.2004 18:07
Altair   первая пока { 1.Текст программы на Паскале хранитс…   15.05.2004 2:00
APAL   Комментарии могут еще обозначаться так: (* cv…   15.05.2004 13:33
Altair   Да, вот это проблемма, я забыл про это. (Кто же до…   15.05.2004 13:54
Jaxx   Я думаю, что комментарии типа (* *) можно не учит…   15.05.2004 14:36
Altair   Ну тогда как следует протестируйте эту прогу, я ее…   15.05.2004 17:47
trminator   (*************************************** * Т…   15.05.2004 22:44
P@sh@   Oleg_Z несколько замечаний... 1. интересно, а что…   15.05.2004 23:01
Altair   1. Да он не правильно посчитает. 2. не уверен, над…   15.05.2004 23:35
P@sh@   а я люблю компактность + читабельность, поэтому лу…   16.05.2004 1:10
Jaxx   у меня вообще со всем проблемы (если это кого-то и…   16.05.2004 1:13
P@sh@   короче, надо кроме for и while считать еще и begin…   16.05.2004 1:14
P@sh@   форматирование текста по ширине путем вставки проб…   16.05.2004 1:22
Jaxx   это для вас задача элементарная. а мне месяц мучен…   16.05.2004 1:37
Altair   Задачи еще никого не кусали и не убивали :) Про…   16.05.2004 11:18
GLuk   А насчет вложенности циклов никаких реализаций кро…   17.05.2004 0:22
Altair   Согласен с вами. Я думаю, что если бы это задание…   17.05.2004 10:19
GLuk   Oleg_Z: Обращайся ко мне пожалуйста на ТЫ, на ВЫ к…   18.05.2004 1:26
APAL   GLuk, скорее всего имется в виду "красивое…   18.05.2004 15:29
Jaxx   Господин APAL прав. Именно это и означает смещение…   18.05.2004 19:02
GLuk   Ну если хватит и одной, лови... Надеюсь удаление …   20.05.2004 5:17


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 21:46
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name