Ввод значения и вместо сохранения этой информации в массиве, он меняет другую переменную - PullRequest
0 голосов
/ 07 января 2019

Я сделал программу, а потом она не сработала. Как и в другом посте, кто-то посоветовал мне попробовать отладить мои программы, я узнал об этом и отладил этот. Возможно, в нем есть некоторые основные ошибки записи, но это потому, что я недавно изменил многое, чтобы понять, что происходит. В третий раз, когда я ввожу значение на экране в этом цикле, оно меняет мою переменную «i» на это значение вместо того, чтобы сохранять это число в моем массиве «grade».

Сначала я попытался сделать все это за один цикл, первый, но, как всегда, это не очень помогло, а затем я написал код таким образом, как вы увидите

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int j=0,sum=0,i=0;
    int grade[]={0};
    for(;j<100;j++){
        printf("Type a grade:\t");
            scanf("%d",&grade[j]);
       if(grade[j]<10||grade[j]>20){
        break;
       }
    }
for(;i<j;i++){
    sum=sum+grade[i];
}
float average=sum/j;

  printf("The average is: %.2f\n",average);
  system("pause");
    return 0;
}

Упражнение говорит, что вам нужно прочитать «х» оценки ученика, и это должно быть между 10 и 20, если число выходит за пределы этого диапазона, это останавливает цикл. После того, как мне просто нужно вычислить среднее значение ОС эти оценки. Я действительно не знаю, правильно ли рассчитывается мое среднее значение, потому что я не смог добраться туда из-за моей проблемы. Если вы введете 11, 12 и 13, это должно дать сумму 36, но даст мне 26, я не знаю, как.

1 Ответ

0 голосов
/ 07 января 2019

Эрик, вы должны определить свой массив согласованным образом. Чтобы разрешить необходимое количество элементов, попробуйте определить числовую константу. Вы можете использовать его как для определения количества итераций вашего цикла, так и размера массива оценок. Вы также можете избежать нового цикла для вычисления суммы массива, вы можете сделать эту операцию, читая оценки, используя только один цикл for. Попробуйте так:

#include <stdio.h>
#include <stdlib.h>

#define MAX_GRADES 100

int main()
{
    int j,sum=0,i;
    float average;
    int grade[MAX_GRADES];

    for(j = 0 ; j < MAX_GRADES; j++)
    {
        printf("Type a grade:\t");
            scanf("%d",&i);

       if ( (i<10) || (i>20) )
        break;

      grade[j] = i;
      sum += i;
    }

  if (j > 0)
    average = (float)sum/j;
  else
    average = 0;

  printf("The average is: %d, %d, %.2f\n",sum, j, average);
  system("pause");
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...