• 0
مصطفى 36a2

challenge نشّط مهاراتك البرمجية: إدخال نص وإخراجه معكوسًا

سؤال

السلام عليكم ورحمة الله وبركاته

بكم طريقة مختلفة يُمكنك عكس نص مُدخل لطباعته على الشاشة ؟

سأبدأ ببعض الطرق، ولنشارك بطرق أخرى لتنشيط المهارات البرمجية، بأسرع/أسهل/أغرب/أبسط طريقة للقيام بذلك.

1- باستخدام string والمرور على عناصرها بالمقلوب

#include <iostream>
using namespace std;

int main()
{
    string s;
    cin>>s;
    for(int i=s.size()-1;i>=0;i--)
    {
        cout<<s[i];
    }
}

2- باستخدام string والتابع reverse من مكتبة algorithm (طريقة سهلة ومباشرة)

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    string s;
    cin>>s;
    reverse(s.begin(),s.end());
    cout<<s;

}

3- طريقتي المفضلة :) عن طريق stack واستخدام goto التي لا يحبها أحد

#include <iostream>
#include <stack>
using namespace std;

int main()
{
    char c;
    stack <char>s;
read_c:
    c=cin.get();
    if(c=='\n')
        goto print;
    else
    {
        s.push(c);
        goto read_c;
    }
    print:
    while(!s.empty())
    {
        cout<<s.top();
        s.pop();
    }
}

4- عن طريق string ومعاملتها كـstack (طريقة سهلة ولطيفة)

#include <iostream>
using namespace std;

int main()
{
    string s;
    cin>>s;
    while(!s.empty())
        {
            cout<<s.back();
            s.pop_back();
        }
}

سأستخدم for بدل while

#include <iostream>

int main()
{
    std::string s;
    for(std::cin>>s;!s.empty();s.pop_back())
        std::cout<<s.back();
}

 

من يضيف المزيد  ؟ من يستخدم C ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

3 إجابة على هذا السؤال .

  • 0

السلام عليكم

هده طريقة باستخدام C

#include <stdio.h>
#include <stdlib.h>
void reversed(){
	char c = 0;
	if(( c = getchar()) != '\n'){
		reversed();
	}
	printf("%c", c);
	
}
int main(int argc, char *argv[]){
	reversed();
	return 0;
}

          

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

رائعة ! أنت تستخدم الـ stack الخاص باستدعاء الدوال :)

ما رأيك بالتعديل التالي:

#include <stdio.h>

int main(){
	char c = 0;
	if(( c = getchar()) != '\n'){
		main();
		printf("%c", c);
	}

	return 0;
}

شكرًا لمشاركتك الفعالة 

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

جميل لقد اختصرت البرنامج

هذه دالة لعكس النص

void reverse_string(char * str){
	char tmp, *src,  *dst;
	size_t len = 0;
	if(str != NULL && *str != 0){
		len = strlen(str);
		src = str;
		dst = src + len - 1;
		while(src < dst){
			tmp = *src;
			*src++ = *dst;
			*dst-- = tmp;
		}
	}
}

 

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .