Вопрос Здравствуйте. Программисты, проверьте, пожалуйста, программу)

Регистрация
17 Дек 2013
Сообщения
76
Репутация
-5
Спасибо
0
Монет
0
Завтра надо сдавать, хочу быть уверенной, что сделала все правильно.
Задание:
Дана матрица А (10х10). Отсортировать элементы, лежащие на главной диагонали, в порядке возрастания. Память выделять динамически.
код:
#include
#include
int main()
{
system ("chcp 1251 > nul");
int *p;
int tmp, n, m;
printf ("Введите кол - во строк: \n");
scanf ("%d", &n);
printf ("Введите кол - во столбцов: \n");
scanf ("%d", &m);
p = (int*)malloc(n*m*sizeof(int));
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
scanf("%d", (p+i*m+j));
for(int j = 0; j < n - 1; j++)
for(int i = j + 1; i < n; i++)
if(*(p+i*m+i) < *(p+i*m+i))
{
tmp = *(p+i*m+i);
*(p+i*m+i) = *(p+j*m+j);
*(p+j*m+j) = tmp;
}
for(int j = 0; j < n; j++)
{
putchar('\n');
for(int i = 0; i < n; i++)
printf("%3d", *(p+i*m+j));
printf("\n");
}
free(p);
system ("PAUSE>nul");
return 0;
}
262804105_aa745b1856c6dd129f57c928af8d3688_800.png
 
Обезьяна-преподаватель, как обычно, не рассказал о всех приколах классического scanf(и что его не следует использовать даже в тестах), у нас же 1988 год на дворе, да. С точки зрения 2018 года – код отвратительный. *(p+i*m+i) вот это вообще жесть.
 
Назад
Сверху