Продам - дачу, д. Ягудары, Садовое товарищес - 250 000 р. |
Сдам - однокомнатную квартиру, Энергетиков, 17 (Жилой дом, 23 эт) - 17 000 р. |
Сдам - однокомнатную квартиру, пр. Максима Горького, 49 (Жилой дом, 6-10 эт) - 16 000 р. |
Продам - пятикомнатную квартиру, Талвира, 14 (Жилой дом, 6-7 эт) - 11 000 000 р. |
|
|
Pascal , Обработка символьных данных на Pascal
•
SoRK666
|
|
Продвинутый
Сообщений: 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
|
|
|
|
LINO
|
|
Митька
Сообщений: 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; ....
Как минимум забыли счётчик в цикле увеличивать Сообщение отредактировал LINO - Jan 24 2011, 10:42
--------------------
Крыша хлопает в ладоши Всем спасибо-план хороший.
|
|
|
|
•
Snowm@n
|
|
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 -> ... ?
|
|
|
|
•
SoRK666
|
|
Продвинутый
Сообщений: 186
|
чет все равно прога не аллё может ещё кто нибудь знаешь в чем тут проблема
|
|
|
|
•
Volan
|
|
Постоялец
Сообщений: 229
|
А еще файл бы хорошо закрывать по завершении надобности... close(f);
|
|
|
|
•
SoRK666
|
|
Продвинутый
Сообщений: 186
|
Цитата(Volan @ Jan 24 2011, 11:15) А еще файл бы хорошо закрывать по завершении надобности... close(f); и толку от этого? по идее не обязательно. чет все перепробовал ничего все по нулям выдает =(
|
|
|
|
•
foo-bar
|
|
Активный
Сообщений: 1 370
|
Цитата(SoRK666 @ Jan 24 2011, 11:47) и толку от этого? по идее не обязательно. Система конечно сама закроет, но хороший тон закрывать их явно.
|
|
|
|
•
Pasha_K
|
|
Активный
Сообщений: 22 051
|
т.е. все ок, все компилится, запускается, но не считает? содержимое файла 1.txt покажите, штоли...
|
|
|
|
•
SoRK666
|
|
Продвинутый
Сообщений: 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 ооооээээ
|
|
|
|
•
SoRK666
|
|
Продвинутый
Сообщений: 186
|
что то я совсем намудрил =( с этим файлом
|
|
|
|
•
Pasha_K
|
|
Активный
Сообщений: 22 051
|
файл чем создавали? кодировкой там все нормально?
|
|
|
|
•
SoRK666
|
|
Продвинутый
Сообщений: 186
|
блокнотом просто кстати да изменил кодировку и все норм, но правда считает не правильно
Сообщение отредактировал SoRK666 - Jan 24 2011, 12:23
|
|
|
|
•
foo-bar
|
|
Активный
Сообщений: 1 370
|
Цитата(Pasha_K @ Jan 24 2011, 12:02) т.е. все ок, все компилится, запускается, но не считает? Компилируется и запускается еще не означает работает
|
|
|
|
•
foo-bar
|
|
Активный
Сообщений: 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
|
|
|
|
•
SoRK666
|
|
Продвинутый
Сообщений: 186
|
Цитата(foo-bar @ Jan 24 2011, 12:26) Ваш цикл чтения файла (f - файл, p - символ): Ваш цикл обработки (s - обрабатываемая строка): Теперь попробуйте ответить на вопрос: как в вашей программе содержимое файла попадает в строку s? Посмотри первый пост лучше, а во втором я намудрил что то
|
|
|
|
|
|
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
|