Прокомментировать код - C (СИ) (72947)
Формулировка задачи:
Расскажите если не сложно принцип действия этого кода, особенно эту часть :
for (i = 0; i < rs; i++)
m[responce[i]]++;
#include<stdio.h>
#include<conio.h>
#define vs 11
#define rs 40
int main()
{
int m[vs];
unsigned responce[rs] = {3, 2, 4, 5, 8, 5, 7, 4, 8, 4, 2, 1, 7, 4, 8, 6, 4, 3, 8, 4, 5, 7, 9, 1, 5, 4, 2, 6, 10, 5, 3, 7, 5, 3, 4, 6, 7, 4, 6, 7};
int i;
for (i = 0; i < vs; i++)
m[i] = 0;
for (i = 0; i < rs; i++)
m[responce[i]]++;
for (i = 1; i < vs; i++)
printf("Rating %2d is : %2d \n", i, m[i]);
_getch();
return 0;
}Решение задачи: «Прокомментировать код»
textual
Листинг программы
j = i - 1; k = m[i]; while (j >= 0 && k > m[j]) m[j + 1] = m[j--]; m[j + 1] = k;
Объяснение кода листинга программы
- Переменная j инициализируется значением i - 1.
- Переменная k инициализируется значением m[i].
- Переменная j используется в цикле while, где она сравнивается с нулем и значением m[j].
- Если j больше или равно нулю и m[j] больше текущего значения k, то m[j + 1] присваивается значение m[j], а затем j уменьшается на единицу.
- Если j больше или равно нулю и m[j] меньше или равно текущему значению k, то m[j + 1] присваивается значение k.
- В конце цикла, значение k присваивается в массив m по индексу j + 1.