آموزش برنامه نویسی به زبان ++C

این وبلاگ جهت آموزش برنامه نویسی به زبان ++C برای دانش آموزان دبیرستان فرزانگان ایجاد شده است.
پنجشنبه, ۱۶ آذر ۱۳۹۱، ۰۶:۱۹ ب.ظ

string یا رشته

تا کنون یاد گرفته ایم که با آرایه ها کار کنیم. اگر بخواهیم آرایه ای از کاراکترها بسازیم  و مثلا عبارت hello را در این آرایه بریزیم باید تک تک حروف را یکی یکی و با فاصله در آرایه بریزیم. منطقی به نظر نمی رسد که تنها راه دریافت عبارتی مثل hello دادن تک تک کاراکترها با فاصله باشد. 

برای این که عبارتی از کاراکترها را به صورت یکباره از ورودی بگیریم می توانیم از نوع دیگری استفاده کنیم که به رشته یا string معروف است. 

برای تعریف String  باید از یکی از دو فرمت زیر استفاده کنیم. 


string name;

or

string name(10,'a');

در تعریف نوع اول طول string محدودیتی ندارد. اما در نوع دوم طول string  یا رشته را مشخصا 10 خانه تعریف کرده ایم و مقدار پیشفرض تمام خانه ها را کاراکتر A قرار داده ایم. 

در حالت دوم باز هم طول رشته می تواند بیشتر از 10 خانه بشود. 

برای پر کردن یک رشته می توانیم از فرمت زیر استفاده کنیم: 

string a;
cin>>a;

برای نمایش یک رشته می توانیم از فرمت زیر استفاده کنیم: 

string a;
cout<<a;
برای اندازه گیری طول رشته از دستور زیر استفاده میکنیم: 
int n=a.length();
توجه کنید برای استفاده از رشته در برنامه مان باید حتما تابع کتابخانه ای string را در بالای برنامه include کنیم، به صورت زیر: 
#include<string>

using namespace std;


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


مثال 1- برنامه ای بنویسید که یک رشته را از ورودی گرفته و آن را پس از دریافت کامل نمایش دهد: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a(10,'a');
    for(int i=0;i<10;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<10;i++)
    {
        cout<<a[i];
    }
    getch();
    return 0;
}
برای برنامه ی بالا شرط کرده ایم که طول رشته 10 خانه باشد. 

مثال 2- برنامه ای بنویسید که یک رشته را از ورودی گرفته و آن را پس از دریافت کامل در یک رشته بریزد و رشته دوم را نمایش دهد: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a,b;
    cin>>a;
    int n=a.length();
    b=a;        //b ra barabar ba a gharar midahim ke tuleshan yeki beshavad!
for(int i=0;i<n;i++) { b[i]=a[i]; } cout<<b; getch(); return 0; }

مثال 3- برنامه ای بنویسید که یک رشته را از ورودی گرفته و آن را پس از دریافت کامل به صورت وارونه در خروجی نمایش دهد: 

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

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a,b;
    cin>>a;
    int n=a.length();
    b=a;        //b ra barabar ba a gharar midahim ke tuleshan yeki beshavad!
    for(int i=0;i<n;i++)
    {
        b[i]=a[n-i-1];
    }
    cout<<b;
    getch();
    return 0;
}
مثال 4- برنامه ای بنویسید که دو رشته را از ورودی گرفته و آنها را در رشته ی سومی به هم بچسباند و رشته ی سوم را نمایش دهد: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a,b;
    cin>>a>>b;
    int n=a.length();
    int m=b.length();
    string c(n+m,' ');     //tule s barabare majmue n+m ast. 
    for(int i=0;i<n;i++)
    {
        c[i]=a[i];
    }
    for(int i=n;i<n+m;i++)
    {
        c[i]=b[i-n];
    }
    cout<<c;
    getch();
    return 0;
}
این برنامه را به صورت ساده ی زیر نیز میتوان نوشت: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a,b;
    cin>>a>>b;
    string c=a+b;
    cout<<c;
    getch();
    return 0;
}

