![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Tony_Bil |
![]()
Сообщение
#1
|
Гость ![]() |
Помогите пожалуста доделать програму, а то у меня почему то не работает поиск в моей базе данных при нажатии 2:
'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'); n:=readkey; case n 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; goto search; end;{if} writeln('There is no such thing in data base!'); 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; flag1:=true; goto next1; end;{if} if not flag 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 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':} Сообщение отредактировано: Tony_Bil - 23.06.2007 15:14 Прикрепленные файлы ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Во-первых, для того, чтобы это могло работать, массив goods должен быть заполнен, следовательно, перед выбором пункта №2 требуется выбрать пункт меню №1...
Ну, а второе - зачем же использовать метод Copy+Paste, если возможно решить задание значительно короче (и эффективнее), используя функциональные типы (я в FAQ-е по записям показывал пример, как это сделать)... Кстати, ты назвал ту запись, которая используется в программе, вариантной? Это не так, она вариантной не является (кстати, с действительно вариантной записью решение будет еще проще)... |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 10:26 |