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

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

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

 
 Ответить  Открыть новую тему 
> Использование типа-record, Формирование записи и её обработка
Гость_anka
сообщение 9.04.2004 19:52
Сообщение #1


Гость






--------------------------------------------
Сформировать запись "Операторы Турбо Паскаля":оператор, действие.
Подсчитать их количество и количество операторов имеющих повторяющиеся ключевые слова.
---------------------------------------------
Код

Program xxx;
Uses crt;
Type
   operators=record
         oper:string;
         deis:string;
         end;
Var
  z:array [1..24] of operators;
  i:byte;
  f1:text;
  n:string;
Begin
CLRSCR;
assign(f1,'c:\ttp\db.dat');
reset(f1);
{*}
for i:=1 to 12 do
begin
readln(f1,z[i].oper);
readln(f1,z[i].deis);
end;
{**}
writeln('Введите оператор:');
readln(n);
for i:=1 to 12 do
if n=z[i].oper then write('Оператор ',n,'-',z[i].deis,'');
readln
end.

Файл db.dat-содержит 24 строки, где 1строка -оператор,2-действие оператора.
Как сделать чтоб программа подсчитывала кол-во операторов, и кол-во операторов имеющих повторяющиеся ключевые слова?

Сообщение отредактировано: Oleg_Z - 10.04.2004 14:09
 К началу страницы 
+ Ответить 
Altair
сообщение 10.04.2004 14:08
Сообщение #2


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

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

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


Цитата
Файл db.dat-содержит 24 строки, где 1строка -оператор,2-действие оператора.
Как сделать чтоб программа подсчитывала кол-во операторов, и кол-во операторов имеющих повторяющиеся ключевые слова?


====Количество операторов====

1) файл точно текстовый? (может он типизированный- file of operators ?) или это без разницы?
2) если есть 12 строк с операторами, то зачем их подсчитывать???
А если там максимум может быть 12 операторов, то считаем их так:
сначала считываем их в массив (у вас это есть - стоит между * и ** )
потом проверяем, пуста ли строка (если нет, значит оператор есть, иначе больше нет операторов)
Код

{вставить этот код после ** }
{от 1 до 12 - если строка не пуста, значит увеличить кол-во операторов, иначе - выйти из цикла}
for i:=1 to 12 do If z[i].oper<>'' then inc(maxoperators) else exit;
{теперь в пер. maxoperators- кол-во операторов}

3) Зачем вам массив z из 24 элементов? надо 12 элементов (ведь у вас массив записей, а их максимум 12)
4) не очень понимаю, что значит "действие оператора" -поясните пожалуйста на примере
5) что такое повторяющиеся ключевые слова? (или ключ. слова- это тоже, что и действия)
6) сколько у 1 оператора может быть действий (1 или нет? )
====
пожалуйста ответьте на эти вопросы, и мы попробуем сделать 2 часть задания (кол-во повтор. ключ. слов)


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


Гость






1)Нет это обычный файл.
2)подсчёт потому что, третья часть задания - это дополнить программу заполнением и обработкой файла(т.е. запись файла db.dat из программы)
4)Пример:
Вводим "case"(первая строка в файле db.dat), в ответ программа пишет -"оператор выбора, которая в зависимости от значения какого-либо выражения выполнить те или иные выражения"(вторая строка в файле)...и т.д. 1строка-оператор,2-пояснение что делает этот оператор.
5)У операторов могут повторяться ключевые слова.
---------------------------------
 К началу страницы 
+ Ответить 
Altair
сообщение 11.04.2004 19:36
Сообщение #4


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

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

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


Так, хорошо, а где мы ищем ключевые слова:
1)В операторах, например:
while do
case of
for to do
- количество операторов в данном случае с повтор. словами буде 2 (ключевое слово do)
2) В действиях, например:
while do
цикл с предусловием ...
case of
оператор выбора ...
for to do
цикл с постусловием
- тогда тоже 2 , но ключевое слово мы искали в дейсвиях (описании оператора)
и ключевое слово, в данном случае- ЦИКЛ


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


Гость






