Задача о товарах, организовать базу данных |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
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 - Прикрепленные файлы PACTIKA1_2.PAS ( 10.83 килобайт ) Кол-во скачиваний: 289 |
volvo |
Сообщение
#2
|
Гость |
Во-первых, для того, чтобы это могло работать, массив goods должен быть заполнен, следовательно, перед выбором пункта №2 требуется выбрать пункт меню №1...
Ну, а второе - зачем же использовать метод Copy+Paste, если возможно решить задание значительно короче (и эффективнее), используя функциональные типы (я в FAQ-е по записям показывал пример, как это сделать)... Кстати, ты назвал ту запись, которая используется в программе, вариантной? Это не так, она вариантной не является (кстати, с действительно вариантной записью решение будет еще проще)... |
Текстовая версия | 23.12.2024 20:10 |