مثال 5- برنامه ای بنویسید که یک رشته ار از ورودی گرفته و از خانه ی 4 تا خانه ی 7ام آن را با کاراکتر * عوض کند: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a;
    cin>>a;
    for(int i=4;i<8;i++)
    {
        a[i]='*';
    }
    cout<<a;
    getch();
    return 0;
}
مثال 6- برنامه ای بنویسید که یک رشته را از ورودی گرفته و خانه های 4 تا 7 ام آن را با رشته ی 6893 پر کند: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a;
    cin>>a;
    string b="6893";
    for(int i=4;i<8;i++)
    {
        a[i]=b[i-4];
    }
    cout<<a;
    getch();
    return 0;
}
مثال 7- برنامه ای بنویسید که یک رشته را از ورودی گرفته و خانه های 4 تا 7 ام آن را واروونه کند و سپس آ ن را نمایش بدهد: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a;
    cin>>a;
    string b;
    for(int i=7;i>3;i--)  //varune kardane a[4-7] dar b[0-3]
    {
        b[7-i]=a[i];
    }
    for(int i=4;i<8;i++)  //gharar dadane b be jaye a[4-7]
    {
        a[i]=b[i-4];
    }
    cout<<a;
    getch();
    return 0;
}


برای مطالعه مثالهای بیشتر به قسمت بعدی بروید! 



نوشته شده توسط سارا نازاری
ساخت وبلاگ در بلاگ بیان، رسانه متخصصان و اهل قلم

آموزش برنامه نویسی به زبان ++C

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

string یا رشته

پنجشنبه, ۱۶ آذر ۱۳۹۱، ۰۶:۱۹ ب.ظ

تا کنون یاد گرفته ایم که با آرایه ها کار کنیم. اگر بخواهیم آرایه ای از کاراکترها بسازیم  و مثلا عبارت hello را در این آرایه بریزیم باید تک تک حروف را یکی یکی و با فاصله در آرایه بریزیم. منطقی به نظر نمی رسد که تنها راه دریافت عبارتی مثل hello دادن تک تک کاراکترها با فاصله باشد. 

برای این که عبارتی از کاراکترها را به صورت یکباره از ورودی بگیریم می توانیم از نوع دیگری استفاده کنیم که به رشته یا string معروف است. 

برای تعریف String  باید از یکی از دو فرمت زیر استفاده کنیم. 


string name;

or

string name(10,'a');

در تعریف نوع اول طول string محدودیتی ندارد. اما در نوع دوم طول string  یا رشته را مشخصا 10 خانه تعریف کرده ایم و مقدار پیشفرض تمام خانه ها را کاراکتر A قرار داده ایم. 

در حالت دوم باز هم طول رشته می تواند بیشتر از 10 خانه بشود. 

برای پر کردن یک رشته می توانیم از فرمت زیر استفاده کنیم: 

string a;
cin>>a;

برای نمایش یک رشته می توانیم از فرمت زیر استفاده کنیم: 

string a;
cout<<a;
برای اندازه گیری طول رشته از دستور زیر استفاده میکنیم: 
int n=a.length();
توجه کنید برای استفاده از رشته در برنامه مان باید حتما تابع کتابخانه ای string را در بالای برنامه include کنیم، به صورت زیر: 
#include<string>

using namespace std;


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


مثال 1- برنامه ای بنویسید که یک رشته را از ورودی گرفته و آن را پس از دریافت کامل نمایش دهد: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a(10,'a');
    for(int i=0;i<10;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<10;i++)
    {
        cout<<a[i];
    }
    getch();
    return 0;
}
برای برنامه ی بالا شرط کرده ایم که طول رشته 10 خانه باشد. 

مثال 2- برنامه ای بنویسید که یک رشته را از ورودی گرفته و آن را پس از دریافت کامل در یک رشته بریزد و رشته دوم را نمایش دهد: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a,b;
    cin>>a;
    int n=a.length();
    b=a;        //b ra barabar ba a gharar midahim ke tuleshan yeki beshavad!
for(int i=0;i<n;i++) { b[i]=a[i]; } cout<<b; getch(); return 0; }

