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

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

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

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


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

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

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


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

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


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


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

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

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


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





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

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


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

Код

var
str1, str2: string;


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

Код

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


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

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

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


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

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

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


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


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


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

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

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


Гость






Ирина

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

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

2.
Код

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

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

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

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


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

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

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


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

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

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

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


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





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

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


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


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

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

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


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


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


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

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

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


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





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

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


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


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

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

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


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


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

 





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