برنامه نمرات دانشجویان و محاسبه میانگین

yasi93

New Member
برنامه ای که نمرات امتحانی تعدادی از دانشجویان را بگیرد و به عنوان خروجی پس از اسم دانشجو نمرات هر دانشجو ومیانگین نمره هر دانشجو را حساب کند معدل را برای 6 درس حساب کند وضریب 4 درس اول 15 درصد و ضریب 2 درس دیگه 20 درصد باشد تو رو خدا کمک کنید
 

hobab1987

Member
البته 4 تا ارور ميده!!! نميدونم مشكلش چيه!!!
کد:
#include <stdio.h>
#include <conio.h>
struct student
{
  int grade;
  char name_st;
  float ave;
}st[100];
int main()
{
int const m = 6;
int n,i,j;
int a1 = 0, b1 = 0, a, b;
clrscr();
printf("\n Enter num of the students:%d",n);
scanf("%d",&n);
for(i = 0;i < n;i++)
{
 scanf("%s",st[i].name_st);
  for(j = 0;j < m;j++)
   {
    scanf("%d",&st[i].grade[j]);
      if(j < 5)
       {
  a=((float)st[i].grade[j])*(15/100);
   a1=a+a1;
       }
      if(j>4)
       {
  b=((float)st[i].grade[j])*(20/100);
   b1=b+b1;
       }
       st[i].ave = a1+b1/m;
       printf("\n Student:%s grade:%d ave:%f",st[i].name_st,st[i].grade[j],st[i].ave);
    }
}
getch();
return 0;
}
 

goly1378

New Member
کمک فوری در برنامه c++ {با تشکر}

سلام:-?

برنامه ای به زبان ++c میخواستم(البته با آرایه ها ورشته ها):

لیست تمامی دانشجویان با نمرات آنها را از ورودی دریافت ونمایش دهد

برحسب نام مرتب کند

نشان دادن سه نفر برتر و سه نفر ضعیف تر

میانگین نمرات کلاس

لیست نمرات کمتر از میانگین
 

Omid PLUS

Member
دوست عزیز هیچوقت کسی نمیاد همچین برنامه ای همینجوری برای شما بنویسه!!!:cool:

شما خودت یه حرکت بکن، یه برنامه بنویس، هرجا که مشکلی داشتی بگو کمکت میکنیم!!!

اینجوری هیچکس کاری برای شما انجام نمیده!!:wink:
 

saalek110

Well-Known Member
برنامه شما برنامه ساده ای از اعمال ساده. در آموزش زیر تمام اینها با زبان ساده گفته شده. جمع آوری قطعات از این تاپیکها به عهده خودتان.

آموزش سی پلاس
 

goly1378

New Member
لطفا کاملش کنید:

#include
<IOSTREAM.h>
#include<conio.h>
void bubble(char[][30],int)
int main()
{
const int n=5;
int i;
char name[30],arr[n][30];
clscr;
for (i=0;i<n;i++)
cout<<
"Enter name"<<(i+1)<<":";
cin get(arr,29);
cin get();
}
void bubble(char arr[5][30],int n)
{
int i,j;
char temp[30];
for(i=n-1;i>0;i--)
for(j=0;j<i;j++)
if(strcpy(arr[j],arr[j+1])>0)
{
strcpy(temp,arr[j]);
strcpy(arr[j];arr[j+1]);
strcpy(arr[j+1],temp);
}
}
 

goly1378

New Member
من برنامه ام را نوشتم حال میخواهم روی کامپیوتر خو اجرا کنم.

وقتی روی turbo ++c اجرا میکنم error میده.(error include وerror main)

لطفا راهنمایی کنید که از چه برنامه واز کجا باید دانلود کنم؟
 

saalek110

Well-Known Member
با توربو سی می توانید کار کنید. اول یک برنامه ساده مثلا چاپ یک نوشته مثلا hello را تست کنید. اگر بدون خطا اجرا شد به تدریج قسمتهای دیگر را بیافزایید. اگر هم همان برنامه ساده اجرا نشد شاید تنظیمات توربو سی مشکل داره.

با کامپایلر دیگه هم فرقی نداره. بهرحال باید برنامه شما بی اشکال باشد.
 

Omid PLUS

Member
برنامت رو بذار شاید مشکل اصلاً از Turbo نباشه و از برنامه باشه بذار ببینیم مشکل از کجاست.....


واسه کامپایلر خوب هم من از Visual Studio استفاده میکنم و خیلی هم راضی هستم.....
 

goly1378

New Member
مشکل اجرای برنامه ام حل شد.(برنامه گیر کرده بود)


