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

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

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

> Форматирование исходников, Паскаль-программ
Jaxx
сообщение 6.04.2005 12:26
Сообщение #1


Пионер
**

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

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


Вот я опять и появился. Теперь у меня задание еще более интересное. Смысл следующий: есть текстовый файл с исходником программы на Паскале, нужно-
1) первые буквы служебных слов сделать заглавными
2) текст комментариев заменить на их номер по порядку
3) переписать текст в новый файл с удалением лишних пробелов.
Я понимаю, что тут может быть только один путь решения: создать массив (или множество) служебных слов, затем считывать текст файла посимвольно (т.к. служебные слова обязательно должны быть отделены от других пробелами или знаками препинания). Я прав? С комментариями попроще: просто найти символ '{' и проверить следующий после него, и если это не '$' то удалить все символы начиная с этого до символа '}'. Удаление пробелов еще проще. Но с первой частью задания у меня небольшие трудности. Решайте! :yes:

В следующий раз давайте более подходящий заголовок


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


Пионер
**

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

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


А вот так:

uses crt;
const
znak:array[1..14] of byte=(9,10,13,32,40,41,44,46,47,58,59,92,123,125);
var
slovo:array[1..51] of string[15];
{mass:array[1..51] of string;}
mask:array[1..51] of byte;
txt:array[1..60000] of char;
kol:byte;
ns:byte;
f1:text;
f:file of char;
simv:char;
flag:boolean;
j:byte;
n:byte;
dtxt:word;
i:word;
s,s1,temp:string;
begin
clrscr;
write('Vvedite ymia ishodnogo faila: ');
readln(s);
assign(f,s);
{$I-} reset(f); {$I+}
 if ioresult<>0 then begin
    writeln('file not found or read error!');
    readkey;
    close(f);
    halt(1);
 end;
i:=1;
for i:=1 to 51 do mask[i]:=0;
i:=1;
slovo[1]:='and';slovo[2]:='asm';slovo[3]:='array';slovo[4]:='begin';slovo[5]:='case';
slovo[6]:='const';slovo[7]:='constructor';slovo[8]:='destructor';slovo[9]:='div';slovo[10]:='do';
slovo[11]:='downto';slovo[12]:='else';slovo[13]:='end';slovo[14]:='exports';slovo[15]:='file';
slovo[16]:='for';slovo[17]:='function';slovo[18]:='goto';slovo[19]:='if';slovo[20]:='implementation';
slovo[21]:='in';slovo[22]:='inherited';slovo[23]:='inline';slovo[24]:='interface';slovo[25]:='label';
slovo[26]:='library';slovo[27]:='mod';slovo[28]:='nil';slovo[29]:='not';slovo[30]:='object';
slovo[31]:='of';slovo[32]:='or';slovo[33]:='packed';slovo[34]:='procedure';slovo[35]:='program';
slovo[36]:='record';slovo[37]:='repeat';slovo[38]:='set';slovo[39]:='shl';slovo[40]:='shr';
slovo[41]:='string';slovo[42]:='then';slovo[43]:='to';slovo[44]:='type';slovo[45]:='unit';
slovo[46]:='until';slovo[47]:='uses';slovo[48]:='var';slovo[49]:='while';slovo[50]:='with';slovo[51]:='xor';
 write('Vvedite imia novogo faila: ');
 readln(s1);
 assign(f1,s1);
 {$I-} rewrite(f1); {$I+}
  if ioresult<>0 then begin
     writeln('error writing file!');
     readkey;
     close(f1);
     halt(1);
  end;
  s:=''; s1:=''; temp:='';
  kol:=0;
  n:=0;
while not eof(f) do begin
  read(f,simv);
  inc(dtxt);
  ns:=ord(simv);
  txt[dtxt]:=chr(ns);
   for i:=1 to dtxt do begin
       ns:=ord(txt[i]);
       flag:=true;
       for j:=1 to 14 do begin
       if ns=znak[j] then flag:=false;
         if flag then s:=s+txt[i];
        for n:=1 to 51 do begin
          if s=slovo[n] then begin
            mask[n]:=kol+1;
            i:=1;
            for i:=1 to 51 do begin
              n:=i;
              if mask[n]>0 then begin
               write('Slovo : ' ,slovo[n]);
               writeln('vstrechaetsia : ',mask[n],' raz');
               s1:=slovo[n];
               writeln(f1,s1);
              end;
             end;
           end;end;end;end;end; {<== ЗДЕСЬ ПРОГРАММА ОСТАНАВЛИВАЕТСЯ НАМЕРТВО, ВЫХОЖУ ctrl+break}
readln;
close(f);
close(f1);
end.


sad.gif


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

Сообщений в этой теме
Jaxx   Форматирование исходников   6.04.2005 12:26
volvo   Посмотри вот эту мою программку... Программа форм...   6.04.2005 12:33
Jaxx   Насчет (* *) я знаю. Тут смысл будет такой же, тол...   6.04.2005 12:44
volvo   А ты в курсе, что есть Nested Comments, что усложн...   6.04.2005 13:03
Jaxx   Ладно, я все понял. Условие задачи остается началь...   6.04.2005 13:23
Altair   Jaxx, привет! Почти год тебя не было! С во...   6.04.2005 14:38
Jaxx   Привет и тебе, OlegZ !!! :thanks: У м...   6.04.2005 16:30
Jaxx   Я тут вот чего-то написал, правда нифига не работа...   7.04.2005 14:57
Jaxx   Ну так что, никто мне не поможет?! Скажите, в ...   12.04.2005 14:09
volvo   Jaxx, ты ходил по первой ссылке, которую я тебе да...   12.04.2005 14:22
Jaxx   А в моём варианте проги, кроме заполнения массива ...   13.04.2005 16:02
Altair   А зачем разбивать на слова? вот еще способ без раз...   12.04.2005 14:54
volvo   :no: "Во всех зарезервированных словах, зап...   12.04.2005 15:02
Jaxx   Между прочим, OlegZ, твоя программа работает непра...   12.04.2005 16:27
volvo   Oleg_Z, вот и ответ на твой вопрос:   12.04.2005 16:45
Jaxx   Вот в этом то и моя проблема. Как проверить, являе...   12.04.2005 17:05
volvo   Ты меня понимать не хочешь? Я же тебе привел ссылк...   12.04.2005 17:30
volvo   Кстати, если функцию progwork, написанную Oleg_Z ч...   12.04.2005 18:30
Altair   Ну раскритиковали :) Я шаблон для рассуждений дал ...   13.04.2005 14:13
volvo   :blink: А ты проверь, работает она, или нет. Если ...   13.04.2005 16:11
Jaxx   Я и так знаю, что она не работает. :unsure: И воо...   13.04.2005 16:17
Jaxx   А почему не пашет такой вариант: Uses CRT; var z...   15.04.2005 15:51
volvo   Возьмем вот эти 2 цикла: for i:=1 to 51 do    ko...   15.04.2005 16:59
Jaxx   А вот так: uses crt; const znak:array[1..14] of ...   19.04.2005 14:36
volvo   А здесь - я прогнал пошагово... Посмотри вниматель...   19.04.2005 14:57
Jaxx   Да я бы взял, но хочется понять, где я допускаю о...   19.04.2005 15:54
Romtek   Не сочтите за оффтоп, но есть готовые программы фо...   19.04.2005 21:09
Jaxx   Вот только с примерами всего-то 40 Мб :p2:   20.04.2005 13:50
Romtek   Вот исходник и ЕХЕ вместе.   20.04.2005 16:30


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

 



- Текстовая версия 21.07.2025 11:23
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"