مثال 3- برنامه ای بنویسید که یک رشته را از ورودی گرفته و آن را پس از دریافت کامل به صورت وارونه در خروجی نمایش دهد: 

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

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a,b;
    cin>>a;
    int n=a.length();
    b=a;        //b ra barabar ba a gharar midahim ke tuleshan yeki beshavad!
    for(int i=0;i<n;i++)
    {
        b[i]=a[n-i-1];
    }
    cout<<b;
    getch();
    return 0;
}
مثال 4- برنامه ای بنویسید که دو رشته را از ورودی گرفته و آنها را در رشته ی سومی به هم بچسباند و رشته ی سوم را نمایش دهد: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a,b;
    cin>>a>>b;
    int n=a.length();
    int m=b.length();
    string c(n+m,' ');     //tule s barabare majmue n+m ast. 
    for(int i=0;i<n;i++)
    {
        c[i]=a[i];
    }
    for(int i=n;i<n+m;i++)
    {
        c[i]=b[i-n];
    }
    cout<<c;
    getch();
    return 0;
}
این برنامه را به صورت ساده ی زیر نیز میتوان نوشت: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a,b;
    cin>>a>>b;
    string c=a+b;
    cout<<c;
    getch();
    return 0;
}

مثال 5- برنامه ای بنویسید که یک رشته ار از ورودی گرفته و از خانه ی 4 تا خانه ی 7ام آن را با کاراکتر * عوض کند: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a;
    cin>>a;
    for(int i=4;i<8;i++)
    {
        a[i]='*';
    }
    cout<<a;
    getch();
    return 0;
}
مثال 6- برنامه ای بنویسید که یک رشته را از ورودی گرفته و خانه های 4 تا 7 ام آن را با رشته ی 6893 پر کند: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a;
    cin>>a;
    string b="6893";
    for(int i=4;i<8;i++)
    {
        a[i]=b[i-4];
    }
    cout<<a;
    getch();
    return 0;
}
مثال 7- برنامه ای بنویسید که یک رشته را از ورودی گرفته و خانه های 4 تا 7 ام آن را واروونه کند و سپس آ ن را نمایش بدهد: 

#include <conio.h>
#include <iostream>
#include <string>

using namespace std;
int main()
{
    string a;
    cin>>a;
    string b;
    for(int i=7;i>3;i--)  //varune kardane a[4-7] dar b[0-3]
    {
        b[7-i]=a[i];
    }
    for(int i=4;i<8;i++)  //gharar dadane b be jaye a[4-7]
    {
        a[i]=b[i-4];
    }
    cout<<a;
    getch();
    return 0;
}


برای مطالعه مثالهای بیشتر به قسمت بعدی بروید! 

موافقین ۱ مخالفین ۰ ۹۱/۰۹/۱۶
سارا نازاری

نظرات  (۷)

tu mesale 3 vaghty b[i]=a[n-i-1] , in 1ee vase chie
?
پاسخ:
خب میدونیم که شماره آخرین خونه رشته 
n-1
هستش
حالا باید j تا کمتر هم باشه
میشه همون!

 سلام خانوم  s2=s1.substr(10,2  یعنی چی؟ 

۱۱ اسفند ۹۲ ، ۲۱:۱۹ شاهین احمدی
سلام این 3 تا سوال رو هم جوابش رو اگر میشه قرار بده...
1 - یک کلمه از ورودی بگیرد و حروف آن را یکی در میان چاپ کند. مثلا اگر وارد کرده باشیم zarrafe باید چاپ کند zrae.
2- دو کلمه از ورودی بگیرد و کلمه اول را بدون حروف کلمه دوم ( بدون توجه به ترتیب) چاپ کنید. مثلا اگر در کلمه اول tehran و کلمه دوم abr باشد. از کلمه اول فقط tehn با قی می ماند و باید چاپ شود.
3- یک کلمه از ورودی بگیرد و آن را بدون حروف تکراری چاپ کند. مثلا اگر وارد کرده باشیم shotormorgh باید چاپ کند: shotrmogh . ترتیب مهم است! مثلا در این مثال r دوم چاپ نشده نه r اول! یعنی از بین حروف تکرار همیشه اولی اش ( همونی که زودتر اومده) را می گذاریم باقی بماند...
----
خیلی ممنون میشم این 3 تارم جواب بدی...
برنامه یک EDITORدر C ]I چه جوریه
salam dost aziz bebakhshid man mikham az + dar dastor if estfade konm bayad chikar konm mesle zir
if  (+== n 
پاسخ:
؟ متوجه نشدم!؟!
سلام یه برنامه میخواستم که طول رشته رو واسم محاسبه کنه مثلآ vahidرو بگیره و بگه 5تا حرف داره
۱۹ آبان ۹۵ ، ۱۶:۲۱ امیرحسین پورسلیمان
سلام یه برنامه می خواستم که رشته رو از کاربر بگیره و آن را برعکس چاپ کند مثلا salam را بگیرد و malas چاپ کند .

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی