Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2011, 19:48   #1
pashka_dos
Пользователь
 
Аватар для pashka_dos
 
Регистрация: 19.11.2011
Сообщений: 83
Сообщение не получается решить задачу

Привет, помогите, пожалуйста, решить задачку.
Задача: Программа выбирает слово и рисует на экране столько знаков вопроса сколько букв в слове в каждый ход играющий указывает 1 букву. Если названа буква, входящая в состав слова, она подставляетсявместо соответствующего знака вопроса.

вот код, но он работает не правильно - не выходит из цикла и если в слове есть одинаковые буквы ("паскаль" - 2 буквы "а") то рисует только одну.
может кто найдёт ошибку?

Код:
program igra_v_slovo;
uses crt;
var s,s1:string;
    a:char;
    mode,len,i:integer;
begin
clrscr;
randomize;
writeln('Программа "Игра в Слова"');writeln;
mode:=random(2);
case mode of
     0: s:='паскаль';
     1: s:='строка';
end;

len:=length(s);

for i:=1 to len do s1[i]:='?';


repeat
      begin
           for i:=1 to len do write(s1[i]); writeln;

           write('Введите символ...'); readln(a);

           for i:=1 to len do
               if s[i] = a then s1[i]:=a
                           else
                               begin
                                    writeln('Вы не угадали!'); break;
                               end;
      end;

until s=s1;

readln;
end.
pashka_dos вне форума Ответить с цитированием
Старый 27.12.2011, 20:15   #2
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Во-первых, у вас есть ошибка - после получения длины строки s, вы не установили длину строки s1, нужно так - SetLength(s1,len);
Во-вторых, локализацию выбери английскую. Он у тебя русские символы не понимает.
Вот рабочий вариант -
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  s,s1:string;
  a:char;
  check:boolean;
  mode,len,i:integer;
begin
  s1:='';
  check:=false;
  randomize;
  writeln('the game in words!!!');
  writeln;
  mode:=random(2);
  case mode of
    0: s:='programmers';
    1: s:='hackers';
  end;
  len:=length(s);
  SetLength(s1,len);
  for i:=1 to len do
    s1[i]:='?';
  repeat
    begin
      for i:=1 to len do
        write(s1[i]);
      writeln;
      write('Input the symbol - ');
      readln(a);
      for i:=1 to len do
        if s[i] = a then
        begin
          s1[i]:=a;
          check:=True;
        end;
      if check then
        Writeln('Yes!!!')
      else Writeln('No!');
      check:=False;
    end;
  until s=s1;
readln;
end.
Помог - жми на весы!
ByAlex89@mail.ru

Последний раз редактировалось ByAlex; 27.12.2011 в 20:23.
ByAlex вне форума Ответить с цитированием
Старый 27.12.2011, 20:24   #3
pashka_dos
Пользователь
 
Аватар для pashka_dos
 
Регистрация: 19.11.2011
Сообщений: 83
Сообщение

Цитата:
Сообщение от ByAlex Посмотреть сообщение
Во-вторых, локализацию выбери английскую. Он у тебя русские символы не понимает.
простите не понял кто он и какая локализация?

Последний раз редактировалось pashka_dos; 27.12.2011 в 20:26.
pashka_dos вне форума Ответить с цитированием
Старый 27.12.2011, 20:28   #4
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от pashka_dos Посмотреть сообщение
простите не понял кто он и какая локализация?:co nfused:
Т.е. слова выбирай на английском! Программа не понимает русские символы!
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 27.12.2011, 20:30   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Паскаль АВС
Код:
uses crt;
var
buf,str:string;
i:integer;
c:char;
begin
str:='паскаль';
buf:='';
for i:=1 to length(str) do
buf:=buf+'+';
repeat
clrscr;
writeln(buf);
writeln('Буква?');
readln(c);
for i:=1 to length(str) do
if str[i]=c then buf[i]:=c;
until buf=str;
clrscr;
writeln(buf);
writeln;
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 27.12.2011, 20:30   #6
pashka_dos
Пользователь
 
Аватар для pashka_dos
 
Регистрация: 19.11.2011
Сообщений: 83
По умолчанию

Цитата:
Сообщение от ByAlex Посмотреть сообщение
Т.е. слова выбирай на английском! Программа не понимает русские символы!
разабрался спасибо большое!!!
pashka_dos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу решить задачу в с++ все перебрала и не получается(((((( yulja-uk Помощь студентам 12 02.12.2011 23:54
Не получается режить задачу про матрицы в с++ yulja-uk Помощь студентам 1 02.12.2011 22:14
не получается написать на С++ задачу на строки MAX_150275 Помощь студентам 3 13.05.2011 20:41
Помогите решить задачу, вообще не получается.... Рустем Паскаль, Turbo Pascal, PascalABC.NET 9 16.01.2009 02:15
Помогите пожалуйста решить задачу!Очень нужно у самой не получается! Lilu Monechi Помощь студентам 2 19.05.2008 19:38