Как назначить пользовательский ввод для хранения в массивах - PullRequest
0 голосов
/ 15 февраля 2011

Моя задача - написать программу, которая будет хранить GPA пользователя в виде значения с плавающей запятой в массиве.Пользователь может ввести до 30 ГПД и отображать среднее значение, если требуется, после каждого значения iuput.Что меня смущает, так это то, как использовать функцию scanf() в цикле для хранения значений с плавающей точкой в ​​массиве.Может кто-нибудь объяснить с примером кода?

ОК, так что это код, который я начал.Я знаю, что это фальшивка, но я хотел, чтобы все получили лучшее представление о программе, которую я пытаюсь написать.Я хочу, чтобы пользователь напечатал, сколько у них ГПД.Число, которое они введут, будет числом массивов, которые у меня будут.

#include <stdio.h>
main()
{
    int loopcount = 0;
    int NumGpa = 0;
    NumGpa = 0 - 1;
    float = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25;
    int gpa[NumGpa] ={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
    int i = 0;
    int total =0;

    printf("\t\tWelcome to the GPA calculator.\n ");
    printf("Please enter the number of classes you have counted for you GPA: ");
    scanf("%d", &NumGpa);

    while (loopcount &lt; NumGpa)
    {
        printf("\nenter your first GPA: ");
        scanf("%d", &1); //??????????????(i want loops to use scanf() if order &2,&3 ect?

        for (i=0; i&lt;gpa; i++)
        {
            total += arbin[NumGpa];
        }

        printf(" you average gpa is %d", NumGpa / ????);
        getchar();
    }
}

Ответы [ 5 ]

0 голосов
/ 12 ноября 2014

Ну, в вашем коде было много ошибок, возможно, это могло бы помочь.

enter code here

void main()(
    int loopcount = 0;
    int NumGpa;
    NumGpa = 0 - 1;
/*
    float = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25; i don't understand why were you doing this.
    int gpa[NumGpa] ={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
*/
    int i = 0;
    float total =0; /this is float so that output will be accurate.
    printf("\t\tWelcome to the GPA calculator.\n");
    printf("Please enter the number of classes you have counted for you GPA: ");
    scanf("%d", &NumGpa);
    int gpa[NumGpa];
    while (loopcount < NumGpa)
    {
        printf("\nenter your %d GPA: ", loopcount);
        scanf("%d", &gpa[loopcount]); 
        loopcount++;
    }
    for (i=0; i<NumGpa; i++)
    {
        total += gpa[i];
    }    
        printf(" you average gpa is %f", total / NumGpa);
        getchar();
}
0 голосов
/ 15 февраля 2011

попробуйте

for(i=0; i<30; i++)
 scanf("%f", arrayname[i]);

если вы хотите получить среднее значение напрямую, попробуйте это

float temp, ave=0;
int i;
for (i=1; i<=30; i++)
{
 scanf("%f", &temp);
 ave += temp;
}
printf("%f", ave/30);
0 голосов
/ 15 февраля 2011

Когда вы читаете float с scanf, вы передаете адрес float, о котором идет речь. Вы можете получить адрес элемента в массиве примерно так же, как и все остальное, используя оператор адреса (&).

Кроме того, вы можете немного упростить вещи. В Си оператор индекса ([]) эквивалентен операции с указателем. В частности, a[b] эквивалентно *(a+b). Тем не менее, & и * являются довольно точными противоположностями, поэтому в этом случае они в конечном итоге уничтожат друг друга. Таким образом, если вы предпочитаете, вы можете просто использовать a+b, где один из них - это имя массива, а другой - индекс элемента в массиве, который вы хотите прочитать.

0 голосов
/ 15 февраля 2011
int i = 0; // current user
float user_gpa[NUM_USERS]; // your array

while (i < num_users) {
    scanf("%f", &user_gpa[i]); // reading data for the i-th user (%f means float)
    i = i + 1; // next user
}
0 голосов
/ 15 февраля 2011

scanf("%f",&arrayVariableName[i]);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...