PDA

View Full Version : گفتگو: آیا تابع void show درست نوشته شده؟؟



giootin_tiz
پنج شنبه 23 اردیبهشت 1389, 15:30 عصر
هر کاری کردم تابع show درست کار نمیکند با ورود اطلاعات 2 نفر باید با زدن کلید 8 اطلاعات چاپ شود که نمیشود مشکل کجاست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define MAX 200
struct student {
char name[5] ;
float avrage ;
int unit ;
int amount_course ;
int student_number, bbb,ccc,ddd,eee,fff;
} st[MAX];
void first_evalution(void);
void enter(void);
void search(void);
void search2(void);
void del_name(int);
void display(void);
void top_student();
void fail_student();
void show(int *, int);
void title(int *);
int menu_select(void);
int spare_space(void) ;
void save (void);
void load(void);
void in_style(int l);
void delete_main(void);
void delete_name2(void);
void search_main(void);
static int l;
int main(void)
{
char choice ,ans;
first_evalution();
for(;;){
choice = menu_select() ;
switch(choice) {
case 1: enter();in_style(l); break;
case 2: search_main(); break ;
case 3: top_student(); break;
case 4: fail_student(); break ;
case 5: delete_main(); break ;
case 6: save();break;
case 7: load();break;
case 8: display();break;
case 9:{
printf("baraye khorooj motmaenid ?(y/n)");
ans=getche();
clrscr();
if(ans=='y')
exit(0);break; }
}
}
}
void first_evalution(void)
{
register int i ;
for(i = 0; i < MAX; ++i)
st[i].name[0] = '\0' ;
}
int menu_select(void)
{
char s[10];
int g ;

printf("\n\n\t (1) << vorood etelaaat >>");
printf("\n\n\t (2) << jostojoo >>");
printf("\n\n\t (3) << behtarin daneshjooha >>");
printf("\n\n\t (4) << daneshjoohaye mashrooti >>");
printf("\n\n\t (5) << delete >>");
printf("\n\n\t (6) << zakhire etelaat >>");
printf("\n\n\t (7) << bargiri etelaat >>");
printf("\n\n\t (8) << namayeshe etelaat >>");
printf("\n\n\t (9) << khrooj >>");
do {

printf("\n\n\t az 1 ta 9 entekhab konid: ") ;
gets(s);
clrscr();
g = atoi(s);
} while(g < 0 || g > 9) ;
return (g) ;
}
void enter(void)
{
char name3[90];
float grade, sum_grade = 0;
int t, unit, sum_unit = 0 ,j,i;
int student_number;
int bbb=0,ccc=0,ddd=0,eee=0,fff=0 ;
t = spare_space() ;
if(t == -1){
printf("\n list por shod east kelidi ra baraye edame bazannid");
getch();
return ;
}
printf("\n\t name daneshjoo:") ;
gets(st[t].name) ;
strcpy(name3,st[t].name);
for(i=0;i<t && st[i].name[0] ;i++)
{
if(strcmp(st[i].name,name3)==0){
printf("in esm ghablan vojood darad ….. edame midahid?(y,n)");
if(getche()=='n')
{
clrscr();
st[t].name[0]='\0';
return ;}}
}
clrscr();
printf("\n\ famil ra vared konid:") ;
scanf("%s", &st[t].bbb) ;
clrscr();
printf("\n\ name pedar :") ;
scanf("%s", &st[t].ccc) ;
clrscr();
printf("\n\ tarikh tavalod ra vared konid:") ;
scanf("%d", &st[t].ddd) ;
clrscr();
printf("\n\shomare daneshjooie ra vared konid:") ;
scanf("%d", &st[t].student_number) ;
clrscr();
printf("\n\t tedade dars:") ;
scanf("%d", &st[t].amount_course) ;
clrscr();
for(j = 1; j <= st[t].amount_course; j++) {
printf("\n\ nomreye dars %d:",j);
scanf("%f", &grade) ;
clrscr();
printf("\n\ tedade vahede dars %d:", j);
scanf("%d", &unit) ;
clrscr();
sum_grade += grade * unit ;
sum_unit += unit ;
}
st[t].unit=sum_unit;
st[t].avrage = sum_grade / sum_unit ;
}





