نمایش نتایج 1 تا 23 از 23

نام تاپیک: معکوس کردن یک رشته

  1. #1
    کاربر دائمی آواتار mahmood3d
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    همه جای ایران سرای من است
    پست
    334

    Tick معکوس کردن یک رشته

    با عرض سلام
    من تازه شروع به برنامه نویسی با ++c کردم . می خواستم یه برنامه بنویسم که یه رشته ای رو بگیره و کلمه به کلمه اون رو معکوس کنه . مثل : ali reza که در خروجی ila azer چاپ کنه .
    همین برنامه رو نوشتم ولی تمام رشته رو معکوس می کنه یعنی همون علیرضا رو به صورت azer ila چاپ می کنه .
    فقط زیاد با کدهای پیشرفته ننویسید تا من هم متوجه بشم .

  2. #2
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372
    خوب این نباید کار چندان مشکلی باشه . . .

    شما دو تا رشته با طول مناسب رو در نظر بگیر ، در رشته اول رشته اصلی رو که میخوای روش کار کنی رو وارد کنید حالا از یک حلقه for استفاده کنید و برای شرط حلقه هم strlen رشته اول رو در نظر بگیرید . فقط چیزی که هست اینه که باید در رشته خودتون با همین حلقه کاراکتر به کاراکتر جلو برید و کاراکتر ها رو در رشته دوم ذخیره کنید ، زمانی که به کاراکتر space ("") رسیدید رشته دوم به صورت معکوس در خروجی چاپ کنید و باز همین رویه رو تا انتهای رشته اول ادامه بدید .

  3. #3
    سلام دوست عزیز اینم واسه شما فقط آخر رشتت یه 0 وارد کن.


    #include "stdafx.h"
    #include "fstream.h"
    #include <string.h>
    void main()
    {
    char s[20];
    cin>>s;
    while(1)
    {
    for(int i=strlen(s)-1;i>=0;i--)
    cout<<s[i];
    cout<<" ";
    cin>>s;
    if(!strcmp(s,"0"))
    break;
    }
    }
    آخرین ویرایش به وسیله radium : چهارشنبه 04 اردیبهشت 1387 در 18:25 عصر

  4. #4
    کاربر دائمی آواتار mahmood3d
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    همه جای ایران سرای من است
    پست
    334

    Smile

    نقل قول نوشته شده توسط eshgh_82 مشاهده تاپیک
    خوب این نباید کار چندان مشکلی باشه . . .

    شما دو تا رشته با طول مناسب رو در نظر بگیر ، در رشته اول رشته اصلی رو که میخوای روش کار کنی رو وارد کنید حالا از یک حلقه for استفاده کنید و برای شرط حلقه هم strlen رشته اول رو در نظر بگیرید . فقط چیزی که هست اینه که باید در رشته خودتون با همین حلقه کاراکتر به کاراکتر جلو برید و کاراکتر ها رو در رشته دوم ذخیره کنید ، زمانی که به کاراکتر space ("") رسیدید رشته دوم به صورت معکوس در خروجی چاپ کنید و باز همین رویه رو تا انتهای رشته اول ادامه بدید .
    ممنون از اینکه کمکم کردین ولی اگه می شه بیشتر توضیح بدین . من الان این برنامه رو طوری نوشتم که کل رشته رو معکوس می کنه یعنی آخرین کاراکتر آرایه رو تو اولین کاراکتر آرایه دیگه ای کپی می کنم تا اولین کاراکتر آرایه اول که برنامه رو در زیر براتون می زارم . اگه می شه بگین این برنامه رو باید چه طوری تغییر بدم ؟

    #include "iostream.h"
    #include "conio.h"
    #include "stdio.h"
    #include "string.h"
    void main(){
    int z=0;
    char a[255],b[255];
    cin.get(a,255);
    z=strlen(a)-1;
    for(int i=0;i<255;i++)
    b[z-i]=a[i];
    puts(b);
    getch();
    }

  5. #5
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372
    این هم برنامه ای که شما بهش نیاز داری
    مطالعه کن اگه متوجه نشدی بگو توضیح بدم
    با کامنت هایی واست توضیح دادم



    #include "string.h"
    #include "conio.h"
    #include "iostream.h"
    void main(){
    char a[255];
    //input string
    cin.get(a,255);
    //debug . . . necessary for final answer
    strcat(a," ");
    //define a lenth
    int z=strlen(a);
    int k=0;
    //scan variable a
    for(int i=0;i<z;i++){
    char m=a[i];
    //cheek for next word
    if(m==' '){
    for(int j=i;j>k;j--)
    cout<<a[j-1];
    k=i;
    cout<<" ";
    }
    }
    cout<<endl;
    getch();
    }

    آخرین ویرایش به وسیله A_Salimi : پنج شنبه 05 اردیبهشت 1387 در 20:28 عصر دلیل: #include "conio.h"

  6. #6
    کاربر دائمی آواتار mahmood3d
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    همه جای ایران سرای من است
    پست
    334
    دستور زیر چه کاری انجام می دهد و کار متغیر k چیست ؟

    strcat(a," ");

  7. #7
    کاربر دائمی آواتار A_Salimi
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    North khorasan-Esfarayen
    پست
    372
    دستور زیر چه کاری انجام می دهد و کار متغیر k چیست ؟

    خوب strcat رو برای این گذاشتم که به رشته یک فاصله چسپونده بشه تا رشته آخر هم معکوس بشه . خودت میتونی این خط رو حذف کنی تا ببینی چه اتفاقی میفته ! مگر اینکه زمان وارد کردن رشته در آخر رشته هم یک فاصله خودتان به صورت دستی اضافه کنید.
    و اما متغیر k :
    در حقیقت فاصله مکان فاصله ها را در خود ذخیره میکند تا خروجی به درستی چاپ شود.

  8. #8
    کاربر تازه وارد آواتار amir_cpp
    تاریخ عضویت
    آذر 1385
    محل زندگی
    Tabriz
    پست
    88
    البته نمی دونم قراره از توابع خود ++C استفاده بکنین یا نه، اما strrev در هدر string.h این کار رو انجام می ده.

  9. #9
    کاربر دائمی آواتار mahmood3d
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    همه جای ایران سرای من است
    پست
    334

    Wink

    eshgh_82 عزیز
    دستت خیلی خیلی درد نکنه فهمیدم چی شد .
    نقل قول نوشته شده توسط amir_cpp مشاهده تاپیک
    البته نمی دونم قراره از توابع خود ++C استفاده بکنین یا نه، اما strrev در هدر string.h این کار رو انجام می ده.
    قصد جسارت ندارم ولی اولا می خواستم با کد نویسی همین کار رو انجام بدم ثانیا تیکه برنامه ای که در بالا گذاشتم کار همین strrev رو انجام می ده .

  10. #10
    کاربر دائمی آواتار jalil_m
    تاریخ عضویت
    آذر 1386
    محل زندگی
    تهران
    پست
    138

    نقل قول: معکوس کردن یک رشته

    نقل قول نوشته شده توسط mahmood3d مشاهده تاپیک
    با عرض سلام
    من تازه شروع به برنامه نویسی با ++c کردم . می خواستم یه برنامه بنویسم که یه رشته ای رو بگیره و کلمه به کلمه اون رو معکوس کنه . مثل : ali reza که در خروجی ila azer چاپ کنه .
    همین برنامه رو نوشتم ولی تمام رشته رو معکوس می کنه یعنی همون علیرضا رو به صورت azer ila چاپ می کنه .
    فقط زیاد با کدهای پیشرفته ننویسید تا من هم متوجه بشم .

    دوست عزيز.شما ميتونيد از تابع strtok كه در هدرفايل string.h هست استفاده كنيد.
    اين تابع يه رشته ميگيره و اون رو بر اساس كاراكتر خاصي (كه اينجا كاراكتر space ) هست به چند تكه تقسيم ميكنه و خروجي اون يه آرايه اي از تكه هاي رشته است.
    بعد ميتونيد هر عنصر اين آرايه رو به برنامه اي كه خودتون نوشتيد ارسال كنيد تا هر كلمه رو جداگونه معكوس كنه.

  11. #11

    نقل قول: معکوس کردن یک رشته

    دوستان ببخشید تاپیک قدیمی رو میارم بالا ولی من اینو نوشتم جواب نمیده و داخل ویژوال 2013 هم نوشتم
    // ConsoleApplication1.cpp : Defines the entry point for the console application.
    //
    #include "stdafx.h"
    #include "conio.h"
    #include "iostream"
    #include "string.h"
    #include <stdio.h>

    using namespace std;
    void main()
    {
    char a[255];
    cin.get(a, 255);
    strcat(a, " ");
    int z = strlen(a);
    int k = 0;
    for (int i = 0; i<z; i++){
    char m = a[i];
    if (m == ' '){
    for (int j = i; j>k; j--)
    cout << a[j - 1];
    k = i;
    cout << " ";
    }
    }
    cout << endl;
    _getch();
    }

  12. #12

    نقل قول: معکوس کردن یک رشته

    این یک مثال تقریبا کاملی است امتحانش کنید :



    #include <iostream>
    #include <string>


    using namespace std;




    void printReverse(const string& s)
    {
    for (int i = s.length() - 1; i >= 0; --i) cout << s[i];
    }


    // the original string is reversed ...
    // note: C++‎ strings are mutable ... i.e. can be modified (in place)
    void reverse(string& s)
    {
    int begin = 0, end = s.length() - 1;
    char tmp;
    while (begin < end) // swap begin and end ... char's
    {
    tmp = s[begin];
    s[begin++] = s[end];
    s[end--] = tmp;
    }
    }


    // a new local copy of a string is reversed
    string getReverse(string s)
    {
    int begin = 0, end = s.length() - 1;
    char tmp;
    while (begin < end) // swap begin and end ... char's
    {
    tmp = s[begin];
    s[begin++] = s[end];
    s[end--] = tmp;
    }
    return s; // returns a new copy of this reversed copy
    }


    int main()
    {
    // 0 //
    string testStr = "abcdefghijklmnopqrstuvwxyz";
    cout << "(0) Original string: " << testStr << endl;


    // 1 //
    cout << "\n(1) After calling printReverse(testStr): ";
    printReverse(testStr);
    cout << endl;


    // 2 //
    // note: C++‎ strings are mutable ...
    reverse(testStr);
    cout << "\n(2) After calling reverse(testStr): " << testStr
    << "\nThe original string is now reversed ..." << endl;


    // 3 //
    cout << "\n(3) After calling getReverse(testStr): " << getReverse(testStr)
    << "\nThe new (temporary) copy is reversed ..."
    << "\nbut the string passed in is still: " << testStr << endl;


    // 4 //
    cout << "\n(4) Or using reverse_iterator to print reversed: ";
    string::reverse_iterator rit = testStr.rbegin();
    string::reverse_iterator rit_end = testStr.rend();
    while (rit != rit_end) { cout << *rit; ++rit; }
    cout << "\nbut the string is still: " << testStr << endl;


    // 5 //
    cout << "\n(5) Or using const_reverse_iterator to print ... ";
    string::const_reverse_iterator crit = testStr.rbegin();
    string::const_reverse_iterator crit_end = testStr.rend();
    while (crit != crit_end) { cout << *crit; ++crit; }
    cout << "\nbut the string is still: " << testStr << endl;


    cout << "\nPress 'Enter' to continue ... " << flush;
    cin.get();
    }



  13. #13

    نقل قول: معکوس کردن یک رشته

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

  14. #14

    نقل قول: معکوس کردن یک رشته

    سلام خدمت اساتید محترم
    ابتدا سال جدید رو تبریک میگم
    ذوستان من بتازگی شروع به برنامه نوشتن با سی پلاس پلاس کردم و میخوام ک یه برنامه بنویسم که یک رشته دریافت کنه و برعکس اون رو نمایش بده
    یادمه ک توی ویژوال بیسیک یه تابع بود ک خودش همه کارارو میکرد اگه این تابع در سی پلاس پلاس هم وجود داره ک معروفی کنید و باهاش برنامه رو بنوسید
    اگرم ک نیست عاجزانه ازتون درخواست میکنم یه کد به من بدید یه رشته رو عکسشو تحویل بده فقط لطف کنید خط به خط به صورت کامل و زبان ساده توضیح بدید ک من متوجه بشم
    خیلی ممنونم منتظر پاسخ هستم

  15. #15
    کاربر دائمی آواتار amirtork
    تاریخ عضویت
    خرداد 1393
    محل زندگی
    Iran(Islamic Republic Of) / Tehran
    پست
    198

    نقل قول: معکوس کردن یک رشته

    سلام،
    این مقاله رو مطالعه کنید،
    http://www.cplusplus.com/articles/2wA0RXSz/
    توی این مقاله، به شما نحوه ی جدا سازی یک رشته رو بر اساس یک کاراکتر خاص توضیح میده(با استفاده از تابع نوشته شده ی
    explode(const string& s, const char& c)
    ، و بعد شما میتونید با استفاده از تابع خودتون و یا strrev در هدر فایل string.h، برای هر block از vector خروجی، کار نمایش معکوس هر عبارت انجام بدید.
    اگر سوالی بود، در خدمتم.

  16. #16

    نقل قول: معکوس کردن یک رشته

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

    من خوذم به یه جاهایی رسیدم اینطوری ک من متوجه شده
    تابع strrev
    یک رشته رو معکوس میکنه فکر میکنم باید اینطوری باشه


    #include "conio.h"
    #include "iostream.h"
    #include "string.h"
    Int main(void)
    {
    char a;
    cin<<a;
    cout>>strrev(a);
    Reutrn 0
    }

    ایا این کد من درسته؟ هدر هاشم درسته؟
    ببخشید اگه اشتباه بوده
    آخرین ویرایش به وسیله mr.dkbaz : شنبه 15 فروردین 1394 در 03:43 صبح

  17. #17
    کاربر دائمی آواتار amirtork
    تاریخ عضویت
    خرداد 1393
    محل زندگی
    Iran(Islamic Republic Of) / Tehran
    پست
    198

    نقل قول: معکوس کردن یک رشته

    سلام
    در مورد تابع strrev درست متوجه شدید.
    کدی هم که قرار دادید، درست هست، اما باید از آرایه ای از char استفاده کنید، و نه فقط از یک کاراکتر.
    اما نکته ای که وجود داره این هست که strrev جزو توابع استاندارد نیست، و هر کامپایلر زبان c و C++‎ این رو نداره، به خاطر همین من پیشنهاد میکنم به جای این تابع، از تابع reverse در کتاب خانه ی algorithm استفاده کنید.
    کار کرد این تابع به صورت زیر است:
    #include <iostream>
    #include <string>
    #include <algorithm>

    using namespace std;

    int main()
    {
    string str;
    cin>>str;
    reverse(str.begin(), str.end());
    cout<<str;
    return 0;
    }

    این کد، رشته ی str رو به صورت معکوس چاپ میکنه.

  18. #18

    نقل قول: معکوس کردن یک رشته

    ممنون بابت پاسختون دوست عزیز واقعا لطف کردید
    اگه میشه کد خودم رو اصلاح کنید همون ک گفتید باید ارایه باشه ، یعنی اگه ارایه باشه چجوری میشه
    لطفا توضیح بدید
    ممنون از لطفتون

  19. #19
    کاربر دائمی آواتار amirtork
    تاریخ عضویت
    خرداد 1393
    محل زندگی
    Iran(Islamic Republic Of) / Tehran
    پست
    198

    نقل قول: معکوس کردن یک رشته

    سلام
    کد شما به دلیل استفاده از نسخه های قدیمی تر C++‎ در واقع از حالت استاندارد خارج هست و من باز هم پیشنهاد میکنم از نسخه های جدید تر استفاده کنید، با این حال، این کدی هست که من اشکالاتی رو که توش میبینم رفع کردم، اگر مشکل دیگه ای داشت بفرمایید:
    #include "conio.h"
    #include "iostream.h"
    #include "string.h"
    int main()
    {
    char a[10];
    cin>>a;
    cout<<strrev(a);
    return 0;
    }

    1- return درست هست، نه Reutrn
    2- علامت جریان ورودی برای cin به صورت
    cin>>
    هست نه
    cin<<

    3- سی پلاس پلاس زبانی حساس به حروف بزرگ و کوچک هست، بنابراین باید در نوشتن دقت کنید، int درست هست و نه Int.

  20. #20

    نقل قول: معکوس کردن یک رشته

    ممنون واقعا کمک خیلی بزرگی کردید
    ببخشید ک انقده سوال میکنم ولی سوال اخرمه
    تو کد شما همونی ک خودتون پیشنهاد کردید این خط چیکار میکنه؟
    using namespace std;
    و میشه خواهش کنم در باره خط
    reverse(str.begin(), str.end());
    کمی توضیح بدید؟
    چرا باید اون دوتا تابع ازشون استفاده بشه منضورمstr.begin و str.end هستش
    ممنون

  21. #21
    کاربر دائمی آواتار amirtork
    تاریخ عضویت
    خرداد 1393
    محل زندگی
    Iran(Islamic Republic Of) / Tehran
    پست
    198

    نقل قول: معکوس کردن یک رشته

    using namespace std در این کد، در واقع داره محل تعریف cin و cout و string رو مشخص میکنه.
    برای کنترل حجم انبوهی از توابع و کلاس ها، از مبحثی به نام فضای نام استفاده میکنیم، برای مثال اگر ما در برنامه ای، دو تابع با نام و آرگومان های یکسان داشته باشیم، برای مشخص کردن هر کدام، از فضای نام به خصوصی استفاده میکنیم، برای مثال:
    #include <iostream>
    #include <string>
    #include <algorithm>

    namespace first
    {
    void sayHello()
    {
    std::cout<<"Hello!"<<std::endl;
    }
    }

    namespace second
    {
    void sayHello()
    {
    std::cout<<"Hello!"<<std::endl;
    }
    }
    int main()
    {
    //+++++++++++++
    first::sayHello();
    second::sayHello();
    //+++++++++++++
    return 0;
    }

    در کد بالا، با توحه به اینکه ویژگی های دو تابع کاملا شبیه به هم هست، برای اینکه در برنامه درچار مشکل نشویم، از دو فضای نام مختلف استفاده کردیم.
    استفاده از فضای نام دو روش عمده داره:
    1- اعلام در ابتدای برنامه مثل using namespace std;
    2- اعلام در پشت موارد مورد استفاده از آن فضای نام، مثل std::cout
    برای استفاده از روش دوم، باید قبل از عضو نظر در آن فضای نام، ابتدا اسم آن فضای نام رو بیاریم، بعد علامت تفکیک حوزه یا همون :: ، بعدش اسم عضو مورد نظر، مثل std::cin
    در مورد اون دو تابع هم، کار اون دو تابع برگردوندن اشاره گر به ابتدا و انتهای رشته ی مورد نظر ما هستن.
    str.begin() اشاره گری به ابتدای رشته و دیگری اشاره گری به انتهای رشته برمیگردونن، و علت استفاده هم این هست که تابع reverse برای انجام فرایند معکوس سازی، نیاز به دانستن محدوده ای هست که باید عمل معکوس سازی رو روش انجام بده، و از انجایی که ما میخواستیم کل رشته رو معکوس کنیم، پس دو اشاره گر به ابتدا و انتهای رشته فرستادیم.

  22. #22

    Angry مشکل در معکوس کردن رشته

    سلام به کلیه دوستان
    این دستوری که قرار دادم به صورت معکوس نشون نمیده
    ببینید : <?php$str = "12345";
    echo $implode;
    ؟>
    این هم جواب نمیده: <?php
    $str = "12345";
    echo $strrev;
    ?>
    فقط این جواب میده که به صورت برعکس نیست : <?php
    $str = "12345";
    echo $str;
    ?>
    کسی میتونه منو راهنمایی؟

  23. #23

    نقل قول: معکوس کردن یک رشته

    #include <iostream>
    #include <string.h>
    #include <cstring>
    using namespace std ;
    int main()
    {
    int i , a;
    char s[] = "matsah hedaznasaH ardaS naM";
    for ( i = strlen(s); i >=0 ; i--)
    {
    cout << s[i];
    }
    }فک کنم به حد کافی سادست!

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •