| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Помогите с поиском |
| Автор: Aidar 20.5.2007, 09:04 |
| Поиск не работает... надо сделать по названию товара и вывести всю информацию о нём.... #include <conio.h> #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <string.h> char *Rus(char *s); struct PRICE { char shop[15]; // магазин char name[15]; // Товар int sum; // Цена } mm[8]; PRICE* find(PRICE* beg, char* name, PRICE** prev); void find_man(PRICE* beg); void get_name(char* name); int main(void) { struct PRICE x; int n, i, j, k, l, r, m ; // индексы в массиве char e; for (n=0; n<3; n++){ printf("%d.",n+1); printf(Rus("Введите: Магазин - ")); scanf("%s",&mm[n].shop); printf(Rus("Введите: Товар - ")); scanf("%s",mm[n].name); if (!strcmp(mm[n].name,"***")) break; printf(Rus("Введите: Цену - ")); scanf("%d",&mm[n].sum); } printf("|----------------------------------------------|\n"); printf(Rus("| Прайс |\n")); printf("|----------------------------------------------|\n"); printf(Rus("| Магазин | Товар | Цена |\n")); printf("|----------------------------------------------|\n"); for (i=0; i<n; i++){ printf("| %9s |%9s | %5d|\n", mm[i].shop, mm[i].name, mm[i].sum ); } printf("------------------------------------------------\n"); /* сортировка массива */ for (i=0; i<n-1; i++) { m=i; // минимальный элемент - первый for (j=i+1; j<n; j++) if (strcmp(mm[m].name, mm[j].name)>0) m=j; if (m>i) { strcpy(x.name,mm[i].name); strcpy (x.shop,mm[i].shop); x.sum=mm[i].sum; strcpy(mm[i].name,mm[m].name); strcpy (mm[i].shop,mm[m].shop); mm[i].sum=mm[m].sum; strcpy(mm[m].name,x.name); strcpy (mm[m].shop,x.shop); mm[m].sum=x.sum; } } printf("|----------------------------------------------|\n"); printf(Rus("| Прайс |\n")); printf("|----------------------------------------------|\n"); printf(Rus("| Магазин | Товар | Цена |\n")); printf("|----------------------------------------------|\n"); for (i=0; i<n; i++){ printf("| %9s |%9s | %5d|\n", mm[i].shop, mm[i].name, mm[i].sum ); } printf("------------------------------------------------\n"); /* поиск не работает*/ printf(Rus("Введите: Товар - ")); scanf("%s",&e); if (strstr(mm[i].name, mm[i].name)) if (mm->name[strlen(mm[i].name)] == ' ') { printf("| %9s |%9s | %5d|\n", mm[i].shop, mm[i].name, mm[i].sum ); getch();} } char *Rus(char *s) { static char buff[1000]; CharToOem(s, buff); return buff; } |
| Автор: Klin 20.5.2007, 11:25 |
| Aidar, во первых пользуйтесь кнопкой кода, во вторых вам в центр помощи. Добавлено через 2 минуты и 38 секунд да и в-третьих - не билдер это |
| Автор: Palladin 20.5.2007, 14:58 | ||
| А в третьих вот тебе совет: Если не можеш сделать нормально делай не нормально, но так чтоб на выходу был нужный результат, короче слушай алгоритм 1) Кидаеш на форму едит(штук пять сколько там тебе надо хз)+кидаеш едит поиска 2) Блокируеш кнопку ввести запись пока не записан в едит поиска искомая инфа 3) Кидаеш на форму два мемо 4) в первый мемо заносиш все записи 5) во второй только те в который едит с фамилией равен едиту поиска Ну а по существу, ничег ов твоем задании сложного нет такчто делай сам или в центр помощи гони, я так мельком заметил что у тебя структуры, дак тогда вообще проще некуда, заносиш в переменную искомую фамилию, потом по циклу просматриваеш массив твоей структуры и если запись фамилиии по какомоту индексу равно фамилии поиска выводиш всю инфу по этому индексу, вот типа пример кода:
эт не точный код, т..к писал на форуме и не проверял, но вроде покатит, если что пиши |