اذهب إلى المحتوى
  • 0

طريقة عكس النص برمجيًا

Mohammed Seyam

السؤال

Recommended Posts

  • 0

مرحبًا @محمد كمال صيام,

لا يوجد هنالك دالة من البايثون لعكس النص لكن يمكن فعل ذلك بأكثر من طريقة و أسهل طريقة لعكس النص هي بإستخدام المعامل [1-::] و تسمى slice statement أي [1-::] وتعني البدء في نهاية النص والانتهاء عند الموضع 0 (index 0) ، والتحرك بالخطوة -1 ، سالب واحد ، مما يعني خطوة واحدة إلى الوراء , المثال :

def reverse_order(user_str):
	user_str = user_str[::-1]
	print(user_str)


reverse_order("Hello")

النتيجة :

olleH

طريقة ثانية هي بإستخدام حلقة for loop , نقوم في كل تكرار عند الحلقة بحفظ حرف من النص في نص جديد في المقدمة حتى يتم عكس النص كاملا :

def reverse_order(user_str): 
  new_str = "" 

  for i in user_str: 
    new_str = i + str

  print(new_str)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

السلام عليكم 

تم إجابة هذا السؤال من قبل بلغة ++c تجد الإجابة هنا  

#include <iostream>
#include <bits/stdc++.h>
using namespace std;


int run = 1; // قيمة متغيرة عامة على مستوى التطبيق 

string datastr; // تعين متغير عام لحفظ النص المدخل عن طريق المستخدم 

// دالة لطباعة قائمة الاوامر
// A structure to represent a stack  
class Stack  
{  
    public: 
    int top;  
    unsigned capacity;  
    char* array;  
};  
  
// function to create a stack of given  
// capacity. It initializes size of stack as 0  
Stack* createStack(unsigned capacity)  
{  
    Stack* stack = new Stack(); 
    stack->capacity = capacity;  
    stack->top = -1;  
    stack->array = new char[(stack->capacity * sizeof(char))];  
    return stack;  
} 

void displayMenu() {
    cout << "         Main Menu         "  << "\n" ;
    cout << "=============================="  << "\n" ;
    cout << " 1 -- INPUT A STRING"  << "\n" ;
    cout << " 2 -- PRINT A STACK " << "\n";
    cout << " 3 -- PRINT A QUEUE " << "\n";
    cout << " 4 -- Exit " << "\n";
    cout << " \nPlease Enter Your Choice : " ;
    
}

// دالة لتنفيذ عملية ادخال النص في case 1 
void savestring (){
    
                cout << "\nPlease Enter Your string : " ;
                std::getline(std::cin >> std::ws, datastr); // ws يسمح بادخال المسافات 
                cout << "\n- " << datastr << " String Inserted \n\n " ;
                displayMenu();
}
// دالة تحويل النص الى مصفوفه
void stringtoarray(){
        
                    cout << "\n" << "A string in a queue " << "\n"; 
                    int n = datastr.length(); // حساب حروف النص
                    
                    char char_array[n + 1] ; // انشاء مصفوفه 
                    
                    strcpy(char_array, datastr.c_str());  
                    // انشاء المصفوفه
                    for(int i = 0; i < n; i++){
                        // طباعة النص 
                        cout << char_array[i] << " "; 
                        
                    };
                        
                    cout << "\n"; 
                    displayMenu();
            
}


// التاكد ان الحرف اخر حرف في المصفوفه  

int isFull(Stack* stack)  
{ return stack->top == stack->capacity - 1; }  
  
// التاكد من اول حرف في المصفوفه  
int isEmpty(Stack* stack)  
{ return stack->top == -1; }  
  
// اضافة محتويات النص بالعكس

void push(Stack* stack, char item)  
{  
    if (isFull(stack))  
        return;  
    stack->array[++stack->top] = item;  
}

char pop(Stack* stack)  
{  
    if (isEmpty(stack))  
        return -1;  
    return stack->array[stack->top--];  
} 
// دالة A string in a stack
void strreverse(){
            
            int n = datastr.length();
      		char str_arr[n + 1] ;
      		strcpy(str_arr, datastr.c_str());
      		int y = strlen(str_arr);
      		
      		Stack* stack = createStack(y);
      		
      		// Push all characters of string to stack  
            int i;  
            for (i = 0; i < y; i++)  
                push(stack, str_arr[i]);  
          
            // Pop all characters of string and  
            // put them back to str  
            for (i = 0; i < y; i++) { 
               
                str_arr[i] = pop(stack); 
            }
      		cout << str_arr  << "\n ";
            displayMenu();
    
    
}


int main()
{
    displayMenu();
	// هذه الداله تبحث في قيمة المتغير run 
  	// في حالة تغيرة قيمة run يتوقف التطبيق 
	while (run == 1) 
    {
    
    		int put; // متغير للتنقل بين اوامر القائمة
      		std::cin >> put ; // كود استقبال الامر 
      		
      		switch(put) // كود التدقيق في المدخلات و التنقل 
            {
                case 1: // في حالة كان الادخال 1
                    
                	// displayMenu();
                	savestring(); // ادخال النص و اظهار القائمة 
                    break;

                case 2: // في حالة كان الادخال 2
                    
                    strreverse(); // A string in a stack function
                    
                    break;
                
              	case 3: // في حالة كان الادخال 3
                    
                    
                    
                    stringtoarray();
                    break;
                
              	case 4: // في حالة كان الادخال 4 لانهاء التطبيق 
                	
                	cout<< "\nThank You For using my program" ;
                	run = 0; // تغير قيمة المتغير run لاغلاق الحلقه و اغلاق التطبيق 
                	break;
            };
    
    
    }

}

Untitled.thumb.png.27c5b832ef783187c8e0d0f3259f3243.png.5d71ac2fd9e01cfddda4f85400af65af.png

تم التعديل في بواسطة محمد الملواني
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...