int spare_space(void)
{
register int i ;
for(i = 0; st[i].name[0] && i< MAX ; ++i);
if(i == MAX) return -1 ;
return i ;
}
void delete_main(void)
{
char c[10];
int h;
do {
printf("aya mikhahid etelaat ra pak konid ?");
printf("\n\t\t\t(1)=bar asase esm");
printf("\n\t\t\t(2)=bar asase shomare daneshjooie");
gets(c);
clrscr();
h=atoi(c);} while(h<0 || h>2);
if(h==1){
delete_name2();}
if(h==2){
del_name(l);}
if(h!=1 && h!=2)
return;
}

void del_name(int l)
{
int i ;
char ans;
printf("\n\t recordi ra vared konid#(0 - %d):",l) ;
scanf("%d", &i) ;
printf("aya baraye pak kardane in record motmaenid %d?(y/n)");
ans=getche();
clrscr();
if(ans=='y'){
if( st[i].name[0]){
st[i].name[0]='\0' ;
printf("pak kardan ba movafaghiat anjam shod !!!");}
else if(!st[i].name[0])
printf("in record dar list vojood nadarad kelidi ra baraye edame bezanid…"); }
getch();
clrscr();
}
void delete_name2(void)
{
char name2[30],ans;
int i,h,w=0;
printf("\tesmi ra baraye pak kardan bezanid");
gets(name2);
printf("baraye pak kardane etelaate %s etminan darid?(y/n)",name2);
ans=getche();
clrscr();
if(ans=='y'){
for(i=0;i<MAX;i++)
{
if(strcmp(st[i].name,name2)==0) {
h=i;
w=1; }}
if(w==1){
st[h].name[0]='\0' ;
printf("pak kardan ba movafaghiat anjam shod !!!");
}
if(w==0) {
printf("esme vared shode dar list nist kelidi baraye edame bezanid…"); }}
getch();
clrscr();

}
void display(void)
{

int i, r = 0;
;
title(&r) ;
for(i = 0; i < l; i++)
if(st[i].name[0])
show
(&r, i);
gotoxy(114,r);
printf("\n\t kelidi ra baraye edame bazanid ") ;
getch();
clrscr();
gotoxy(29,r+1);
getch();
}
void fail_student(void)
{
int i, r=0 ,a=0;

for(i = 0; i < MAX; ++i){
if(st[i].name[0] && st[i].avrage < 12){
a=1;
title(&r);
show(&r, i) ; }
}
if(a==0){
printf("daneshjooye mashrooti vojood nadarad");}

gotoxy(60,r+1);
printf("kelidi ra baraye edame bazanid ") ;
getch();
clrscr();
}
void top_student(void)
{
int i, r=0 ,a=0;

for(i = 0; i < MAX; ++i){
if(st[i].name[0] && st[i].avrage >= 17){
a=1;
title(&r);
show(&r, i) ; }
}
if(a==0){
printf("behtarin daneshjooie vojood nadarad");}

gotoxy(60,r+1);
printf("kelidi ra baraye edame bazanid ") ;
getch();
clrscr();
}
void title(int *r)
{
*r = 1;
gotoxy(25,*r);
printf(" << etelaate list >>");


gotoxy(6,*r+2);
printf(" nam famil namp t-t ave vhed dars st-no ");
}
void show(int *r, int i)
{
gotoxy(10,*r+5);
printf("%s ", st[i].name) ;
(*r) ++ ;

gotoxy(15,*r+5);
printf("%s ", st[i].bbb) ;
(*r) ++ ;

gotoxy(20,*r+5);
printf("%s ", st[i].ccc) ;
(*r) ++ ;
gotoxy(25,*r+5);
printf("%d ", st[i].ddd) ;
(*r) ++ ;

gotoxy(30,*r+5);
printf("%.2f ", st[i].avrage) ;
(*r) ++ ;

gotoxy(35,*r+5);
printf("%d ", st[i].unit) ;
(*r) ++ ;

gotoxy(40,*r+5);
printf("%d ", st[i].amount_course) ;
(*r) ++ ;

gotoxy(45,*r+5);
printf("%u ", st[i].student_number) ;

(*r) ++ ;
}
void search_main(void)
{
char j[10];
int y;
do {
printf("jostojoo bar asae kodam?");
printf("\n\t\t\t(1)=bar asase esm");
printf("\n\t\t\t(2)=bar asase shomare daneshjooie");
gets(j);
clrscr();
y=atoi(j);} while (y<0 || y>2);
if(y==1){
search();}
if(y==2){
search2();}
if(y!=1 && y!=2)
return ;
}
void search(void)
{
int i,r=0,m=0,t=0;
char name2[30];
printf("esmi baraye jostojoo bezanid");
gets(name2);
clrscr();
for(i=0;st[i].name[0];i++)
{
if(strcmp(name2,st[i].name)==0){
t=i;
m=1; }}
if(m==1){
title(&r) ;
show(&r, t);}
if (m==0)

printf("chenin esmi vojood nadarad kelidi ra baraye edame bazanid …");
getch();
clrscr();
}


