X
تبلیغات
زولا

برنامه نویسان کامپیوتر

این وب سایت به منظور استفاده دانشجویان دانشگاه شهید بهشتی کرج ایجاد شده

جلسه هفتم

char S[10];

cin>>S;

در انتهای رشته بعد از آخرین حرف \0 به معنای پایان رشته قرار می گیرد. در کد فوق کلمه ali وارد شود در سلول S[3] مقدار \0 قرار می گیرد.

برای دریافت رشته بهتر است از gets(s1) استفاده کنیم که s1 نام رشته مورد نظر است.

char s1[20],s2[20];

cout<<"\nenter 1 string:";

cin>>s1;

cout<<"\nenter 1 string:";

gets(s2);

 

اگر در برابر هر دو دستور cin و gets عبارت ali alavi وارد شود درون s1 فقط کلمه ali ولی درون s2 کل عبارت ali alavi دریافت می شود. در رشته ورودی در برابر cin به محض ورود space  دستور cin تصور این را دارد که انتهای رشته است.

تابع gets درون کتابخانه stdio.h قرار دارد.

سوال: اگر رشته ای وارد کنیم، تعداد حروف چگونه بدست می آوریم؟

char str1[30];

cout<<"\nenter 1 string:";

gets(str1);

int count=0;

for(int i=0;str1[i]!='\0';i++)

                   count++;

cout<<"\nlen(str1)="<<count;

به جای سه خط آخر کد فوق می توان نوشت:

for(int i=0;str1[i];i++)

                   count++;

cout<<"\nlen(str1)="<<count;

تمامی کاراکترها از لحاظ ارزش true محسوب می شوند به جز \0

تابع strlen(s1) طول رشته s1 را می دهد. . این تابع در کتابخانه string.h واقع است.

 

مثال : برنامه ای بنویسید رشته ای به طول حداکثر 10 حرف دریافت کند و کاراکترهای آن رشته زیر هم چاپ کند. مثلا اگر کاربر ali وارد کند حروف a,l,i زیر هم چاپ شود.

char s1[10];

   cout<<"\n enter 1 string:";

   gets(s1);

   for(int i=0;i<strlen(s1) ;i++)

          cout<<"\n"<<s1[i]<<"\t"<<(int)s1[i];

کد فوق علاوه بر چاپ حروف رشته وارد شده کد اسکی حروف را هم چاپ می کند.

 

مثال: دریافت یک رشته و شمارش تعداد حروف بزرگ و کوچک آن. مثلا اگر کاربر عبارت sAlAM وارد کند باید 2 حرف کوچک و 3 حرف بزرگ چاپ کند.

 

          char s1[30];

   cout<<"\n enter 1 string:";

   gets(s1);

   int tedad_koochak=0 , tedad_bozorg=0;

   for(int i=0;s1[i];i++)

          if(s1[i]>='a' && s1[i]<='z')

          tedad_koochak++;

          else if(s1[i]>='A' && s1[i]<='Z')

         tedad_bozorg++;

 

          cout<<"\ntedad_koochak="<<tedad_koochak;

   cout<<"\ntedad_bozorg="<<tedad_bozorg;

به جای حرف a می توان کد اسکی آن (97) را هم نوشت.

 

مثال: برنامه ای که رشته دریافت کند و همه حروف کوچک آن را تبدیل به حروف بزرگ کند یعنی اگر کاربر کلمه Ali را وارد کند در پایان در اثر چاپ رشته ALI چاپ شود.

   char s1[30];

   cout<<"\n enter 1 string:";

   gets(s1);

   for(int i=0;s1[i];i++)

                    if(s1[i]>='a' && s1[i]<='z')

         s1[i]-=32;

   cout<<"\nS1="<<s1;

 

کدی بنویسید که رشته ای توسط کاربر وارد شود و معکوس آن در رشته دیگری قرار گرفته چاپ شود.

 

 

 

 

 

 

\0

a

z

e

r

i

l

a

 

 

 

 

 

 

 

\0

a

l

i

r

e

z

a

 

  char s1[30],s2[30];

   int j=0;

   cout<<"\n enter 1 string:";

   gets(s1);

   for (int i=strlen(s1)-1;i>=0;i--)

                   s2[j++]=s1[i] ;

   s2[j]='\0';

   cout<<"\ns2="<<s2;

توابع مرتبط با رشته ها موجود در string.h:

تابع strlen(s1): طول رشته s1 را میدهد.

تابع strcpy(s1,s2): رشته s2 را در رشته s1 کپی می کند.

تابع strcat(s1,s2) : رشته s2 را به انتهای s1 می چسباند.

تابع strcmp(s1,s2) را با هم مقایسه می کند.

اگر s1>s2 باشد خروجی تابع مثبت

اگر s1<s2 باشد خروجی تابع منفی

اگر s1=s2 باشد خروجی تابع صفر است

اگر s1 برابر با ali و s2 برابر با reza باشد دستور strcat(s1,s2) باعث می شود s1 برابر با alireza و s2 برابر با reza شود.

 

مثال: برنامه ای بنویسید که یک رشته را دریافت کند و مشخص کند که آیا رشته ورودی با وارونش برابر است یا خیر؟

 

  char s1[30],s2[30];

   int j=0;

   cout<<"\n enter 1 string:";

   gets(s1);

   for (int i=strlen(s1)-1;i>=0;i--)

                   s2[j++]=s1[i] ;

   s2[j]='\0';

if (strcmp(s1,s2)==0)

                   cout<<"\n s1 ba varoonash barabar ast";

else

          cout<<"\n s1 ba varoonash barabar nist";    

 

 

 

 

 

 

 

آرایه های دو بعدی

نوع عناصر آرایه        نام آرایه[تعداد سطر][تعداد ستونها];

int A[5][7];

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A[4][6]

 

پر کردن آرایه فوق با اعداد تصادفی زیر 100

for(int i=0;i<5;i++)

          for(int j=0;j<7;j++)

                   A[i][j]=random(100);

چگونه اسامی 5 نفر را بگیریم و در آرایه قرار دهیم

char names[5][20];

r

e

z

a

\0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

l

i

\0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

i

m

a

\0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

for(int i=0;i<5;i++)

          {

         cout<<"\nenter name "<<(i+1)<<":";

           gets(names[i]);

}

برنامه ای بنویسید که اسامی 5 نفر را دریافت و پس از قرار دادن آن اسامی درون آرایه، اسمی که بیشترین طول را دارد، چاپ کند.

char names[5][20];

for(int i=0;i<5;i++)

          {

         cout<<"\nenter name "<<(i+1)<<":";

           gets(names[i]);

}

int maxlength_pos=0;

for(int i=1;i<5;i++)

if (strlen(names[i])>strlen(names[maxlength_pos]))

maxlength_pos=i;

cout<<"\n"<<names[maxlength_pos]<<"  with length="<<strlen(names[maxlength_pos]);

 

تمرین دوم : دریافت اسامی 7 نفر و مرتب کردن نام افراد بر اساس حروف الفبا(با استفاده از روش مرتب سازی حبابی bubble sort )

 

 

دانلود فایل مثال ها

(*.cpp)