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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2012, 13:15   #1
СергейАС
Пользователь
 
Регистрация: 31.10.2011
Сообщений: 14
Восклицание Массив строк (си)

Нужно сформировать запрос по массиву строк "Лекарства. Аптеки". Нужно определить, есть ли определённое лекарство заданных производителей по цене, не более некоторой заданной. Программа сравнивает только по цене. Подскажите как исправить программу, чтобы сравнивать по всем критериям.
Заранее спасибо!!!
Код:
for(i=0;i<m;i++)
			flag[m]=0;
		printf("%s",rus("\nВведите лекарство по образцу:\n",g_buffer));
		printf("%s",rus("<Название> <Страна-производитель> <Дата произв-ва> <Аптеки(№)> <Цена> \n",g_buffer));
		fflush(stdin);
		for(i=0;i<m;i++)
			gets(s[i]);
		do
		{
			pro=(char*)calloc(n,sizeof(char));
			pro2=(char*)calloc(n,sizeof(char));
			word=(char*)calloc(n,sizeof(char));
			nazv2=(char*)calloc(n,sizeof(char));
			srv=(char*)calloc(n,sizeof(char));
			nazv=(char*)calloc(n,sizeof(char));
			fflush(stdin);	
			for(i=0;i<m;i++)
				flag[m]=0;
			system("cls");
			printf("%s",rus("\nВаш товар: \n",g_buffer));
			for(i=0;i<m;i++)
			{
				puts(s[i]);
			}
			printf("\n");
			printf("\n");
			do
			{
				printf("%s",rus("\nВведите название лекарства: ",g_buffer));
				gets(nazv);
			}while(*nazv=='\0');
			do
			{
				printf("%s",rus("\nВведите производителя: ",g_buffer));
				gets(pro);
			}while(*pro=='\0');
			printf("%s",rus("\nВведите заданную цену: ",g_buffer));
			scanf("%lf",&c);
			for(i=0;i<m;i++)
				strcpy(s1[i],s[i]);
			for(i=0;i<m;i++)
			{
				w=0;
				strcpy(srv,s1[i]);
				word=strtok(srv," -\"!?");
				while(word!=NULL)
				{
					w++;
					x=atof(word);
					strcpy(nazv2,word);
					strcpy(pro2,word);
				switch(w)
				{
					case 1:if (strcmp(nazv,nazv2)==0){flag[i]=1;}break;	
					case 2:if (strcmp(pro,pro2)==0){flag[i]=1;}break;
					case 5:if ((x<=c)&&(flag[i]==1)) {flag[i]=1;}else flag[i]=0;break;
				}
				word=strtok(NULL," -\"!?");
				}
			}
			//проверка
			f=0;
			for(i=0;i<m;i++)
				if(flag[i]==1)
					f=1;
			if(!f)
				printf("%s",rus("\nПо вашему запросу ничего не найдено!",g_buffer));
			else
				printf("%s",rus("\nВаш товар:\n",g_buffer));
			for(i=0;i<m;i++)
				if(flag[i]==1)
				{
					puts(s[i]);
				}

Последний раз редактировалось ACE Valery; 18.03.2012 в 13:55.
СергейАС вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать массив строк в массив чисел на C#? orfos Помощь студентам 4 03.10.2014 15:56
Массив строк. Смородинка Общие вопросы C/C++ 11 21.11.2010 17:21
Массив строк Siluet Помощь студентам 2 30.05.2009 07:38