void save(void)
{
FILE *fp ;
register int i ;
fp = fopen("project", "wb");
if(!fp) {
printf("\n file baz nemishvad kelidi ra baraye edame bazanid...");
getch() ;
clrscr();
return ;
}
for(i = 0 ; i < MAX ; i++)
if(*st[i].name)
fwrite(&st[i], sizeof(struct student), 1, fp) ;
clrscr() ;
gotoxy(20, 10) ;
printf("zakhire shod!!!. kelidi ra baraye edame bazanid.");
getch() ;
clrscr();
}

void load(void){
FILE *fp ;
register int i ;
fp = fopen("project", "rb");
if(!fp) {
printf("\n file baz nemishvad kelidi ra baraye edame bazanid...");
getch() ;
clrscr();
return ;
}
for(i = 0 ; i < MAX; i++) {
fread(&st[i], sizeof(struct student), 1, fp);
if(feof(fp)) {
clrscr() ;
gotoxy(20,10) ;
printf("etelaat bar gozari shod!!!! kelidi ra baraye edame bazanid ");
getch() ;
clrscr();
return ;
}
}

}


void search2(void)
{
int i,num2,r=0,a;
printf("shomare daneshjooie ra vare konid baraye jostojoo");
scanf("%d",&num2);
a=0;
for(i=0;i<MAX;i++){
if(st[i].student_number==num2){
a=1;
title(&r);
show(&r,i);}}
if(a==0)
printf("in shomare dar list vojood nadarad .. kelidi ra baraye edame bazanid...");
getch();
clrscr();
}
void in_style(int l)
{
int i,j;
char name2[30];
struct student st1={0};
for(i=l-1;i>0;i--){
for(j=0;j<i;j++)
if(strcmp(st[j].name,st[j+1].name)>0){
st1=st[j];
st[j]=st[j+1];
st[j+1]=st1;
}


}
return;
}

tdkhakpur
پنج شنبه 23 اردیبهشت 1389, 16:02 عصر
واقعا اشکالات زیادی دارید فقط مشکل گفته شده شما حل شد


