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

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

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

 
 Ответить  Открыть новую тему 
> Множества, Сколько в тексте символов совпадающих с
Ирина
сообщение 7.11.2004 15:15
Сообщение #1





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

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


Проверьте кто может правильность задачи.

1. Ввести с клавиатуры текст до символа точки и слово из латинских букв. Определить, сколько в тексте содержится символов, совпадающих с символами в слове.

Пишу такой программный код:
Код
program Symbol;
uses crt;
type alf='a'..'z';
var
str1, str2: string;
ch: char;
i, n: integer;
a: alf;
begin
clrscr;
n:=0;
writeln('Введите любое предложение на английском языке и поставьте в конце точку.'); readln(a);
n:=Pos('.',str1);
if n=0 then
begin
writeln('Ошибка входных данных.');
readln;
exit;
end;
writeln('Введите любое слово и нажмите <ENTER>');
begin
read(ch);
i:=1;
if ch in a then n:=n+1;  
end;
end;
writeln;
writeln('Количество символов слова, совпавших с символами в предл'); readln(n);
repeat until keipressed;
end;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 7.11.2004 15:21
Сообщение #2


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

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


Во второй половине проги - бред. Требуется "доделка".

Уж если используете символьную переменную Ch, то может тогда имеет смысл использовать и функцию ReadKey.... (это была подсказка)


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 7.11.2004 15:22
Сообщение #3


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

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

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


Ну и что, вы хотите что бы это работало?
По порядку:
Цитата
writeln('Введите любое предложение на английском языке и поставьте в конце точку.'); readln(a);
n:=Pos('.',str1);

Естественно, если бы программа запустилась, то в результате работы, выполнилось бы условие:
Код
if n=0 then
begin
writeln('Ошибка входных данных.');
readln;
exit;
end;


Т.к. переменная str1 не определенна ранее...

Код
end;
end;

Один END явно лишний...
Код
if ch in a

Несоответствие типов...
Цитата
Во второй половине проги - бред. Требуется "доделка".

Если честно, бред во всей программе!

Сообщение отредактировано: Oleg_Z - 7.11.2004 15:23


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





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

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


Переменная str1 определена:

Код

var
str1, str2: string;


А как быть с несоответствием типов?

Код

if ch in a
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 7.11.2004 15:47
Сообщение #5


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

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


Цитата
Переменная str1 определена:

Не очень точно было сказано.
Переменная str1 - не имеет начального значения.

Именно, и на момент проверки ее, она (строка) имеет вид:
''
т.е. у нее нет элементов. Oleg_Z


Сообщение отредактировано: Oleg_Z - 7.11.2004 15:48


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 7.11.2004 15:47
Сообщение #6


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

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

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


Я имел ввиду ,что в процессе работы программы она не была изменена.
Вот работающая программа:
Код
Uses CRT;
Var
S:string;
SLOVO:string;
C,i:BYTE;
D:char;
SUMM:word;
Begin
CLRSCR;
writeln('‚ўҐ¤ЁвҐ «оЎ®Ґ ЇаҐ¤«®¦Ґ­ЁҐ ­   ­Ј«Ё©бЄ®¬ п§лЄҐ Ё Ї®бв ўм⥠ў Є®­жҐ в®зЄг.');
Readln(s);
If S[Length(S)]<>'.' then begin writeln('ЋиЁЎЄ  ў®ўе®¤­ле ¤ ­­ле'); halt end;
writeln('‚ўҐ¤ЁвҐ «оЎ®Ґ б«®ў® Ё ­ ¦¬ЁвҐ <ENTER>');
SLOVO:='';
Repeat
 C:=ORD(readkey);
 If c<>13 then begin SLOVO:=SLOVO+CHR(C); write(CHR(c)) end;
Until C=13; Writeln;
For D:='a' to 'z' do
begin
 If (POS(D,SLOVO)<>0) then
 begin
  For i:=1 to Length(s) do If s[i]=D then INC(SUMM);
 End;
end;
writeln(SUMM);
end.

Кодировка ДОС (866).
Если есть вопросы, спрашивайте.
Цитата
А как быть с несоответствием типов?

А зачем вам использовать вообще множество?


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


Гость






Ирина

1.
Цитата
Переменная str1 определена

Переменная - то определена, но не инициализирована...

2.
Код

