2 Страницы  1 2 >  
Ответить Создать тему

Pascal , Обработка символьных данных на Pascal

Теги: PASCAL
SoRK666
post Jan 24 2011, 10:18 
Отправлено #1


Продвинутый

Сообщений: 186



Задание № 1 «Обработка символьных данных»

Выполнить на ЭВМ программу обработки символьных данных в соответствии с вариантом. Предусмотреть ввод исходных данных как с клавиатуры, так и из файла.
Вариант: В тексте из 200 символов подсчитать количества гласных "О" и "Э" отдельно для каждой буквы.

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

Исходный код
program asd;
uses crt;
const
       bo=['Э','э'];
       be=['О','о'];
var
       s: string;
       o,e,i:integer;
       men,p: char;
       f: file of char;
Begin
       clrscr;
       o:=0;  e:=0;
       writeln('Нажмите "f" для загрузки строки из файла');
       writeln('Нажмите "s" для ввода строки с клавиатуры');
       men:=readkey;
       if men='s' then  begin
              write('Введите строку> ');
              readln(s);
              for i:= 1 to length(s) do
                      if s[i] in bo then inc(o) else if s[i] in be then inc(e);
              writeln('Букв "Э"  ',e);
              writeln('Букв "О"  ',o);
       end;
       if men='f' then
              begin
              s:=0;
              assign(f,'1.txt');
              reset(f)
              while (not eof(f)) or (s<=200) do
              begin
                      read(f,p);
                      if p in bo then inc(o) else if p in be then inc(e);
              end;
              writeln('Букв "Э"  ',e);
              writeln('Букв "О"  ',o);
       end;

       readkey;
end.


Сообщение отредактировал Snowm@n - Apr 10 2011, 12:25
Profile CardPM
  0/0  
LINO
post Jan 24 2011, 10:42 
Отправлено #2


Митька

Сообщений: 833
Из: С того берега крыши



Исходный код
...
while (not eof(f)) or (s<=200) do
             begin
                     read(f,p);
                     if p in bo then inc(o) else if p in be then inc(e);
                     inc(s)
             end;
....

Как минимум забыли счётчик в цикле увеличивать smile.gif

Сообщение отредактировал LINO - Jan 24 2011, 10:42

--------------------
Крыша хлопает в ладоши
Всем спасибо-план хороший.
Profile CardPM
  0/0  
Snowm@n
post Jan 24 2011, 10:44 
Отправлено #3


O_o

Сообщений: 1 037



Цитата
while (not eof(f)) or (s<=200) do
Что за ерунда? while not eof(f) вполне достаточно. Тем более s:string, оно вообще не скомпилируется.
Исходный код
f:text;


Сообщение отредактировал Snowm@n - Jan 24 2011, 10:45

--------------------
Developer -> Lead Developer -> Lead Architect -> ... ?
Profile CardPM
  0/0  
SoRK666
post Jan 24 2011, 10:58 
Отправлено #4


Продвинутый

Сообщений: 186



чет все равно прога не аллё
может ещё кто нибудь знаешь в чем тут проблема
Profile CardPM
  0/0  
Volan
post Jan 24 2011, 11:15 
Отправлено #5


Постоялец

Сообщений: 229



А еще файл бы хорошо закрывать по завершении надобности... close(f);
Profile CardPM
  0/0  
SoRK666
post Jan 24 2011, 11:47 
Отправлено #6


Продвинутый

Сообщений: 186



Цитата(Volan @ Jan 24 2011, 11:15)
А еще файл бы хорошо закрывать по завершении надобности... close(f);
*

