Исправить ошибки в приведенном коде - C (СИ)
Формулировка задачи:
Листинг программы
- #include <stdio.h>
- struct list
- {
- char name[20];
- char sport[20];
- char year[20];
- char arena[20];
- char mass[20];
- char address[20];
- };
- zamena (struct list mas[],char x[], int i, int j)
- {
- int i1;
- if ( strcmp(x[i], x[j+1]) > 0 )
- {
- for(i1=0; i1<20; i1++)
- {
- char temp = mas[j].name[i1];
- mas[j].name[i1] = mas[j+1].name[i1];
- mas[j+1].name[i1] = temp;
- temp = mas[j].sport[i1];
- mas[j].sport[i1] = mas[j+1].sport[i1];
- mas[j+1].sport[i1] = temp;
- temp = mas[j].year[i1];
- mas[j].year[i1] = mas[j+1].year[i1];
- mas[j+1].year[i1] = temp;
- temp = mas[j].arena[i1];
- mas[j].arena[i1] = mas[j+1].arena[i1];
- mas[j+1].arena[i1] = temp;
- temp = mas[j].mass[i1];
- mas[j].mass[i1] = mas[j+1].mass[i1];
- mas[j+1].mass[i1] = temp;
- temp = mas[j].address[i1];
- mas[j].address[i1] = mas[j+1].address[i1];
- mas[j+1].address[i1] = temp;
- }
- }
- }
- main()
- {
- int i,j;
- char num;
- struct list mas[4]={{"Zvezda","fight","1990","2","300","Zvezdnay 21"},
- {"Iskraa","swim","1987","3","500","Shlefonenko 19"},
- {"Dinamo","footbal","1985","1","200","Naftizinovskaya 15"},
- {"Unost'","run","1994","4","100","Zabygorskaya 9t"}};
- for(i=0; i<4; i++)
- {
- printf("%i.%s %9s %8s %6s %5s %5s\n",i+1 ,mas[i].name, mas[i].sport, mas[i].year, mas[i].arena, mas[i].mass, mas[i].address);
- }
- printf("\n");
- printf("_________________________________________________________________\n");
- printf("Sortirovat' po:\n");
- printf("1.Name\n");
- printf("2.Sport\n");
- printf("3.Years\n");
- printf("4.Arena\n");
- printf("5.Mass\n");
- printf("6.Address\n");
- printf("\n");
- printf("Enter number:");
- scanf("%s",&num);
- char temp;
- switch(num)
- {
- case('1'):
- {
- printf("You choose: Name\n");
- printf("\n");
- int i,j,i1;
- for( i = 0; i < 4; i ++)
- for( j = 0; j < 4 - i- 1; j ++)
- zamena(mas , mas.name , i , j) ;
- break;
- }
- case('2'):
- {
- printf("You choose: Sport\n");
- printf("\n");
- int i,j,i1;
- for( i = 0; i < 4; i ++)
- for( j = 0; j < 4 - i- 1; j ++)
- zamena(mas,mas.sport , i , j) ;
- break;
- };
- case('3'):
- {
- printf("You choose: Years\n");
- printf("\n");
- int i,j,i1;
- for( i = 0; i < 4; i ++)
- for( j = 0; j < 4 - i- 1; j ++)
- for( i = 0; i < 4; i ++)
- for( j = 0; j < 4 - i- 1; j ++)
- zamena(mas,mas.year, i, j) ;
- break;
- };
- case('4'):
- {
- printf("You choose: Arena\n");
- printf("\n");
- int i,j,i1;
- for( i = 0; i < 4; i ++)
- for( j = 0; j < 4 - i- 1; j ++)
- zamena(mas,mas.arena, i, j) ;
- break;
- };
- case('5'):
- {
- printf("You choose: Mass\n");
- printf("\n");
- int i,j,i1;
- for( i = 0; i < 4; i ++)
- for( j = 0; j < 4 - i- 1; j ++)
- zamena(mas,mas.mass, i, j) ;
- break;
- }
- case('6'):
- {
- printf("You choose: Address\n");
- printf("\n");
- int i=0,j,i1;
- for( i = 0; i < 4; i ++)
- for( j = 0; j < 4 - i- 1; j ++)
- zamena(mas,mas.address, i, j) ;
- break;
- }
- }
- printf("_________________________________________________________________\n");
- for(i=0; i<4; i++)
- {
- printf("%i.%s %9s %8s %6s %5s %5s\n",i+1 ,mas[i].name, mas[i].sport, mas[i].year, mas[i].arena, mas[i].mass, mas[i].address);
- }
- printf("\n");
- }
Решение задачи: «Исправить ошибки в приведенном коде»
textual
Листинг программы
- char num;
- ...
- scanf("%s", &num);
- ...
- switch(num) {
- case('1'):
- ...
Объяснение кода листинга программы
- Объявлена переменная типа char с именем
num
. - В цикле происходит чтение значения переменной
num
с помощью функции scanf, в которую передается форматный спецификатор%s
. - Значение переменной
num
используется в операторе switch для определения действия, которое нужно выполнить в зависимости от введенного значения. - В случае '1' выполняются действия, указанные после case, в которых, возможно, обрабатывается ошибка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д