2014 dxdy logo

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

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




 
 помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:13 
Сформировать массив, имеющий следующую структуру:
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 
В чём ошибка-то проявляется?

 
 
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:21 
Цитата:
{ for(i=0;i<n;i++)
{ if((toys[i].color==p)&&(toys[i].price < min))

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

 
 
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:24 
vanja в сообщении #260172 писал(а):
выдает здесь ошибку
Какую ошибку?

 
 
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:26 
vanja
Строки в C сравниваются с помощью функции strcmp(), а не таким варварским способом.

 
 
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:28 
И зачем Вы указатели сравниваете? Вам же значения в массивах сравнивать надо.

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

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

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

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

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

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

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

 
 
 
 Re: помогите найти ошибку в программе на структуры
Сообщение09.11.2009, 17:45 
vanja
Вы отчетливо чувствуете разницу между
Код:
toys[i].color==p
и
Код:
strcmp(toys[i].color, p) == 0
?

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group