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

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

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

 
 Ответить  Открыть новую тему 
> Задача из 7 урока от Дмитриева Эдуарда., Вопрос по решению задачи.
fizik
сообщение 22.08.2004 16:33
Сообщение #1


Гость






В 7 уроке есть такая задачка, где надо ввести 10 символов и проверить, можно ли из них составить введенное слово.Я написал программу, но у меня она почему то работает некорркектно.Вот код:
Код

Program Puzzle_1;
Uses Crt;
Label zx;
Var
x: Array[1..10] of char;
a,b,c:byte;
s:string;
begin
ClrScr;
Write('Vvedite 10 bukv :');
For a:=1 to 10 do
   begin
   Write(a,') ');
   Readln(x[a]);
   end;
Write('vvedite slovo: ');
Readln(s);
For a:=1 to length(s) do
   Repeat
   Inc(b);
   If b>10 then goto zx;
   If s[a]=x[b] then
      begin
      Inc(c);
      x[b]:='#';
      end;
   Until s[a]=x[b];
zx:
If c=length(s)
Then Write('Iz bukv mozhno sostavitj dannoje slovo!')
Else write('Iz bukv nelzja sostavitj dannoje slovo!');
Readln;
end.

Кстати, почему если я начале вместо Write(a,') ');Readln(x[a]); пишу Write(' ',a,' )');Read(x[a]); , то уменя вместо того, чтобы считывать буквы в строку, прог-а выводит какую-то туфту.
P.S. Заодно, если кому не лень, предложите еЩе варианты решения этой задачи.

Сообщение отредактировано: fizik - 22.08.2004 17:04
 К началу страницы 
+ Ответить 
APAL
сообщение 22.08.2004 17:47
Сообщение #2


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

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

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


Код

Uses Crt;
Var
x: Array[1..10] of char;
a,b:byte;
s:string;

Function CheckChInSt(Ch :Char) : Boolean;
Var c : Byte;
Begin
CheckChInSt:=False;
For c:=1 to 10 do
If Ch=x[c] then CheckChInSt:=True;
End;

begin
ClrScr;
Write('Vvedite 10 bukv :');
For a:=1 to 10 do
begin
 Write(a,') ');
 Readln(x[a]);
end;
Write('vvedite slovo: ');
Readln(s);
For a:=1 to Length(s) do
 If CheckChInSt(s[a]) then Continue else
   Begin
     write('Iz bukv nelzja sostavitj dannoje slovo!');
     Halt(0);
   End;
Write('Iz bukv mozhno sostavitj dannoje slovo!')
end.


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


Гость






Туфту оно тебе выдаёт, потому что Read пытается считать выведенное Write'ом значение.
 К началу страницы 
+ Ответить 
fizik
сообщение 28.08.2004 19:43
Сообщение #4


Гость






Новый вариант мне понравился.Но я хочу знать:А в чем у меня была ошибка?( т.е. Почему прога работает неправильно.)
 К началу страницы 
+ Ответить 
APAL
сообщение 29.08.2004 9:47
Сообщение #5


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

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

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


В твоем варианте не очень проработан алгоритм.
Например с переменной b какой-то бред. Она у тебя работает только один раз - ты ее не скидываешь в ноль после первого и последующего прохода цикла
Код
For a:=1 to length(s)
Попробуй еще раз с самого начала сам написать. И не забывай задавать начальные значение переменным, т.е. b:=0; c:=0; а то ты их INC'ом изменяешь, но какое у них было начальное значение??? (а может быть любое)

И постарайся не использовать GOTO - это плохой тон.


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


-
****

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

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


Вы ещё подеритесь за использование Goto <_<


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Werwolf86
сообщение 14.09.2004 18:46
Сообщение #7


Новичок
*

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

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


APAL Совершенно верно. использование Goto - мешает отладке программы
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 14.09.2004 19:38
Сообщение #8


Гость






Если б кто это про JMP сказал - вот я бы смеялся smile.gif
 К началу страницы 
+ Ответить 

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

 

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