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

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

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

 
 Ответить  Открыть новую тему 
> Использование типа-record, Формирование записи и её обработка
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

Репутация: -  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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






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


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

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

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


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


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


Гость






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


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

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

Репутация: -  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 -


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


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


Новичок
*

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

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


Спасибоsmile.gif

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


Гость






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

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

 





- Текстовая версия 1.10.2020 21:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name