Исправить ошибки в приведенном коде - 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, в которых, возможно, обрабатывается ошибка.