![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Гость_anka |
![]() ![]()
Сообщение
#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 |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Цитата Файл 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 часть задания (кол-во повтор. ключ. слов) -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Гость_anka |
![]()
Сообщение
#3
|
Гость ![]() |
1)Нет это обычный файл.
2)подсчёт потому что, третья часть задания - это дополнить программу заполнением и обработкой файла(т.е. запись файла db.dat из программы) 4)Пример: Вводим "case"(первая строка в файле db.dat), в ответ программа пишет -"оператор выбора, которая в зависимости от значения какого-либо выражения выполнить те или иные выражения"(вторая строка в файле)...и т.д. 1строка-оператор,2-пояснение что делает этот оператор. 5)У операторов могут повторяться ключевые слова. --------------------------------- |
Altair |
![]()
Сообщение
#4
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Так, хорошо, а где мы ищем ключевые слова:
1)В операторах, например: while do case of for to do - количество операторов в данном случае с повтор. словами буде 2 (ключевое слово do) 2) В действиях, например: while do цикл с предусловием ... case of оператор выбора ... for to do цикл с постусловием - тогда тоже 2 , но ключевое слово мы искали в дейсвиях (описании оператора) и ключевое слово, в данном случае- ЦИКЛ -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Guest |
![]()
Сообщение
#5
|
Гость ![]() |
Если я правильно поняла:
1-ключевые слова в операторах |
Altair |
![]()
Сообщение
#6
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Ну вот попробуйте:
(если будут вопросы - задавайте) (В присоед. файле - файл 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 Прикрепленные файлы -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
annna |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Репутация: ![]() ![]() ![]() |
Спасибо
![]() Сообщение отредактировано: annna - 16.04.2004 6:45 |
Гость_anka |
![]()
Сообщение
#8
|
Гость ![]() |
Спасибо, всё работает
![]() |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 13:32 |