Нахождение кубиков заданного цвета - найти ошибку - 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; }
Объяснение кода листинга программы
- В начале программы объявляется структура book, которая содержит поля colour (цвет), mater (материал) и dlina (размер).
- Далее, в функции main(), определяются константы s1, s2, s3 и s4, которые представляют цвета и материалы.
- Затем, пользователю предлагается ввести количество кубиков, для которых нужно найти информацию.
- Выделенная память для массива структур book приводится в соответствие с количеством кубиков, введенным пользователем.
- После этого пользователю предлагается ввести цвет, материал и размер для каждого кубика.
- Далее, происходит поиск кубиков заданного цвета, используя условные операторы if-else и функцию strcmp() для сравнения строк.
- В конце программы выводятся результаты поиска - количество кубиков каждого цвета.
- Возможно, стоит добавить проверку на некорректный ввод данных, чтобы избежать ошибок при работе с программой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д