Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 3
Регистрация: 02.02.2012
Сообщений: 73

Определить, есть ли определённое лекарство заданных производителей по цене, не более заданной

16.03.2012, 15:38. Показов 1958. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как исправить ошибку в программе. Нужно сформировать запрос по массиву строк "Лекарства. Аптеки". Нужно определить, есть ли определённое лекарство заданных производителей по цене, не более некоторой заданной.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#define n 100
char g_buffer[225];
char *rus(char *str,char *buff)
{
    if(str==buff)
    {return NULL;}
    CharToOem(str,buff);
    return buff;
}
 
int main()
{
    int w=0,m;
    double x;
    do
    {
        system("cls");
        printf("%s",rus("Введите количество наименований лекарств: ",g_buffer));
        scanf("%d",&m);
        char s[m][n],s1[m][n],*srv,*word,*nazv,*nazv2,*pro,*pro2;
        int i,flag[m],f;
        double c;
        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]);
                }
            printf("\n");
            printf("\n");
            printf("%s",rus("\nПовторить запрос с заданным лекарством? Esc-нет, другая клавиша- да.\n",g_buffer));
            free(nazv);
            free(nazv2);
            free(srv);
            free(word);
            free(pro);
            free(pro2);
            for(i=0;i<m;i++)
                flag[m]=0;
            }while (getch()!=27);
        printf("%s",rus("\nВыход? Esc-да, другая клавиша-нет.\n",g_buffer));
    }while (getch()!=27);
    return 0;
}
Эта программа проводит сравнение только по цене, а должна ещё и по названию и по производителю. Подскажите, пожалуйста, что исправить в этой программе. Заранее СПАСИБО!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.03.2012, 15:38
Ответы с готовыми решениями:

Определить, есть ли участки длины, содержащие определенное количество точек
ломаная задана точками (x,y) имеются n других точек определить есть ли участки длины &lt;=l содержащие &gt;=m точек

Определить количество заданных символов в заданной строке
Нужно определить количество заданных символов в заданной строке. Помогите найти ошибку(ки). #include &lt;stdio.h&gt; #include...

Определить есть буквы в других заданных словах
Вводится слово-образец. Затем вводится список слов (не более 100). Определите слова, в которых нет хотя бы одной буквы из слова-образца....

2
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
16.03.2012, 15:44
Цитата Сообщение от СергейАС Посмотреть сообщение
Эта программа проводит сравнение только по цене, а должна ещё и по названию и по производителю.
C
1
if ( /* сравнили по цене */ && /* названию */ && /* производителю */ )
Что именно не выходит?
Предоставте именно кусок программу, где сравнение, весь код не нужен. Только объявление типов и т.д.
0
1 / 1 / 3
Регистрация: 02.02.2012
Сообщений: 73
16.03.2012, 15:59  [ТС]
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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," -\"!?");
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.03.2012, 15:59
Помогаю со студенческими работами здесь

Определить, есть ли среди заданных трех чисел равные
Даны три произвольных числа. Определить, есть ли среди них равные и вывести соответствующее сообщение. Посчитать сколько равных? ...

Определить, есть ли в заданных трехзначных числах одинаковые цифры
Дано два трехзначных числа. Определить, есть ли у них одинаковые цифры. Вывести YES если есть и NO в противном случае Входные данные 481...

Определить, есть ли у двух заданных трехзначных чисел одинаковые цифры
Дано два трехзначных числа. Определить, есть ли у них одинаковые цифры. Вывести YES, если есть и NO - в противном случае....

Определить, есть ли среди трех заданных имен/фамилий нужные
Даны три фамилии Р1, Р2, Р3 и три имени М1, М2, М3 соответственно фамилиям. Определить, есть ли среди них фамилия и имя Р4 М4. ...

Определить максимальное из чисел встречающихся в заданной матрице более одного раза
Я решил задачу: Дана целочисленна прямоугольная матрица. Определит максимальное из чисел встречающихся в заданной матрице более одного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru