2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:13 


21/06/09
171
Сформировать массив, имеющий следующую структуру:
struct игрушка=struct название:char [ ];
цена:int;
цвет:char [ ];
возраст1:1..16;
end;
и определить:
· название игрушек, которые подходят детям данного возраста;
· найти самую дешевую игрушку данного цвета;

код: [ скачать ] [ спрятать ]
Используется синтаксис C
#include<stdio.h>
 #include<string.h>
 struct toy {int price;
             char color[10];
             int age;
             char name[10];
            };
 int vvod( struct toy  toys[10],int n)
    {  int i;
       printf("\n введите количество игрушек");
       scanf("%d",&n);
         for(i=0;i<n;i++)
       { printf("\n введите название игрушки ");
         scanf("%s",&toys[i].name);
         printf("\n введите цвет игрушки");
         scanf("%s",&toys[i].color);
         printf("\n введите цену");
         scanf("%d",&toys[i].price);
         printf("\n введите возраст");
         scanf("%d",&toys[i].age);
       }
       return n;
     }
 void vyvod (struct toy  toys[10],int n)
    {  int i;
       for(i=0;i<n;i++)
printf("\n название %s,цвет %s,цена %d,возраст %d",toys[i].name, toys[i].color,toys[i].price,toys[i].age);
    }


 void vozrast( struct toy   toys[10],int n )
   { int i,c;
     printf("\n введите возраст ребенка");
  scanf("%d",&c);
     for(i=0;i<n;i++)
      { if(toys[i].age==c )
         printf("\n игрушка для возраста %d \t название=%s\n",c,toys[i].name);
      }
    }
 void cena ( struct toy  toys[10],int n)
    { char p[10];
      int i,min,a;
      printf("\n введите цвет игрушки");
      scanf("%s",&p);
      min=0;
      for(i=0;i<n;i++)
        { if (strcmp(toys[i].color,p)==0)
          { min=toys[i].price;
            a=i;
            break;
          }
        }
      if(min!=0)
        { for(i=0;i<n;i++)
            { if((toys[i].color==p)&&(toys[i].price < min))
              { min=toys[i].price;
                a=i;
              }
            }
          printf("\n самая дешевая игрушка %s цвета %s и ее цена %d\n",p,toys[a].name,min);
        }
      else        printf("\n игрушки данного цвета нет");
    }
 void main()
 { struct toy toys[10];
 int p,t,n;
   p=1;
   while(p==1)
   { printf("\n меню:");
     printf("\n 1-ввод");
     printf("\n 2-вывод");
     printf("\n 3-игрушка для данного возраста");
     printf("\n 4-самая дешевая игрушка данного цвета");
     printf("\n введите пункт");
     scanf("%d",&t);

     switch(t)
      { case 1 : n=vvod( toys,n);
        break;
       case 2 : vyvod( toys,n);
        break;
       case 3 : vozrast( toys,n);
        break;
       case 4 : cena( toys,n);
        break;
       default: p=3;
        break;
     }
    }
  }

 Профиль  
                  
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:19 
Заслуженный участник


09/08/09
3438
С.Петербург
В чём ошибка-то проявляется?

 Профиль  
                  
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:21 


21/06/09
171
Цитата:
{ for(i=0;i<n;i++)
{ if((toys[i].color==p)&&(toys[i].price < min))

выдает здесь ошибку, я уже заработался что-то понять не могу в чем дело

 Профиль  
                  
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:24 
Заслуженный участник


09/08/09
3438
С.Петербург
vanja в сообщении #260172 писал(а):
выдает здесь ошибку
Какую ошибку?

 Профиль  
                  
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:26 
Заслуженный участник


28/04/09
1933
vanja
Строки в C сравниваются с помощью функции strcmp(), а не таким варварским способом.

 Профиль  
                  
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:28 
Заслуженный участник


09/08/09
3438
С.Петербург
И зачем Вы указатели сравниваете? Вам же значения в массивах сравнивать надо.

-- Пн ноя 09, 2009 17:29:08 --

EtCetera в сообщении #260174 писал(а):
Строки в C сравниваются с помощью функции strcmp(), а не таким варварским способом.

Там чуть выше правильное сравнение есть :)

 Профиль  
                  
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:36 
Заслуженный участник


28/04/09
1933
Maslov
Maslov в сообщении #260175 писал(а):
Там чуть выше правильное сравнение есть :)
Извиняюсь, не заметил. :oops: Впрочем, текст программы я благополучно пролистнул и зацепился только вот за это:
vanja в сообщении #260172 писал(а):
Код:
toys[i].color==p

Кстати, vanja, код программы лучше окружать тегом [code] (5-ая слева кнопка над полем ввода нового сообщения).

 Профиль  
                  
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:42 


21/06/09
171
EtCetera в сообщении #260186 писал(а):
Maslov
Maslov в сообщении #260175 писал(а):
Там чуть выше правильное сравнение есть :)
Извиняюсь, не заметил. :oops: Впрочем, текст программы я благополучно пролистнул и зацепился только вот за это:
vanja в сообщении #260172 писал(а):
Код:
toys[i].color==p

что не так то? :( не могу понять

 Профиль  
                  
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:45 
Заслуженный участник


28/04/09
1933
vanja
Вы отчетливо чувствуете разницу между
Код:
toys[i].color==p
и
Код:
strcmp(toys[i].color, p) == 0
?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group