Помощь в задаче

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Помощь в задаче

Сообщение Tony_Bil » 24.06.2007 14:33:38

Помогите пожалуста в задаче, а то у меня почемуто не правильно работает поиск, при нажатии клавиш все время надпись "There is no such thing in database".

Код: Выделить всё
'2': begin
        clrscr;
        search:
        writeln;
        writeln('n - search for name');
        writeln('m - search for model');
        writeln('g - search for giver');
        writeln('y - search for year');
        writeln('c - search for colour');
        writeln('p - search for processor');
        writeln('r - search for memory');
        writeln('e - exit to main menu');
        p:=readkey;
        case p of
          'n':begin
              write('Enter name of one of the goods: ');
              readln(a);
              for k:=1 to n-1 do
                with goods[k] do
                  if Name=a then
                    begin
                    thing;
                    flag1:=true;
                    goto next1;
                    end;{if}

              if not flag1 then  writeln('There is no such thing in data base!');
              goto search;

              next1:
                for q:=k+1 to n-1 do
                with goods[q] do
                if name=a then monitor(q);
                goto search;
              end;{'n':}

          'm':begin
              write('Enter model of the thing:');
              readln(a);
              for k:=1 to n-1 do
                with goods[k] do
                  if model=a then
                    begin
                    thing;
                    flag3:=true;
                    goto next3;
                    end;{if}
              if not flag then writeln('There is no such thing in data base!');
              goto search;

              next3:
              for q:=k+1 to n-1 do
                with goods[q] do
                  if model=a then monitor(q);
              goto search;
              end;{'m':}
          'g':begin
              write('Enter giver of one of the goods: ');
              readln(a);
              for k:=1 to n-1 do
                with goods[k] do
                  if giver=a then
                    begin
                    thing;
                    goto search;
                    end;{if}
              writeln('There is no such thing in data base!');
              goto search;
              end;{'g':}

          'y':begin
              write('Enter year of the car: ');
              readln(a);
              for k:=1 to n-1 do
                with goods[k] do
                if year=a then
                  begin
                  thing;flag2:=true;
                  goto next;
                  end;{if}
              if not flag then writeln('There is no such car in data base!');
              goto search;

              next:
              for q:=k+1 to n-1 do
                with goods[q] do
                  if year=a then monitor(q);
                  goto search;
              end;{'y':}

          'c':begin
              write('Enter colour of the car: ');
              readln(a);
              for k:=1 to n-1 do
                with goods[k] do
                if colour=a then
                  begin
                  thing;
                  goto search;
                  end;{if}
              writeln('There is no such car in data base!');
              goto search;
              end;{'c':}

          'p':begin
              write('Enter type of the processor of the computer: ');
              readln(a);
              for k:=1 to n-1 do
                with goods[k] do
                if processor=a then
                  begin
                  thing;
                  goto search;
                  end;{if}
              writeln('There is no such computer in data base!');
              goto search;
              end;{'p':}

          'r':begin
              write('Enter type of the memory of the computer: ');
              readln(a);
              for k:=1 to n-1 do
                with goods[k] do
                if memory=a then
                  begin
                  thing;
                  goto search;
                  end;{if}
              writeln('There is no such computer in data base!');
              goto search;
              end;{'r':}

          'e':begin
              clrscr;
              goto start;
              end;{'e':}
          else
            begin
            clrscr;
            writeln('You pressed wrong key! Try again.');
            goto search;
            end;{else:}
        end;{case n}
        end;{'2':}

учимся использовать тег [ code ]
Tony_Bil
незнакомец
 
Сообщения: 1
Зарегистрирован: 24.06.2007 14:25:08

Сообщение Replicator » 24.06.2007 15:09:21

А форматировать код не учили? Есть же тег [code]! Ну не возможно же такой код читать!!!
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Сообщение v-t-l » 24.06.2007 18:21:59

Правильно-ли вводишь данные для поиска? У тебя сравнение - регистрозависимое.
Использовать goto не есть хорошо. :)
v-t-l
энтузиаст
 
Сообщения: 740
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение Replicator » 25.06.2007 13:22:13

Возможно, в массиве хранятся строки с символами #13#10 в конце. Попробуй сделать что-то вроде trim() перед сравнением.
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Сообщение v-t-l » 25.06.2007 20:00:37

Совет: Учитесь пользоваться отладчиком.
v-t-l
энтузиаст
 
Сообщения: 740
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru
cron