کد:
[LEFT]#include<iostream.h>
 
#include<conio.h>
 
main()
{
float a[10];
float max1=a[0],max2=a[0],max3=a[0];
float min1=a[0],min2=a[0],min3=a[0];
int t1=0,t2=0;
//Grades Input
 
for(int i=0;i<10;i++)
{
cout<<"Enter Grade"<<i+1<<":";
cin>>a[i];
}
clrscr;
//Max Grades
 
for(i=0;i<10;i++) 
if(a[i]>max1)
{
max1=a[i];
t1=i;
} 
for(i=0;i<10;i++) 
if(t1 != i)
if(a[i]>max2)
{
max2=a[i];
t2=i;
} 
for(i=0;i<10;i++) 
if(t1 != i && t2 != i)
if(a[i]>max3)
max3=a[i];
//Min Grades
 
for(i=0;i<10;i++) 
if(a[i]<min1)
{
min1=a[i];
t1=i;
} 
for(i=0;i<10;i++) 
if(t1 != i)
if(a[i]<min2)
{
min2=a[i];
t2=i;
} 
for(i=0;i<10;i++) 
if(t1 != i && t2 != i)
if(a[i]<min3)
min3=a[i];
//Grades Output
 
cout<<"\n max1:"<<max1<<"\n max2:"<<max2<<"\n max3:"<<max3<<"\n";
cout<<"\n min1:"<<min1<<"\n min2:"<<min2<<"\n min3:"<<min3<<"\n";
}[/LEFT]

برنامه که نوشتم نمره 10 دانشجو را میگیره و سه نفر برتر وسه نفر ضعیف تر رانشان میده.

اشکالش روی سه نفر ضعیف تره.

بی زحمت راهنمایی کنید
 

the_king

مدیرکل انجمن
کد برنامه تون چند تا اشکال کامپایلری داره، نوع خروجی تابع main را مشخص نکردید (void یا int) و همچنین توابعی مانند
clrscr را بایستی همراه با () فراخوانی کنید.

برای پیدا کردن شش عدد Max و Min در یک آرایه 10 عنصری، بجای الگوریتمی که شما استفاده کرده اید، مرتب سازی آرایه را
پیشنهاد می کنم که الگوریتم به مراتب ساده تری خواهد داشت :

کد:
#include <iostream.h>
#include <conio.h>

void main()
{
   float a[10];
   float b[10];
   float t;
   int i,j;
   for(i = 0; i < 10; i++)
   {
      cout << "Enter Grade" << (i + 1) << ":";
      cin >> a[i];
   }
   clrscr();
   for(i = 0; i < 10; i++)
      b[i] = a[i];
   for(i = 1; i < 10; i++)
      for(j = 0; j < 10 - i; j++)
         if (b[j] > b[j + 1])
         {
            t = b[j];
            b[j] = b[j + 1];
            b[j + 1] = t;
         }
   cout << "\n Max1:" << b[9] << "\n max2:" << b[8] << "\n max3:" << b[7] << "\n";
   cout << "\n min1:" << b[0] << "\n min2:" << b[1] << "\n min3:" << b[2] << "\n";
}
 

goly1378

New Member
دستت درد نکنه

برنامه خیلی خوب بود.

این هم برنامه گرفتن نام ونمره 5 دانشجو ومرتب کردن نام وسه نفر برتر وسه نفر ضعیف تر
کد:
#include <iostream.h>
#include <conio.h>
 
const int n = 5;
 
char name[30], arr[n][30];
float a[n];
 
void bubble(char[][30],int);
int MAIN()
{
 
    int i;
    clrscr();
    for(i = 0; i < n ;i++)
    {
        cout<< "Enter name"<<(i+1)<<": ";
        cin.get(arr[i],29);
        cin.get();
 
        cout<< "Enter Grade" << (i + 1) << ": ";
        cin>> a[i];
        cin.get();
    }
    bubble(arr,n);
 
    getch();
    return 0;
}
void bubble(char arr[10][30], int n)
{
    int i,j;
    char temp[30];
    for(i = n-1 ; i > 0; i--)
        for(j = 0; j < i; j++)
            if(strcmp(arr[j],arr[j+1]) > 0)
            {
                strcpy(temp,arr[j]);
                strcpy(arr[j],arr[j+1]);
                strcpy(arr[j+1],temp);
            }
}
 
 
void main()
{
    MAIN();
 
    int i,j;
 
// float a[n];
 
    int b[n]; // new
    for(i = 0; i < n; i++) // new
        b[i] = i; // new
 
 
    clrscr();
    for(i = 1; i < n; i++)
        for(j = 0; j < n - i; j++)
            if (a[b[j]] > a[b[j + 1]]) // chnage
            {
                float temp = b[j]; // change
                b[j] = b[j + 1]; // change
                b[j + 1] = temp; // change
            }
 
    for(i = 0; i < n; i++)
        cout<< "\n" << arr[i] << " " << a[i];
    cout<< "\n";
 
    cout << "\n max1: " << a[b[n-1]] << " " << arr[b[n-1]] // change
         << "\n max2: " << a[b[n-2]] << " " << arr[b[n-2]] //change
         << "\n max3: " << a[b[n-3]] << " " << arr[b[n-3]]
         << "\n"; //change
 
    cout << "\n min1: " << a[b[0]] << " " << arr[b[0]] // change
         << "\n min2: " << a[b[1]] << " " << arr[b[1]] // change
         << "\n min3: " << a[b[2]] << " " << arr[b[2]] // change
         << "\n"; // change
    getch();
}
 
