ParsX.com
پذیرش پروژه از دانشجویی ... تا سازمانی 09376225339
 
   ProfileProfile   Log in to check your private messagesLog in to check your private messages  |  FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups Log inLog in   RegisterRegister 

جواب تمرینات c
Goto page 1, 2  Next
 
Post new topic   Reply to topic    ParsX.com Forum Index -> C/C++ Programming
View previous topic :: View next topic  
Author Message
unknown
مدير بخش ويژوال بيسيك
مدير بخش ويژوال بيسيك


Joined: 05 Dec 2004
Posts: 439
Location: Tehran

PostPosted: Sat Jan 15, 2005 10:56 am    Post subject: جواب تمرینات c Reply with quote

سلام
من چند تا از تمرین ها رو حل کردم. امیدوارم کمکتون کنه
نکته:
البته متاسفانه هنوز نتونستم تابع strstr رو بنویسم .اگر نوشتم حتما میزارم تو سایت...
اون سوال آخر رو هم دارم روش کار میکنم (ساختمان)
پیشنهاد میکنم این برنامه رو توی c اجرا کنید تا خروجی هر تابع رو ببینید
من برای اطمینان از درستی توابع خودم
توابع c رو هم فراخوانی کردم
موفق باشید...



/*
Developed by Amir
1383/10/26
*/
#include<stdio.h>
#include<conio.h>
#include<string.h>
int mystrlen1(char []);
int mystrlen2(char *);

void mystrcpy1(char [],char []);
void mystrcpy2(char *,char *);

void mystrcat1(char [],char []);

char *mystrchr(char *,char);
char *mystrrchr(char *,char);

int mystrcmp(char [],char []);

main(){
char str1[]="Amir";
char str2[]="Computer";
char str3[]="new";
char str4[]=" Moradabadi";
char str5[]="I like the c language.";
char str6[]="Reza";
char str7[]="Ali";
char ch='l';
int res,myres;

clrscr();
printf(" (str1=%s)(str2=%s)(str3=%s)(str4=%s)",str1,str2,str3,str4);
printf("\n strlen (%s) = %d",str1,strlen(str1));
printf("\n Mystrlen1 (%s) = %d",str1,mystrlen1(str1));
printf("\n Mystrlen2 (%s) = %d",str1,mystrlen2(str1));
printf("\n");

strcpy(str2,str3);
printf("\n strcpy(str2,str3)    new str2 = %s",str2);
mystrcpy1(str2,str3);
printf("\n Mystrcpy1(str2,str3) new str2 = %s",str2);
mystrcpy2(str2,str3);
printf("\n Mystrcpy2(str2,str3) new str2 = %s",str2);
printf("\n");

strcat(str1,str4);
printf("\n strcat(str1,str4)    new str1 = %s",str1);
mystrcat1(str1,str4);
printf("\n Mystrcat1(str1,str4) new str1 = %s",str1);
printf("\n");
printf("\n (str5=%s)",str5);
printf("\n Searching for '%c' in the str5",ch);
if (mystrchr(str5,ch))
   printf("\n The first '%c' was found at address %d where index =%d",ch,mystrchr(str5,ch),mystrchr(str5,ch)-str5);
else
   printf("\n The '%c' was not found at this string (strchr)",ch );

if (mystrrchr(str5,ch))
   printf("\n The last '%c' was found at address %d where index =%d",ch,mystrrchr(str5,ch),mystrrchr(str5,ch)-str5);
else
   printf("\n The '%c' was not found at this string (strrchr)",ch );
printf("\n");

printf("\n (str6=%s) (str7=%s)",str6,str7);
res=strcmp(str6,str7);
if (res>0)
   printf("\n strcmp = str6 > str7");
else if(res<0)
   printf("\n strcmp = str6 < str7");
else
   printf("\n strcmp = str6 = str7");

myres=mystrcmp(str6,str7);
if (myres>0)
   printf("\n Mystrcmp = str6 > str7");
else if(myres<0)
   printf("\n Mystrcmp = str6 < str7");
else
   printf("\n Mystrcmp = str6 = str7");
getch();
return 0;
}
/************************************Functions******************************/
int mystrlen1(char list[])
{
int i,count=0;
for(i=0;list[i];i++)
   count++;
return count;
}
//---------------------------------------------------------
int mystrlen2(char *list)
{
int count=0;
while(*list)
{
   count++;
   list++;
}
return count;
}
//---------------------------------------------------------
void mystrcpy1(char str1[],char str2[])
{
int i;
for(i=0;str2[i];i++)
   str1[i]=str2[i];
str1[i]='\0';
return;
}
//---------------------------------------------------------
void mystrcpy2(char *str1,char *str2)
{
while(*str2)
{
   *str1=*str2;
   str1++;
   str2++;
}
*str1='\0';
return;
}
//---------------------------------------------------------
void mystrcat1(char s1[],char s2[])
{
int i,j,k;
for(i=0;s1[i];i++);
for(j=i,k=0;s2[k];j++,k++)
   s1[j]=s2[k];
s1[j]='\0';
return;
}
//---------------------------------------------------------
char *mystrchr(char *str,char ch)
{
while(*str)
{
if(*str==ch)
   return str;
str++;
}
return 0;
}
//---------------------------------------------------------
char *mystrrchr(char *str,char ch)
{
int *temp=0;
while(*str)
{
if(*str==ch)
{
   temp=str;
}
str++;
}
return temp;
}
//---------------------------------------------------------
int mystrcmp(char s1[],char s2[])
{
int i;
for(i=0;s1[i];i++)
{
   if(s1[i]>s2[i])
      return +1;
   else if(s1[i]<s2[i])
      return -1;
   else
      continue;
}
return 0;
}