//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define MAX 200
struct student {
char name[32] ;
char Family[32] ;
char FatherName[32] ;
float avrage ;
int unit ;
int amount_course ;
int student_number, ddd,eee,fff;
} st[MAX];
void first_evalution(void);
void enter(void);
void search(void);
void search2(void);
void del_name(int);
void display(void);
void top_student();
void fail_student();
void show(int *, int);
void title(int *);
int menu_select(void);
void save (void);
void load(void);
void in_style(int l);
void delete_main(void);
void delete_name2(void);
void search_main(void);
int items=0;
int main(void)
{
char choice ,ans;
first_evalution();
for(;;){
choice = menu_select() ;
switch(choice) {
case 1: enter();in_style(items); break;
case 2: search_main(); break ;
case 3: top_student(); break;
case 4: fail_student(); break ;
case 5: delete_main(); break ;
case 6: save();break;
case 7: load();break;
case 8: display();break;
case 9:{
printf("baraye khorooj motmaenid ?(y/n)");
ans=getche();
clrscr();
if(ans=='y')
exit(0);break; }
}
}
}
void first_evalution(void)
{
register int i ;
for(i = 0; i < MAX; ++i)
st[i].name[0] = '\0' ;
}
int menu_select(void)
{
char s[10];
int g ;
printf("\n\n\t (1) << vorood etelaaat >>");
printf("\n\n\t (2) << jostojoo >>");
printf("\n\n\t (3) << behtarin daneshjooha >>");
printf("\n\n\t (4) << daneshjoohaye mashrooti >>");
printf("\n\n\t (5) << delete >>");
printf("\n\n\t (6) << zakhire etelaat >>");
printf("\n\n\t (7) << bargiri etelaat >>");
printf("\n\n\t (8) << namayeshe etelaat >>");
printf("\n\n\t (9) << khrooj >>");
do {
printf("\n\n\t az 1 ta 9 entekhab konid: ") ;
gets(s);
clrscr();
g = atoi(s);
} while(g < 0 || g > 9) ;
return (g) ;
}
void enter(void)
{
char name3[90];
float grade, sum_grade = 0;
int unit, sum_unit = 0 ,j,i;
int student_number;
int bbb=0,ccc=0,ddd=0,eee=0,fff=0 ;
if(items == MAX){
printf("\n list por shod east kelidi ra baraye edame bazannid");
getch();
return ;
}
printf("\n\t name daneshjoo:") ;
gets(st[items].name) ;
strcpy(name3,st[items].name);
for(i=0;i<items ;i++)
{
if(strcmp(st[i].name, name3)==0){
printf("in esm ghablan vojood darad ….. edame midahid?(y,n)");
if(getche()=='n')
{
clrscr();
st[items].name[0]='\0';
return ;
}
}
}
clrscr();
printf("\n\ famil ra vared konid:") ;
scanf("%s", &st[items].Family);
clrscr();
printf("\n\ name pedar :") ;
scanf("%s", &st[items].FatherName) ;
clrscr();
printf("\n\ tarikh tavalod ra vared konid:") ;
scanf("%d", &st[items].ddd) ;
clrscr();
printf("\n\shomare daneshjooie ra vared konid:") ;
scanf("%d", &st[items].student_number) ;
clrscr();
printf("\n\t tedade dars:") ;
scanf("%d", &st[items].amount_course) ;
clrscr();
for(j = 1; j <= st[items].amount_course; j++) {
printf("\n\ nomreye dars %d:",j);
scanf("%f", &grade) ;
clrscr();
printf("\n\ tedade vahede dars %d:", j);
scanf("%d", &unit) ;
clrscr();
sum_grade += grade * unit ;
sum_unit += unit ;
}
st[items].unit=sum_unit;
st[items].avrage = sum_grade / sum_unit ;
items ++;
}
void delete_main(void)
{
items = 0;
}
void del_name(void)
{
int i ;
char ans;
printf("\n\t recordi ra vared konid#(0 - %d):", items) ;
scanf("%d", &i) ;
printf("aya baraye pak kardane in record motmaenid %d?(y/n)");
ans=getche();
clrscr();
if(ans=='y'){
if( items>0 ){
st[i].name[0]='\0' ;
printf("pak kardan ba movafaghiat anjam shod !!!");}
else if(!st[i].name[0])
printf("in record dar list vojood nadarad kelidi ra baraye edame bezanid…");
items --;
}
getch();
clrscr();
}
void delete_name2(void)
{
char name2[30],ans;
bool deleted=false;
printf("\tesmi ra baraye pak kardan bezanid");
gets(name2);
printf("baraye pak kardane etelaate %s etminan darid?(y/n)",name2);
ans=getche();
clrscr();
if(ans=='y')
for(int i=0;i<items;i++)
if(strcmp(st[i].name,name2)==0) {
items --;
for( int j=i; j<items-1; j++)
st[j] = st[j+1];
items --;
deleted = true;
break;
}
if(deleted)
printf("pak kardan ba movafaghiat anjam shod !!!");
else
printf("esme vared shode dar list nist kelidi baraye edame bezanid…");
getch();
clrscr();
}
void display(void)
{
int i, r = 0;
;
title(&r) ;
for(i = 0; i < items; i++)
show(&r, i);
gotoxy(114,r);
printf("\n\t kelidi ra baraye edame bazanid ") ;
getch();
clrscr();
gotoxy(29,r+1);
getch();
}
void fail_student(void)
{
int i, r=0 ,a=0;
for(i = 0; i < MAX; ++i){
if(st[i].name[0] && st[i].avrage < 12){
a=1;
title(&r);
show(&r, i) ; }
}
if(a==0){
printf("daneshjooye mashrooti vojood nadarad");}
gotoxy(60,r+1);
printf("kelidi ra baraye edame bazanid ") ;
getch();
clrscr();
}
void top_student(void)
{
int i, r=0 ,a=0;
for(i = 0; i < MAX; ++i){
if(st[i].name[0] && st[i].avrage >= 17){
a=1;
title(&r);
show(&r, i) ; }
}
if(a==0){
printf("behtarin daneshjooie vojood nadarad");}
gotoxy(60,r+1);
printf("kelidi ra baraye edame bazanid ") ;
getch();
clrscr();
}
void title(int *r)
{
*r = 1;
gotoxy(25,*r);
printf(" << etelaate list >>");

gotoxy(6,*r+2);
printf(" nam famil namp t-t ave vhed dars st-no ");
}
void show(int *r, int i)
{
gotoxy(10,*r+5);
printf("%s ", st[i].name) ;
gotoxy(15,*r+5);
printf("%s ", st[i].Family) ;
gotoxy(20,*r+5);
printf("%d ", st[i].FatherName
) ;
gotoxy(25,*r+5);
printf("%d ", st[i].ddd) ;
gotoxy(30,*r+5);
printf("%.2f ", st[i].avrage) ;
gotoxy(35,*r+5);
printf("%d ", st[i].unit) ;
gotoxy(40,*r+5);
printf("%d ", st[i].amount_course) ;
gotoxy(45,*r+5);
printf("%u ", st[i].student_number) ;
(*r) ++ ;
}
void search_main(void)
{
char j[10];
int y;
do {
printf("jostojoo bar asae kodam?");
printf("\n\t\t\t(1)=bar asase esm");
printf("\n\t\t\t(2)=bar asase shomare daneshjooie");
gets(j);
clrscr();
y=atoi(j);} while (y<0 || y>2);
if(y==1){
search();}
if(y==2){
search2();}
if(y!=1 && y!=2)
return ;
}
void search(void)
{
int i,r=0,m=0,t=0;
char name2[30];
printf("esmi baraye jostojoo bezanid");
gets(name2);
clrscr();
for(i=0;st[i].name[0];i++)
{
if(strcmp(name2,st[i].name)==0){
t=i;
m=1; }}
if(m==1){
title(&r) ;
show(&r, t);}
if (m==0)
printf("chenin esmi vojood nadarad kelidi ra baraye edame bazanid …");
getch();
clrscr();
}

