Joined: 27 Nov 2004 Posts: 1232 Location: www.parsx.com
Posted: Mon Jan 17, 2005 2:51 pm Post subject: آخرین تمرین ...
مثال : برنامه ای بنویسید و در آن یک لیست 50 تایی از دانشجویان با مشخصات فوق (نام ، شماره دانشجویی ، تلفن ، معدل و سال تولد ) تعریف کنید
الف ) تابعی بنویسید که تعداد و اطلاعات دانشجویان را از ورودی بخواند .
ب ) تابعی بنویسید که یک عدد صحیح بگیرد ( به عنوان پارامتر ) و دانشجویی که اندیس آن i است در خروجی بنویسد.
ج ) تابعی بنویسید که یک رشته را از ورودی گرفته و معدلهای دانشجویانی که نامشان برابر رشته است برگرداند .
د ) تابعی بنویسید که یک رشته از ورودی بگیرد تعداد دانشجویانی که پیش شماره تلفن آنها برابر رشته مزبور است برگرداند.
#include<stdio.h>
#include<conio.h>
#include<string.h>
struct student
{
char name[50];
char tel[20];
char number[12];
int ave;
int bornyear;
}str[50];
int i,j;
void sget(void);
void printi(void);
void Name(void);
void Tel(void);
main()
{
strcpy(str[1].name,"ali");
/*alef*/ sget();
/*be*/ printi();
/*jem*/ Name();
/*dal*/ Tel();
getch();
return 0;
}
/********************************************************/
void sget(void)
{
do{
clrscr();
printf("\n\n\t\t Enter a number of student :");
scanf("%d",&j);
}while((j<0)||(j>50));
for(i=0;i<j;i++)
{
clrscr();
gotoxy(5,10);
printf("\n\t Enter a name of student :");
scanf("%s",str[i].name);
printf("\n\t Enter ID code of student(%d) :",i+1);
scanf("%s",str[i].number);
printf("\n\t Enter the phone number of student(%d) :",i+1);
scanf("%s",str[i].tel);
printf("\n\t Enter the Average of student(%d) :",i+1);
scanf("%d",&str[i].ave);
printf("\n\t Enter the born year of student(%d) :",i+1);
scanf("%d",&str[i].bornyear);
}
}
/************************************************************/
void printi(void)
{
printf("\n\n\n Enter i : ");
scanf("%d",&i);
i--;
printf("\n\n the name of student(%d) is %s",i+1,str[i].name);
}
/*********************************************************/
void Name(void)
{
int ii=-1;
char ss[50];
printf("\n\n Enter name of student :");
scanf("%s",ss);
for(i=0;i<j;i++)
if(!strcmp(ss,str[i].name)){
ii=0;
printf("\n the average of student is %d"
,str[ii].ave);
}
if(ii)printf("\n\t\t\t NOT FOUND !!!");
}
/********************************************************/
void Tel(void)
{
int ii=1;
char ss[4],oo[4];
char *s;
printf("\n\n Enter student local code tel:");
scanf("%s",ss);
for(i=0;i<j;i++)
{
s=str[i].tel;
*oo=*s;
*(oo+1)=*(s+1);
*(oo+2)=*(s+2);
oo[3]=0;
if(!strcmp(ss,oo)){
ii=0;
printf("\n the local code of student is %s"
,str[ii].name);
}
}
if(ii)printf("\n\t\t\t NOT FOUND !!!");
}
لازم به یادآوری نیست که [str[50 از نوع سراسری تعریف شده و در متغییر s ادرس اولین شماره هر دانشجو ریخته می شود و ...
اگه یکم سنگین شد به بزرگواری خودتون ببخشید .
سوالی بود در خدمتم .
خیلی چاکریم .
Posted: Mon Jan 17, 2005 5:49 pm Post subject: debug
void Tel(void)
.
.
.
char *s;
s=str[i].tel;
اين يه تيكه برام قابل فهم نيست آرش ؟!
يه متغير s از نوع اشاره گر به كاراكتر تعريف كردي ...
بعد شماره تلفني كه احتمالا چند كاراكتر (كمتر از 12) را ميريزي توش ؟!
بازش كن آرش جان ...
مرصي .
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum