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

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

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

#include <stdio.h>
#define a 20
#define n 20
 
 int main () { 
     int i,k;
     int arr[a],m[n];
     i=0;
     k=20;
     do 
     {
         printf ("\n mas[%d] =" , i+1);
         if(!scanf("%d",& m[i]))
             fflush (stdin);
         else 
             i++;
     }while (i<a);
      
     for(i=0;i<k;i++)
    
         arr[m[i]]++;
    
      printf("\nzna4eni9 vstre4auts9\n");
        for (i = 0; i < k; i++)
                printf("%4d --------%2d\n", i, arr[i]);

     return 0;}
Выдает бешенные числа по всем значениям.

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

textual
Листинг программы
#include <stdio.h>
#define a 20
#define n 20
 
int main () {
    int i,k;
    int arr[a],m[n];
    i=0;
    k=20;
    do
{
        printf ("\n mas[%d] =" , i+1);
        if(!scanf("%d",& m[i]))
            fflush (stdin);
        else
            i++;
        }while (i<a);
            for(i=0;i<=k;i++)
                m[i]=0;
            for(i=0;i<=k;i++)
                arr[m[i]]++;
 
    printf("\nzna4eni9 vstre4auts9\n");
    for (i = 0; i <= a; i++)
    printf("%4d --------%2d\n", i, arr[i]);
 
 
    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
Похожие ответы