آخرین ویرایش:

goly1378

New Member
مثلا من در اینجا برای 5 دانشجو مثال زدم. آیا میتوان طوری برنامه را نوشت که تعداد هر چند تا که می خواهیم باشه؟ :shock:
 
آخرین ویرایش:

goly1378

New Member
سلام:-?

برنامه ای به زبان ++c میخواستم(البته با آرایه ها ورشته ها):

لیست تمامی دانشجویان با نمرات آنها را از ورودی دریافت ونمایش دهد

برحسب نام مرتب کند

نشان دادن سه نفر برتر و سه نفر ضعیف تر

میانگین نمرات کلاس

لیست نمرات کمتر از میانگین

این هم کل برنامه::oops:(البته این تعداد دانشجویان را نتونستم متغیر کنم)

کد:
#include <iostream.h>
#include <conio.h>
#include <string.h>
const int n = 6; 
char name[30], arr[n][30];
float a[n];
void bubble(char[][30],int);
int MAIN()
{
int i;
clrscr();
for(i = 0; i < n ;i++)
{
cout<< "\nEnter name"<<(i+1)<<":";
cin.get(arr[i],29);
cin.get();
cout<< "\nEnter Grade" << (i + 1) << ":";
cin>> a[i];
cin.get();
}
clrscr();
cout<< " Name" <<"\t Grade";
cout<< "\n______"<<"\t_______";
for(i = 0; i < n; i++) 
cout<< "\n\n" << arr[i]<<"\t"<<a[i];
bubble(arr,n); 
return 0;
}
void bubble(char arr[n][30], int n)
{
int i,j;
char temp[30];
for(i = n-1 ; i > 0; i--)
for(j = 0; j < i; j++)
if(strcmp(arr[j],arr[j+1]) > 0)
{
strcpy(temp,arr[j]);
strcpy(arr[j],arr[j+1]);
strcpy(arr[j+1],temp);
}
}
void main()
{
MAIN();
int i,j;
float temp=0; 
float avg=0;
float b[n];
for(i = 1; i < n; i++)
for(j = 0; j < n - i; j++)
if (a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
} 
for(i=0;i<n;i++) 
avg+=a[i];
avg=avg/n; 

cout<<"\n\nSorted Name";
cout<<"\n___________";
for(i = 0; i < n; i++)
cout<< "\n\n" << arr[i];
cout<< "\n";
cout << "\nmax1: " << a[n-1]<< "\nmax2: " << a[n-2]<< "\nmax3: " << a[n-3]<< "\n"; 
cout << "\nmin1: " << a[0]<< "\nmin2: " << a[1] << "\nmin3: " << a[2]<< "\n";
cout<<"\nGrades Average: "<<avg;
cout<<"\n\nAverage Lesser";
cout<<"\n______________";
for(i = 0; i < n; i++)
{
if(a[i]<avg)
{
b[i]=a[i];
cout<< "\n\n" <<b[i];
}
} 
getch();
}
 

saalek110

Well-Known Member
من 10 خط اول رو خودندم فکر کنم با تغییر این قسمت میشه این کار رو کرد
کد:
const int n = 5;


به جای 5 عددی رو که میخواین بذارین مثلا 60 تا ...
اگرم قراره بی نهایا بشه میشه این کار رو کرد
کد:
int n;

من با نگاه به این تاپیک:

در cpp آيا مي توان يك مقدار از كاربر گرفت و يك آرايه به آن اندازه ساخت ؟

این طوری کار کردم:
کد:
int *ptr,n;
n=3;   //    or    cin>>n;
ptr=new int[n];

