Программа выдает неправильный результат - C (СИ) (157276)

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. #include <stdio.h>
  2. #define a 20
  3. #define n 20
  4. int main () {
  5. int i,k;
  6. int arr[a],m[n];
  7. i=0;
  8. k=20;
  9. do
  10. {
  11. printf ("\n mas[%d] =" , i+1);
  12. if(!scanf("%d",& m[i]))
  13. fflush (stdin);
  14. else
  15. i++;
  16. }while (i<a);
  17. for(i=0;i<k;i++)
  18. arr[m[i]]++;
  19. printf("\nzna4eni9 vstre4auts9\n");
  20. for (i = 0; i < k; i++)
  21. printf("%4d --------%2d\n", i, arr[i]);
  22.  
  23. return 0;}
Выдает бешенные числа по всем значениям.

Решение задачи: «Программа выдает неправильный результат»

textual
Листинг программы
  1. #include <stdio.h>
  2. #define a 20
  3. #define n 20
  4.  
  5. int main () {
  6.     int i,k;
  7.     int arr[a],m[n];
  8.     i=0;
  9.     k=20;
  10.     do
  11. {
  12.         printf ("\n mas[%d] =" , i+1);
  13.         if(!scanf("%d",& m[i]))
  14.             fflush (stdin);
  15.         else
  16.             i++;
  17.         }while (i<a);
  18.             for(i=0;i<=k;i++)
  19.                 m[i]=0;
  20.             for(i=0;i<=k;i++)
  21.                 arr[m[i]]++;
  22.  
  23.     printf("\nzna4eni9 vstre4auts9\n");
  24.     for (i = 0; i <= a; i++)
  25.     printf("%4d --------%2d\n", i, arr[i]);
  26.  
  27.  
  28.     return 0;}

Объяснение кода листинга программы

  1. Программа начинается с подключения заголовочного файла stdio.h, который содержит функции для ввода и вывода данных.
  2. Макросы a и n определяются как 20.
  3. Функция main() начинается с инициализации двух переменных типа int - i и k, которые равны 0 и 20 соответственно.
  4. Переменная arr типа int объявляется как массив, размер которого определяется макросом a.
  5. Переменная m типа int также объявляется как массив, размер которого определяется макросом n.
  6. Цикл do-while начинается, и в нем происходит следующее:
    • Выводится сообщение с индексом массива m и числом, введенным пользователем, и после этого значение i увеличивается на 1.
    • Если пользователь ввел некорректное значение (например, букву вместо числа), то значение i не изменяется, и цикл продолжается.
  7. После окончания цикла do-while, цикл for выполняется для очистки массива m и заполнения его нулями.
  8. Затем цикл for выполняется для подсчета количества каждого уникального значения в массиве arr.
  9. Выводится сообщение zna4eni9 vstre4auts9 (это просто набор символов, не имеющий смысла для программы).
  10. Затем выводится таблица, в которой каждое значение i выравнивается в 4-х символьных графах, а значение arr[i] выравнивается в 2-х символьных графах.
  11. Функция main() завершается, и программа заканчивается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.455 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы