Нахождение кубиков заданного цвета - найти ошибку - C (СИ)

Узнай цену своей работы

Формулировка задачи:

помогиле найти ошибку в коде!!!! ( ошибку пишет где свич!!!)
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct book
{
char colour [20];
char mater [20];
float dlina;
};
 
int main()
{
int n;
book *lib;
int i;

printf ("Enter kolichestvo kubikov ");
scanf ("%d",&n);
 
lib=(book *)calloc(n,sizeof(book));
printf ("NADO VVESTI ODIN IZ CVETOV^ RED,BLUR,YELLOW,GREEN...\n");
printf ("NADO VVESTI ODIN IZ MATERIALOV^ paper,metal,wood...\n");
printf ("NADO VVESTI RAZMER^ dlina rebra v sm...\n");
 
for (i=0;i<n;i++)
{
 
printf ("\nEnter color %d-go cubika (red,blur,yellow,green) ",i+1); 
scanf ("%s",&lib[i].colour);
 
printf ("\nEnter material %d-go cubika (paper,metal,wood) ",i+1);
scanf ("%s",&lib[i].mater);
 
printf ("\nEnter razmer %d-go cubika (dlina rebra v sm) ",i+1);
scanf ("%d",&lib[i].dlina);
}
int r=0;
int b=0;
int y=0;
int g=0; 
int k=0;

for (k=0;k<n;k++)
{
 
switch (lib[k].colour)
{
case 'RED':
case 'red':
r=r+1;
break; 

case 'blur':
case 'BLUR':
b=b+1;
break;

case 'YELLOW':
case 'yellow':
y=y+1;
break;

case 'GREEN':
case 'green':
g=g+1;
break;

}
 
}

printf("\nChislo RED cubikov - %d",r);
printf("\nChislo BLUR cubikov - %d",b);
printf("\nChislo YELLOW cubikov - %d",y);
printf("\nChislo GREEN cubikov - %d",g);
 
getch();
 
return 0;
}

Решение задачи: «Нахождение кубиков заданного цвета - найти ошибку»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
 
struct book
    {
        char  colour [20];
        char  mater [20];
        float dlina;
    };
    
int main()
{
const char *s1 = "red";
const char *s2 = "blur";
const char *s3 = "green";
const char *s4 = "yellow";
    int n;
    book *lib;
    int i;
   
    
    printf ("Enter kolichestvo kubikov ");
    scanf ("%d",&n);
    
    lib=(book *)calloc(n,sizeof(book));
   printf ("NADO VVESTI ODIN IZ CVETOV^ RED,BLUR,YELLOW,GREEN...\n");
    printf ("NADO VVESTI ODIN IZ MATERIALOV^ paper,metal,wood...\n");
    printf ("NADO VVESTI RAZMER^ dlina rebra v sm...\n");
    
    for (i=0;i<n;i++)
    {
    
        printf ("\nEnter color %d-go cubika (red,blur,yellow,green) ",i+1);        
       scanf ("%s",&lib[i].colour);
        
       printf ("\nEnter material %d-go cubika (paper,metal,wood) ",i+1);
        scanf ("%s",&lib[i].mater);
        
        printf ("\nEnter razmer %d-go cubika (dlina rebra v sm) ",i+1);
        scanf ("%d",&lib[i].dlina);
    }
    int r=0;
     int b=0;
      int y=0;
       int g=0; 
       int k=0;
 
    for (k=0;k<n;k++)
 {
 if (strcmp (lib[k].colour,s1)==0) {r=r+1;}
 else {if (strcmp (lib[k].colour,s2)==0) {b=b+1;}
 else {if (strcmp (lib[k].colour,s3)==0) {g=g+1;}
 else {if (strcmp (lib[k].colour,s4)==0) {y=y+1;}
 } } } 
 
 }
    }
        
    printf("\nChislo RED cubikov - %d",r);
    printf("\nChislo BLUR cubikov - %d",b);
    printf("\nChislo YELLOW cubikov - %d",y);
    printf("\nChislo GREEN cubikov - %d",g);
 
getch();
 
return 0;
}

Объяснение кода листинга программы

  1. В начале программы объявляется структура book, которая содержит поля colour (цвет), mater (материал) и dlina (размер).
  2. Далее, в функции main(), определяются константы s1, s2, s3 и s4, которые представляют цвета и материалы.
  3. Затем, пользователю предлагается ввести количество кубиков, для которых нужно найти информацию.
  4. Выделенная память для массива структур book приводится в соответствие с количеством кубиков, введенным пользователем.
  5. После этого пользователю предлагается ввести цвет, материал и размер для каждого кубика.
  6. Далее, происходит поиск кубиков заданного цвета, используя условные операторы if-else и функцию strcmp() для сравнения строк.
  7. В конце программы выводятся результаты поиска - количество кубиков каждого цвета.
  8. Возможно, стоит добавить проверку на некорректный ввод данных, чтобы избежать ошибок при работе с программой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.533 из 5
Похожие ответы