اشکال در برنامه میانگین - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

اشکال در برنامه میانگین

+1 امتیاز

سلامومن یک کد زدم که میانگین یه سری نمره رو با تابع حساب کنه و اگر کاربر نمره -1 زد دیگه نمره نگیره و میانگینو حساب کنه اما از یه خطم ارور می گیره،،،

اینم کدم:

#include <stdio.h>
#include <stdlib.h>
float ave(float score[],int count);
int main(int argc, char *argv[])
{
       float average;
       int a;
       float score[a];
       int count=0;
       int counter=0;
       printf("enter scores\n");
       printf("for end enter -1\n");
         while(score[counter]!=-1)
     {
          scanf("%f",&score[counter]);
          if(score[counter]==-1)
          break;
          counter++;                    
     }
     count=counter;
     average=ave(score[],count);
     printf("======================\n");
     printf("average is : ");
     printf("%f",average);
     printf("\n");
  
  system("PAUSE");	
  return 0;
}
float ave(float score[],int count)
{
     int i;
     float av=0;
     float sum=0;
     for( i=0;i<count;i++)
     sum=sum+score[i];
     av=sum/count;
     return av;
}

از این خط ارور می گیره  

average=ave(score[],count);

ممنون می شم اگر کمک کنید

سوال شده شهریور 19, 1393  بوسیله ی Sher228 (امتیاز 167)   18 33 44
ویرایش شده شهریور 19, 1393 بوسیله ی BlueBlade

1 پاسخ

+2 امتیاز

این خط : 

int a;
float score[a];

دارید آرایه با سایز a میسازید ولی به a مقدار ندادید .

برای فرستادن ارایه هم به این شکل باید بنویسید :

 average=ave(score,count);//ave(score[],count) eshtebah hast

کد درست : (البته هنوز خطای منطقی هم داره اون جا که داخل while دارید -1 بودن رو چک می کنید درست نیست )

#include <stdio.h>
#include <stdlib.h>
float ave(float score[],int count);
int main(int argc, char *argv[])
{
    float average;
    float score[100];
    int count=0;
    int counter=0;
    printf("enter scores\n");
    printf("for end enter -1\n");
    while(score[counter]!=-1)
    {
        scanf("%f",&score[counter]);
        if(score[counter]==-1)
            break;
        counter++;
    }
    count=counter;
    average=ave(score,count);
    printf("======================\n");
    printf("average is : ");
    printf("%f",average);
    printf("\n");
    
    getchar();
    return 0;
}
float ave(float score[],int count)
{
    int i;
    float av=0;
    float sum=0;
    for( i=0;i<count;i++)
        sum=sum+score[i];
    av=sum/count;
    return av;
}

 

پاسخ داده شده شهریور 19, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
اگر بخوام اندازه آرایه نا محدود باشه ،،،چی کار کنم؟؟ بعد برای while چی پیشنهاد می کنید؟
اگر قراره اندازه نامحدود باشه از vector استفاده کنید  بجای آرایه
در مورد while هم به این شکل :
while(true)
{
    scanf("%f",&score[counter]);
    if(score[counter]==-1)
        break;
    counter++;
}

یعنی اولین بار که میرید داخل while نیازی به چک کردن مقدار ندارید.
...