type alf='a'..'z';
var a: alf;
...
writeln('Введите любое предложение на английском языке и поставьте в конце точку.'); readln(a);
...

каким образом Вы хотите ввести строку в переменную, которая может принять только один символ?

3.
Цитата
А как быть с несоответствием типов

Не путать типы с переменными ...
 К началу страницы 
+ Ответить 
Altair
сообщение 7.11.2004 15:55
Сообщение #8


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

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

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


Цитата
Переменная - то определена, но не инициализирована...

Да, именно так.
Цитата
каким образом Вы хотите ввести строку в переменную, которая может принять только один символ?

там много подобных странностей... думаю нет смылса обсуждать это, тем более что код уже есть...

обратите внимание на красивый цикл:
For D:='a' to 'z'
Почему -то очень редко это используют ... вообще мало кто использует возможности Паскаля хотя бы на 50 % ИХМО


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





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

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


У меня эта задача на тему "множества".
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 7.11.2004 15:57
Сообщение #10


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

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

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


Т.е. в программе должно использоваться множество, так?
Сейчас исправим... smile.gif :D ;) rolleyes.gif


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


Гость






Код

var
 s, str1: string;
 count, lettCount: word;
 sentence, letters: set of char;
 i: byte;
begin
 write( 'enter any sentence ...> ' );
 readln(str1);

 if pos('.', str1) = 0 then
   begin
     writeln('illegal data');
     readln; exit
   end;

 for i := 1 to length(str1) do
   sentence := sentence + [ str1[i] ];

 count := 0;
 write( 'any word >' ); readln(s);
 for i := 1 to length(s) do
   if not (s[i] in letters) then
     begin
       letters := letters + [s[i]];
       if s[i] in sentence then inc( count );
     end;

 writeln( 'total counter = ', count );

end.


:p2:

Сообщение отредактировано: volvo - 7.11.2004 16:03
 К началу страницы 
+ Ответить 
Altair
сообщение 7.11.2004 16:06
Сообщение #12


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

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

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


Так лучше?
Код
Uses CRT;

Var
SIMV:set of CHAR;
S:string;
SLOVO:string;
C,i:BYTE;
D:char;
SUMM:word;
Begin
CLRSCR;
writeln('‚ўҐ¤ЁвҐ «оЎ®Ґ ЇаҐ¤«®¦Ґ­ЁҐ ­   ­Ј«Ё©бЄ®¬ п§лЄҐ Ё Ї®бв ўм⥠ў Є®­жҐ в®зЄг.');
Readln(s);
If S[Length(S)]<>'.' then begin writeln('ЋиЁЎЄ  ў®ўе®¤­ле ¤ ­­ле'); halt end;
writeln('‚ўҐ¤ЁвҐ «оЎ®Ґ б«®ў® Ё ­ ¦¬ЁвҐ <ENTER>');
SLOVO:='';
Repeat
 C:=ORD(readkey);
 If c<>13 then begin SLOVO:=SLOVO+CHR(C); write(CHR(c)) end;
Until C=13; Writeln;

For i:=1 to length(slovo) do
begin
 D:=s[i];
 Include(SIMV,D);
end;


For i:=1 to length(s) do
begin
 If s[i] in SIMV then INC(SUMM)
end;
writeln(SUMM);
end.


да елки зеленые, volvo опять опередил smile.gif

Сообщение отредактировано: Oleg_Z - 7.11.2004 16:07


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





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

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


Спасибо, огромное спасибо!
Вы очень выручили!
Я только начинаю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 8.11.2004 12:27
Сообщение #14


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

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

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


Приятно было помочь! Заходите к нам еще! rolleyes.gif


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


Бывалый
***

Группа: Пользователи
Сообщений: 247
Пол: Мужской

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


Цитата(Oleg_Z @ 7.11.04 23:55)
обратите внимание на красивый цикл:
For D:='a' to 'z'
Почему -то очень редко это используют ... вообще мало кто использует возможности Паскаля хотя бы на 50 % ИХМО

Вообще-то если вместо in использовать такие циклы очень сильно снижается быстродействие - здесь у нас будет 26 итераций максимум, и 13 в среднем, а in работает оч. быстро (потому и стоит на него 1-байтовое ограничение). итого более чем в 13 раз быстрее с множествами делать...


--------------------
In byte we trust
ICQ World.ru
mail[dog]digitalator[dot]com
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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