در c++ :دو آرایه شامل نمرات دانشجو و تعداد درس را به تابع بفرستد تا معدل دانشجو محاسبه شود

mohammad2232

New Member
سلاکم دوستان عزیز من یک سوال داشتم برای کد
برنامه ای بنویسید که دو آرایه شامل نمرات دانشجو و تعداد درس را به تابع بفرستد تا معدل دانشجو محاسبه شود
توی c++
کد زیر رو نوشتم ولی کار نمیکنه :) لطفا راهنمایی بفرمایید
کد:
#include <iostream>
#include <conio.h>
using namespace std;
int g(int A[n],int B[n]);
int main(){
    int n,A[n],B[n],sum[n];
    cout<<"enter number of lesson";
    cin>>n;
    for(int i=0;i<n;i++)
    {cout<<"enter grades:";
    cin>>A[i];
    }
    return 0;}
    int g(int A[n],int B[n])
    {for(int k=0;k<A[n],k++)
    sum[k]=A[n]+B[n];
    return sum[k];
    }
 

the_king

مدیرکل انجمن
سلاکم دوستان عزیز من یک سوال داشتم برای کد
برنامه ای بنویسید که دو آرایه شامل نمرات دانشجو و تعداد درس را به تابع بفرستد تا معدل دانشجو محاسبه شود
توی c++
کد زیر رو نوشتم ولی کار نمیکنه :) لطفا راهنمایی بفرمایید
کد:
#include <iostream>
#include <conio.h>
using namespace std;
int g(int A[n],int B[n]);
int main(){
    int n,A[n],B[n],sum[n];
    cout<<"enter number of lesson";
    cin>>n;
    for(int i=0;i<n;i++)
    {cout<<"enter grades:";
    cin>>A[i];
    }
    return 0;}
    int g(int A[n],int B[n])
    {for(int k=0;k<A[n],k++)
    sum[k]=A[n]+B[n];
    return sum[k];
    }
اول یک نگاهی به تعریف تابع تون بندازیم :
کد:
int g(int A[n], int B[n]);
شما n رو که یک متغیر ئه رو در تعریف تابع نوشته اید، این اشتباهه، در تعریف تابع صرفا اشاره می کنید که A و B آرایه هستند :
کد:
int g(int A[], int B[]);
در ضمن معدل الزاما یک عدد بدون اعشار نیست، مثلا 18.5 ، بنابراین بهتره مقدار بازگشتی اش رو int تعریف نکنید چون قسمت اعشاری اش رو نگهداری نمی کنه، float نوع داده مناسبی است :
کد:
float g(int A[], int B[]);
شما B رو برای چه منظوری در نظر گرفته اید؟ اگه تعداد واحد هر درس ئه، با یک پارامتر مجزای دیگه تعداد دروس رو هم به تابع ارسال کنید، مثلا 4 درس که در اون صورت A و B آرایه های چهار خانه ای هستند :
کد:
float g(int A[], int B[], int n);
برای ایجاد کردن آرایه با طولی که توسط یک متغیر تعیین میشه این کد صحیح نیست چون اولا موقعی که این کد اجرا میشه هنوز n مقدار دهی نشده که طول آرایه معلوم باشه و در ضمن این کد نمی تونه آرایه با طول متغیر n بسازه :
کد:
    int n, A[n], B[n], sum[n];
آرایه با طول متغیر رو با new اینطوری می سازند :
کد:
    int n;
    cout<<"enter number of lesson";
    cin>>n;
    int *A = new int[n];
    int *B = new int[n];
اما حقیقتا لازم نیست که آرایه رو با طول متغیر بسازید، می توانید یک طول حداکثری مثلا 100 خانه ای برایش در نظر بگیرید و با این شرط که حتما n از این مقدار بیشتر نشه :
کد:
    int n, A[100], B[100];
و دقت کنید که شما در کد main تون به sum احتیاجی ندارید، sum باید جایی باشه که محاسبه رو انجام می دهید، یعنی در تابع g
کد:
#include <iostream>
#include <conio.h>

using namespace std;

float g(int A[], int B[], int n);

int main()
{
    int n, A[100], B[100];
    cout<<"enter number of lesson:";
    cin>>n;             
    for(int i=0;i<n;i++)
    {
        cout<<"enter grades:";
        cin>>A[i];
        cout<<"enter credits:";
        cin>>B[i];
    }
    cout << "Average = " << g(A, B, n);
    return 0;
}

float g(int A[], int B[], int n)
{
    float sum = 0;
    float sumc = 0;
    for(int k=0;k<n;k++)
    {
        sum += A[k] * B[k];
        sumc += B[k];
    }         
    return sum / sumc;
}
 

جدیدترین ارسال ها

بالا