Last edited by unknown on Tue Feb 01, 2005 4:31 pm; edited 1 time in total
Back to top
unknown
مدير بخش ويژوال بيسيك
مدير بخش ويژوال بيسيك


Joined: 05 Dec 2004
Posts: 439
Location: Tehran

PostPosted: Sat Jan 15, 2005 11:04 am    Post subject: Reply with quote

متاسفانه چون text box فارسی بود کد نیز راست چین شد.
شما میتوانید کد را کپی کنید و در notepad با پسوند c.
ذخیره کنید بعد از c آن فایل رو باز کنید
Back to top
Amir
مدير مباحث عمومي سايت


Joined: 30 Nov 2004
Posts: 1088
Location: Age Hammam Nabasham To Lebasamam

PostPosted: Sat Jan 15, 2005 1:08 pm    Post subject: Reply with quote

مرسي اقا.

من كه از چيز هايي كه بالا نوشتي، فقط فهميدم كه اون آبيه ايميله! همين. Sad

اگه ميذاشتي توي قسمت كد ها همه چيز درست نشون داده ميشد. الان هم ميتوني اديتش كني.
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Sat Jan 15, 2005 5:51 pm    Post subject: Reply with quote

امير جان دستت درد نكنه همونطوري كه امير جان گفت امير جان كدهايي كه انگليسي ميزني رو سلكت كن و دكمه code رو توي اديتور بزن .
كه من اين دفعه رو انجام دادم
دستت درد نكنه ...
Back to top
arash
مدير بخش سي
مدير بخش سي


Joined: 27 Nov 2004
Posts: 1232
Location: www.parsx.com

PostPosted: Sat Jan 15, 2005 6:38 pm    Post subject: Reply with quote

ممنون امیر جان
بازم کاری داشتم مزاحم بشم ؟؟؟
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Sat Jan 15, 2005 8:38 pm    Post subject: Reply with quote

چه عجب آق آرش ! راه گم كردي داداش !
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Sun Jan 16, 2005 8:35 pm    Post subject: Reply with quote

سورس كد تابع رشته اي strstr كه چگونه ساخته شده است را ميتوانيد در ادرس زير پيدا كنيد
http://computer.parsx.com/viewtopic.php?p=765#765
Back to top
unknown
مدير بخش ويژوال بيسيك
مدير بخش ويژوال بيسيك


Joined: 05 Dec 2004
Posts: 439
Location: Tehran

PostPosted: Mon Jan 17, 2005 7:52 am    Post subject: Reply with quote

وحید جون ممنون
کلی حال دادی
Back to top
arash
مدير بخش سي
مدير بخش سي


Joined: 27 Nov 2004
Posts: 1232
Location: www.parsx.com

PostPosted: Mon Jan 17, 2005 8:12 am    Post subject: Reply with quote

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

