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

السؤال

Recommended Posts

  • 2
نشر

بشكل عام كل لغات البرمجة تقوم بترميز المحارف (حروف و أرقام و رموز مختلفة) بقيم رقمية موحدة تدعى جدول ASCII.

لحل السؤال عليك المرور بحلقة For loop على عناصر السلسلة واختبار حالة المحرف:

  1. هل المحرف الحالي هو حرف أبجدي و من النوع small
  2. استبدال الحرف الحالي ب النوع capital لنفس الحرف

في جدول ASCII لدينا:

  • small case: الحرف   a=97 و b=98 و هكذا بنفس الطريقة حتى z=122 
  • capital case: الحرف A=65 و B=66 و هكذا بنفس الطريقة حتى  z=90
  • نستنتج أن الفرق بين حالة نفس الحرف بين small و capital هو 32 (قيمة رقمية / فرق الترميز)

 مثال في لغة ++C:

#include <iostream>
#include <cstring>   // مكتبة للتعامل مع السلاسل
 
 
using namespace std;
 
int main()
{
    char arr[] = "Engineering Discipline.";    // التهيئة
 
    cout << "Original String:\n"<< arr<< endl; // السلسلة الأصلية
    cout<<"String in UPPERCASE:\n";
    for (int x=0; x<strlen(arr); x++)          // المرور على عناصر المصفوفة
        if (isalpha (arr[x]) )                 // هل المحرف الحالي هو حرف أبجدية
        putchar(toupper(arr[x]));              // تحويل الحرف للنوع الكبير و طباعته
     
    return 0;
}

مثال في لغة JAVA:

import java.io.*;
public class Test {

   public static void main(String args[]) {
      String Str = new String("Welcome to Tutorialspoint.com");

      System.out.print("Return Value :" );
      System.out.println(Str.toUpperCase() );   // دالة مبنية في لغة جافا تعيد السلسلة بأحرف كبيرة
   }
}

 

  • 1
نشر (معدل)

 

ASCII نظام الترميز للحروف الأبجدية :  a-c ==> من 97 ل 122  , A-Z==>من65 ل 90 .

فدالة الtoUpperCase  تقوم بتجويل الحروف الصغيرة لحروف كبيرة من خلال   طرح 32  .

***مثال توضيحي : حرف a يساوي  97 في نظام الترميز ,  وحرف  A يساوي 65 

عملية التحويل :   حرف a= 97   يتم طرح 32     و تصبح القيمة تساوي   65  ويظهر حرف A 

***************

خطوات  الحل  :

  1. خذ النص الذي تريد تحويله واحسب طوله.

  2.  افحص  النص حرفًا بحرف واستمر في التحقق من  المؤشر  من خلال ال for loop 
  3. إذا كان الحرف في  الموشر (i) صغيرا  ،    يتم طرح منه 32 لتحويله لحرف كبير 
  4. اطبع النص النهائي

الحل  بلغة الجافا : 


class Test{ 
	
	// الميثود الخاصة بالتحويل للحروف الكبيرة  
	static void convertOpposite(StringBuffer str) 
	{ 
		int ln = str.length(); 
			
		//    المعرفة مسبقا في الجافا  toUpperCase التحويل بإستخدام ميثود  
		for (int i=0; i<ln; i++) 
		{ 
			Character c = str.charAt(i); 
				str.replace(i, i+1, Character.toUpperCase(c)+""); 
			
		} 
	} 
	
	public static void main(String[] args) 
	{ 
		StringBuffer str = new StringBuffer("hosub"); 
		//  إستدعاء الميثود 
		convertOpposite(str); 
		
		System.out.println(str); 
		} 
} 

 

 **الحل  بلغة C++ و python و  java  و ولتنفيذ الحل  بشكل فعلي  من هنا

تم التعديل في بواسطة omar haddad
  • 0
نشر (معدل)

كان من الأفضل أن تشير الى لغة البرمجة التي تتعامل بها حتى تسهل اجابتك,

على العمووم الحل الأقرب هو تبحث في documentation للغة البرمجة التي تبرمج وستجد built in function تقوم لك بالأمر.

  • في ال php اسمها strtoupper
  • في ال java اسمها toUpperCase
  • في ال C/C++ اسمها toupper موجدة في مكتبة string.h لكنها تحولة حالة حرف واحد

أما ان أردت ال algorithm فما عليك الا بقراءة الجملة حرف بحرف ثم اعمل لها casting لل int بعدها انقص منها قيمة 32 فقط ان كانت قيمتها بين 97 و 122 ثم أعدها الى char باستعمال casting وفي الأخير اجمع كل الحروف في string واحدة.


Screenshot_2020-09-25_02-48-29.png.53b8b1f970ec66dfa9e5759e4a76025d.png

تم التعديل في بواسطة ayoubridouani

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...