زیاد ور نرفتم. خودتان بیشتر قضیه را بررسی کنید.

اضافه بعدا:
وقتی n را کوچک هم می گرفتم میشد مثلا خانه دهمی آرایه را مقدار دهی کرد. فکر کنم این به علت اینه که زبان سی زبانی بی محدودیت است. یعنی اجازه می دهد از حد خارج شوی(شایدم دلیل دیگه ای داره.) . برای همین خیلی جاها باید خودمان مواظب باشیم.
 

iranma1

New Member
در خواست کمک : برنامه ساده c

سلام من یه برنامه خیلی ساده البته برای من که خیلی سخته خیلی ساده برای شما برنامه نویسای محترم به زبان سی لطفا کمک کنید . برنامهای بنویسید که که مشخصات 50 دانشجو را ازقبیل (شماره دانشجویی و نام ونام خاتنوادگی ومعدل و آدرس و شماره شناسنامه )را از ورودی بخواند . .کمترین معدل و بیشترین معدل را محاسبه کند .فردی را از آرایه حذف کنذ .فردی را به آرایه اضافه کند .دانشجویان را بر اساس کمترین و بیشترین معدل مرتب کند .دانشجویان را بر اساس نام و شماره انشجویی جستجو کند 6. قابلیت جشتجوی باینری را داشته باشدبر اساس شماره دانشجویی منون میشم کمکم کنید . بازم ممنونم .
 

ali0480

Member
جواب

نیگا این برنامه حداقل تا قسمت گرفتن اطلاعات از کاربر اسون هستش و کاری نداره و فقط تو باید یه structure تعریف کنی که شامل 3 قسمت کاراکتری برای نام نام خانوادگی و ادرس داشته باشد و 3 قسمت دیگر عددی (float ) برای شماره دانشجویی معدل و شماره شناسنامه فعلا اینا رو بساز بقیش رو هم بهت می گم
تا خودت استین بالا نزنی هیچی یاد نمی گیری (و معلومه که این یه تمرین دانشجویی هستش نه ؟ )
 

iranma1

New Member
ممنون
من دانشجو هستم
من اين ها رو كه بلدم
اما نمي دونم چه جوري يه برنامه بسازم كه اين همه كار رو انجام بده
و اصلا دستورات اين برنامه رو بلد نيسم
ممنون ميشم كمكم كنيد .
منتظرم.
 

allvllir_sal3er

New Member
سلا احتمالا" این سورسش از یه جا گیر اوردم خودم روش فکر نکردم اما این کارو میکنم ببین به دردت میخوره تا یه جاهای نگاه کردم درست بود