#include<stdio.h>
#include<conio.h>
void cpy(char*,char*);
main()
{
   char s1[200],s2[200];
   clrscr();
   printf("\n\n\n  Enter s1 :");
   gets(s1);
   printf("\n\n\n Enter s2 :");
   gets(s2);
   cpy(s1,s2);
   printf("\n\n s1 = %s \n\n s2 = %s \n",s1,s2);
   printf("\n\n\n\n\n \t\t www.parsx.com\n");
   getch();
   return 0;
}
void cpy(char *s1,char *s2)
{
     int i=0;
     for(i=0;*(s2+i);*(s1+i)=*(s2+i),i++);
     *(s1+i)='\0';
     return;
}


#include<stdio.h>
#include<conio.h>
void cat(char*,char*);
main()
{
   char s1[200],s2[200];
   clrscr();
   printf("\n\n\n  Enter s1 :");
   gets(s1);
   printf("\n\n\n Enter s2 :");
   gets(s2);
   cat(s1,s2);
   printf("\n\n strcat(s1,s2) = %s \n",s1);
   printf("\n\n\n\n\n \t\t www.parsx.com\n");
   getch();
   return 0;
}
void cat(char *s1,char *s2)
{
     int i=0,j=0;
     for(i=0;*(s1+i);i++);
     for(;*(s2+j);*(s1+i)=*(s2+j),i++,j++);
     *(s1+i)='\0';
     return;
}

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

#include<stdio.h>
#include<conio.h>
char* schr(char*,char);
main()
{
   char s1[200],ch,*ptr;
   clrscr();
   printf("\n\n\n  Enter s1 :");
   gets(s1);
   printf("\n\n\n Enter a character :");
   ch=getche();
   ptr=schr(s1,ch);
   if(ptr)
   printf("\n\n strchar(s1,ch) = %d \n",(ptr-s1)+1);
   printf("\n\n\n\n\n \t\t www.parsx.com \n");
   getch();
   return 0;
}
char* schr(char *s1,char ch)
{
     if(*s1)
     {
     if(*s1!=ch)return schr(++s1,ch);
     return(s1);
     }
     printf("\n\n Not found this char !!!");
     return 0;
}


Last edited by arash on Mon Jan 17, 2005 9:03 am; edited 1 time in total
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Mon Jan 17, 2005 8:41 am    Post subject: Reply with quote

دستت درد نكنه ...
Back to top
arash
مدير بخش سي
مدير بخش سي


Joined: 27 Nov 2004
Posts: 1232
Location: www.parsx.com

PostPosted: Mon Jan 17, 2005 9:08 am    Post subject: Reply with quote

به قول امیر خیلی چاکریم !!!
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 3067
Location: Tehran

PostPosted: Mon Jan 17, 2005 11:09 am    Post subject: Reply with quote

آرش تو چرا انقدر بازگشت داري !!! هميشه به جلو برو دلبندم !
جدا تو بازگشتي حرف نداري آرش ...
Back to top
Mahnazz
مهمون يكي دو روزه


Joined: 04 Dec 2004
Posts: 10

PostPosted: Mon Jan 17, 2005 11:15 am    Post subject: Reply with quote

دستتون درد نكنه امير جان و باقي دوستان
جدا به اين برنامه ها احتياج داشتم ...
Back to top
arash
مدير بخش سي
مدير بخش سي


Joined: 27 Nov 2004
Posts: 1232
Location: www.parsx.com

PostPosted: Mon Jan 17, 2005 3:10 pm    Post subject: Reply with quote

ما همیشه کوچیک برو بچز parsx.com هستیم .
و کوچیک برو بچز بامرای مثل شما .
هر چی بلدم هر چی دارم از دیگرانه پس آفرین به همه .
Back to top
unknown
مدير بخش ويژوال بيسيك
مدير بخش ويژوال بيسيك


Joined: 05 Dec 2004
Posts: 439
Location: Tehran

PostPosted: Mon Jan 17, 2005 7:23 pm    Post subject: Reply with quote

آقا چاکریم.....
آرش یواش یواش داره خودشو نشون میده.
امیدوارم هممون امتحان رو خوب بدیم.

بازم چاکریم.....
Back to top
Display posts from previous:   
Post new topic   Reply to topic    ParsX.com Forum Index -> C/C++ Programming All times are GMT + 3.5 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
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