Если я правильно поняла:
1-ключевые слова в операторах
 К началу страницы 
+ Ответить 
Altair
сообщение 12.04.2004 14:58
Сообщение #6


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

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

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


Ну вот попробуйте:
(если будут вопросы - задавайте)
(В присоед. файле - файл DB.DAT - на котором я тестировал эту программу)
Код
Program OperatorsTurboPascal;
Uses crt;
Type
  operators=record
 oper:string;
 deis:string;
 end;
Var
 z:array [1..12] of operators;  {¬ ббЁў ®ЇҐа в®а®ў}
 i:byte;
 f1:text;
 n:string;
 MaxOperators:byte; {Є®«-ў® ®ЇҐа в®а®ў}

Procedure KluchSlova(a:array of operators; n:byte;var n1,n2:byte);
{‚л§®ў нв®© Їа®жҐ¤гал: KluchSlova(z,MaxOperators,MaxOper1,MaxOper2); }
Var
I,k:byte;
MO1,MO2:byte;
s:string;
Begin
{Є«озҐўлҐ б«®ў , Є®в®алҐ ўбваҐз овбп ў ®ЇҐа в®а е вгаЎ®-Ї бЄ «п:
 do (for to do, while do)
 end (record ... end,  begin ... end)
 }
mo1:=0; mo2:=0;
For i:=1 to n do
begin
 s:='';
 s:=a[i].oper;
 k:=1;
 for k:=1 to ORD(s[0]) do
 begin
  If (s[k]='d') and (s[k+1] ='o') then MO1:=MO1+1;
  If (s[k]='e') and (s[k+1] ='n') and (s[k+2]='d') then INC(MO2,1)
 end
end;
n1:=mo1;
n2:=mo2
end;

Var
n1,n2:byte;

Begin
CLRSCR;
assign(f1,'C:\DB.DAT');
reset(f1);
for i:=1 to 12 do
begin
 readln(f1,z[i].oper);
 readln(f1,z[i].deis);
 If z[i].oper<>'' then inc(MaxOperators);
end;
writeln('Љ®«ЁзҐбвў® ®ЇҐа в®а®ў = ',MaxOperators);
{Є®«-ў® ®ЇҐа в®а®ў б Ї®ўв®а. Є«оз. б«®ў ¬Ё}
KluchSlova(z,MaxOperators,n1,n2);
Writeln('Љ®«ЁзҐбвў® ®ЇҐа в®а®ў, Ё¬ҐойЁе Ї®ўв®апой. б«®ў® DO :',n1);
Writeln('Љ®«ЁзҐбвў® ®ЇҐа в®а®ў, Ё¬ҐойЁе Ї®ўв®апой. б«®ў® END:',n2);
write('‚ўҐ¤ЁвҐ ®ЇҐа в®а: '); readln(n);
for i:=1 to 12 do if n=z[i].oper then write('ЋЇҐа в®а ',n,'-',z[i].deis,'')

end.


Что-то довольно странно.
Задача на записи, а просят найти слова.
Если что-то не так, то пожалуйста напишите все задание, так , как оно вам было заданно (слово в слово)

Сообщение отредактировано: Oleg_Z - 12.04.2004 14:58


Прикрепленные файлы
Прикрепленный файл  DB.DAT ( 113 байт ) Кол-во скачиваний: 1


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


Новичок
*

Группа: Пользователи
Сообщений: 19

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


Спасибоsmile.gif

Сообщение отредактировано: annna - 16.04.2004 6:45
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость_anka
сообщение 16.04.2004 6:43
Сообщение #8


Гость






Спасибо, всё работаетsmile.gif. Запись заключается в последней части задания-это дополнить программу заполнением и обработкой файла(т.е. запись файла db.dat из программы)...точно не знаю, но может стоит добавить в программу, что если введённый оператор в базе не найден, то программа записывается его в файл db.dat ,а так же требует ввести действие этого оператора(ну и тоже записывает)...но возможно ли это...а задание полностью написанно в первом сообщении, буква в букву...
 К началу страницы 
+ Ответить 

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

 



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