include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include <io.h>
void add(void);
void search(void);
void list(void);
void delet(void);
void change(void);
void sort(void);
int i,j;
struct r {
char fam[20];
char nam[20];
char tel_no[10];
char adres[50];
}rec;
struct rs {
char fams[20];
char nams[20];
char tel_nos[10];
char adress[50];
}rec_s[100];
FILE *fp;
main()
{
int a,b;
char c='0',ch;
while(c!='7')
{
clrscr();
textcolor(3);
printf(" \n\n in the name of allah ");
printf("\n\n 1 . add");
printf("\n\n 2 . sort");
printf("\n\n 3 . search");
printf("\n\n 4 . change");
printf("\n\n 5 . delete");
printf("\n\n 6 . list");
printf("\n\n 7 . exit");
c=getch();
switch (c)
{
case '1':
add();
break;
case '2':
sort();
break;
case '3':
search();
break;
case '4':
change();
break;
case '5':
delet();
break;
case '6':
list();
break;
case '7':
exit(0);
break;
}
}
return 0;
}
/******************************* PROCEDURE ADD ******************************/
void add(void)
{
int i,j,n;
clrscr();
fp=fopen("tel.dat","a+");
printf("\n");
printf(" what record : ");
scanf("%i",&n);
for(i=0;i<n;i++)
{
printf("\n family %i :",i+1);
scanf("%s",&rec.fam);
printf("\n name %i :",i+1);
scanf("%s",&rec.nam);
printf("\n no telephon %i :",i+1);
scanf("%s",&rec.tel_no);
printf("\n adress %i :",i+1);
scanf("%s",&rec.adres);
fwrite(&rec,sizeof(r),1,fp);
}
fclose(fp);
getch();
return;
}
//************************** PROCEDURE LIST ********************************/
void list(void)
{
int i=5;
clrscr();
gotoxy(1,2);
printf("\n family name tel_no adress");
printf("\n**************************************** *******************************");
fp=fopen("tel.dat","r");
fread(&rec,sizeof(r),1,fp);
while (!feof(fp))
{
gotoxy(5,i);
printf(" %s",rec.fam);
gotoxy(25,i);
printf(" %s",rec.nam);
gotoxy(45,i);
printf(" %s",rec.tel_no);
gotoxy(62,i);
printf(" %s",rec.adres);
i+=2;
fread(&rec,sizeof(r),1,fp);
}
fclose(fp);
getch();
}
//************************* PROCEDURE SEARCH ********************************/
void search()
{
int ptr;
char m[20];
int i=6,d=1;
clrscr();
gotoxy(1,2);
printf("enter family for search :");
scanf("%s",&m);
gotoxy(2,4);
printf("\n family name tel_no adress");
printf("\n**************************************** *******************************");
fp=fopen("tel.dat","r");
fread(&rec,sizeof(r),1,fp);
while (!feof(fp))
{
ptr=strcmp(m,rec.fam);
if (ptr==0)
{
d=0;
gotoxy(5,i);
printf(" %s",rec.fam);
gotoxy(25,i);
printf(" %s",rec.nam);
gotoxy(45,i);
printf(" %s",rec.tel_no);
gotoxy(62,i);
printf(" %s",rec.adres);
i+=2;
}
fread(&rec,sizeof(r),1,fp);
}
fclose(fp);
if (d==1)
{
gotoxy(10,10);
printf("not found");
}
getch();
}
/*******************************end serach***********************************/
void change()
{
char m[20];
int i=7,d=1,b=0;
clrscr();
gotoxy(1,2);
printf("enter family for change :");
scanf("%s",&m);
gotoxy(2,4);
printf("\n name family tell adress");
printf("\n ************************************************** ****************");
fp=fopen("tel.dat","r+");
fread(&rec,sizeof(r),1,fp);
while (!feof(fp))
{
b++;
if(strcmp(m,rec.fam)==0)
{
d=0;
gotoxy(4,i);
printf(" %s",rec.nam);
gotoxy(21,i);
printf(" %s",rec.fam);
gotoxy(38,i);
printf(" %s",rec.tel_no);
gotoxy(60,i);
printf(" %s",rec.adres);
i+=1;
fseek(fp,(b-1)*sizeof(r),SEEK_SET);
gotoxy(19,10);
printf(" new data :\n");
gotoxy(1,12);
printf("name :");
scanf("%s",&rec.nam);
gotoxy(20,12);
printf("family :");
scanf(" %s",&rec.fam);
gotoxy(40,12);
printf("tel :");
scanf(" %s",&rec.tel_no);
gotoxy(60,12);
printf("adress :");
scanf(" %s",&rec.adres);
fwrite(&rec,sizeof(r),1,fp);
break;
}
fread(&rec,sizeof(r),1,fp);
}
fclose(fp);
}
/**************************end change****************************************/
void delet()
{
FILE *t;
int ptr,d,s;
char m[20],x;
int i=6,b=1;
clrscr();
gotoxy(1,2);
printf("enter family for del :");
scanf("%s",&m);
gotoxy(2,4);
printf("\n family name tel_no adress");
printf("\n**************************************** *******************************");
fp=fopen("tel.dat","r");
t=fopen("tel1.dat","w+");
d=filelength(fileno(fp))/sizeof(r);
for (s=0;s<d;s++)
{
fread(&rec,sizeof(r),1,fp);
ptr=strcmp(m,rec.fam);
if (ptr==0)
{
b=0;
gotoxy(5,i);
printf(" %s",rec.fam);
gotoxy(25,i);
printf(" %s",rec.nam);
gotoxy(45,i);
printf(" %s",rec.tel_no);
gotoxy(62,i);
printf(" %s",rec.adres);
i+=2;
printf("\nfor del (Y,N) :");
x=getche();
if ((x=='y') || (x=='Y'))
continue;
}
fwrite(&rec,sizeof(r),1,t);
}
fclose(fp);
fclose(t);
if (b==1)
{
gotoxy(10,10);
printf("not found");
}
if (remove("tel.dat")== 0)
rename("tel1.dat","tel.dat");
getch();
}
/************************end del**********************************************/
void sort()
{
/* int ptr;
char m[20];
int i=6,d=1;*/
int i=0;
while (!feof(fp))
{
fread(&rec,sizeof(r),1,fp);
strcpy(rec_s.fams,rec.fam);
strcpy(rec_s.nams,rec.nam);
strcpy(rec_s.tel_nos,rec.tel_no);
strcpy(rec_s[i++].adress,rec.adres);
}
 

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

بالا