Несколько задач на работу с файлами и строками., 3 небольших задачи. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Несколько задач на работу с файлами и строками., 3 небольших задачи. |
Jaxx |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 145 Пол: Мужской Реальное имя: Павел Репутация: 0 |
1.Текст программы на Паскале хранится в файле на диске. Составить программу обработки текста программы: а)определить максимальную степень вложенности циклов в программе; б)определить общее количество строк и количество символов, отличных от пробела; в)удалить из текста программы все комментарии.
2.Текст программы на Паскале хранится в файле на диске. Составить программу обработки текста программы: а)первые буквы служебных слов сделать заглавными; б)текст комментария заменить на номер комментария по порядку; в)переписать текст программы в новый файл с минимальным количеством пробелов, сохранив их только там, где они необходимы. 3.Текст программы на Паскале хранится в файле на диске. Распечатать на экране текст программы таким образом, чтобы в каждой строке размещался только один оператор. Организовать смещение операторов относительно операторных скобок, как это принято в Паскале. Помогите сделать какую-нибудь одну ! -------------------- - Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные.
|
Altair |
Сообщение
#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. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Текстовая версия | 20.04.2024 21:46 |