и толку от этого?
по идее не обязательно.
чет все перепробовал ничего все по нулям выдает =(
Profile CardPM
  0/0  
foo-bar
post Jan 24 2011, 11:59 
Отправлено #7


Активный

Сообщений: 1 370



Цитата(SoRK666 @ Jan 24 2011, 11:47)
и толку от этого?
по идее не обязательно.
*
Система конечно сама закроет, но хороший тон закрывать их явно.
Profile CardPM
  0/0  
Pasha_K
post Jan 24 2011, 12:02 
Отправлено #8


Активный

Сообщений: 22 051



т.е. все ок, все компилится, запускается, но не считает?
содержимое файла 1.txt покажите, штоли...
Profile CardPM
  0/0  
SoRK666
post Jan 24 2011, 12:07 
Отправлено #9


Продвинутый

Сообщений: 186



Немного исправил но все равно не считает.
Исходный код
program asd;
uses crt;
const
       bo=['Э','э'];
       be=['О','о'];
var
       s: string;
       o,e,i:integer;
       men,p: char;
       f: text;
Begin
       clrscr;
       o:=0;  e:=0;
       writeln('Нажмите "f" для загрузки строки из файла');
       writeln('Нажмите "s" для ввода строки с клавиатуры');
       men:=readkey;
       if men='s' then  begin
              write('Введите строку> ');
              readln(s);
                      for i:= 1 to length(s) do
                      if s[i] in bo then inc(o) else if s[i] in be then inc(e);
              writeln('Букв "Э"  ',e);
              writeln('Букв "О"  ',o);
       end;
       if men='f' then
       begin
              assign(f,'1.txt');
              reset(f);
              while not eof(f) do
              readln(f,p);
              end;
              begin
                      for i:=1 to length(s) do
                      if s[i] in bo then inc(o) else if s[i]  in be then inc(e);

              writeln('Букв "Э"  ',e);
              writeln('Букв "О"  ',o);
              end;

       readkey;
end.


В текстовом файле вот просто это написал
1.txt
ооооээээ
Profile CardPM
  0/0  
SoRK666
post Jan 24 2011, 12:16 
Отправлено #10


Продвинутый

Сообщений: 186



что то я совсем намудрил =( с этим файлом
Profile CardPM
  0/0  
Pasha_K
post Jan 24 2011, 12:20 
Отправлено #11


Активный

Сообщений: 22 051



файл чем создавали? кодировкой там все нормально?
Profile CardPM
  0/0  
SoRK666
post Jan 24 2011, 12:21 
Отправлено #12


Продвинутый

Сообщений: 186



блокнотом просто
кстати да изменил кодировку и все норм, но правда считает не правильно

Сообщение отредактировал SoRK666 - Jan 24 2011, 12:23
Profile CardPM
  0/0  
foo-bar
post Jan 24 2011, 12:23 
Отправлено #13


Активный

Сообщений: 1 370



Цитата(Pasha_K @ Jan 24 2011, 12:02)
т.е. все ок, все компилится, запускается, но не считает?
*
Компилируется и запускается еще не означает работает smile.gif
Profile CardPM
  0/0  
foo-bar
post Jan 24 2011, 12:26 
Отправлено #14


Активный

Сообщений: 1 370



Ваш цикл чтения файла (f - файл, p - символ):
Цитата(SoRK666 @ Jan 24 2011, 12:07)
Исходный код
while not eof(f) do
 readln(f,p);
end;
*

Ваш цикл обработки (s - обрабатываемая строка):
Цитата(SoRK666 @ Jan 24 2011, 12:07)
Исходный код
for i:=1 to length(s) do
 if s[i] in bo then inc(o) else if s[i]  in be then inc(e);
*

Теперь попробуйте ответить на вопрос: как в вашей программе содержимое файла попадает в строку s?

Сообщение отредактировал foo-bar - Jan 24 2011, 12:29
Profile CardPM
  0/0  
SoRK666
post Jan 24 2011, 12:29 
Отправлено #15


Продвинутый

Сообщений: 186



Цитата(foo-bar @ Jan 24 2011, 12:26)
Ваш цикл чтения файла (f - файл, p - символ):
Ваш цикл обработки (s - обрабатываемая строка):
Теперь попробуйте ответить на вопрос: как в вашей программе содержимое файла попадает в строку s?
*


Посмотри первый пост лучше, а во втором я намудрил что то
Profile CardPM
  0/0  

2 Страницы  1 2 >
ОтветитьTopic Options
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
Быстрый ответ
Кнопки кодов
 Расширенный режим
 Нормальный режим
    Закрыть все тэги


Открытых тэгов: 
Введите сообщение
Смайлики
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
smilie  smilie  smilie  smilie  smilie 
         
Показать все

Опции сообщения