void save(void)
{
FILE *fp ;
register int i ;
fp = fopen("project", "wb");
if(!fp) {
printf("\n file baz nemishvad kelidi ra baraye edame bazanid...");
getch() ;
clrscr();
return ;
}
for(i = 0 ; i < MAX ; i++)
if(*st[i].name)
fwrite(&st[i], sizeof(struct student), 1, fp) ;
clrscr() ;
gotoxy(20, 10) ;
printf("zakhire shod!!!. kelidi ra baraye edame bazanid.");
getch() ;
clrscr();
}
void load(void){
FILE *fp ;
register int i ;
fp = fopen("project", "rb");
if(!fp) {
printf("\n file baz nemishvad kelidi ra baraye edame bazanid...");
getch() ;
clrscr();
return ;
}
for(i = 0 ; i < MAX; i++) {
fread(&st[i], sizeof(struct student), 1, fp);
if(feof(fp)) {
clrscr() ;
gotoxy(20,10) ;
printf("etelaat bar gozari shod!!!! kelidi ra baraye edame bazanid ");
getch() ;
clrscr();
return ;
}
}
}

void search2(void)
{
int i,num2,r=0,a;
printf("shomare daneshjooie ra vare konid baraye jostojoo");
scanf("%d",&num2);
a=0;
for(i=0;i<MAX;i++){
if(st[i].student_number==num2){
a=1;
title(&r);
show(&r,i);}}
if(a==0)
printf("in shomare dar list vojood nadarad .. kelidi ra baraye edame bazanid...");
getch();
clrscr();
}
void in_style(int l)
{
int i,j;
char name2[30];
struct student st1={0};
for(i=l-1;i>0;i--){
for(j=0;j<i;j++)
if(strcmp(st[j].name,st[j+1].name)>0){
st1=st[j];
st[j]=st[j+1];
st[j+1]=st1;
}

}
return;
}

توی برنامه نویسی زیاد سخت میگیرید میتوانید به سادگی کارهای بزرگتری را انجام بدید و همچنین وقت بیشتری را برای تعریف ساختار برنامه تان صرف کنید قسمت اصلی هر برنامه ای ساختار مناسب برنامه هست نه خود برنامه.