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

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

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

 
 Ответить  Открыть новую тему 
> Задача из 7 урока от Дмитриева Эдуарда., Вопрос по решению задачи.
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






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


Гость






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


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

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

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


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

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


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


-
****

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

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


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


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


Новичок
*

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

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


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


Гость






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

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

 





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