Khaled Alshaya

هل لديك طريقة لتحويل حرف من Upper إلى Lower ؟

36 ردود في هذا الموضوع

ماذا لو أعطيكم طريقة بسطر واحد للتحويل إلى capital إن كان small والتحويل إلى small إن كان capital

ما رأيكم ؟

ما رأيك استاذ خالد ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
ماذا لو أعطيكم طريقة بسطر واحد للتحويل إلى capital إن كان small والتحويل إلى small إن كان capital

ما رأيكم ؟

ما رأيك استاذ خالد ؟

تفضل,,, :D

0

شارك هذا الرد


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

افضل طريقه رأيتها على الإطلاق هى نسخة الأخ خالد الشايع و التى تقوم بتغيير حالة البت من واحد إلى صفر و من صفر لواحد و عند تضمينها بالسى او السى بلس او الأسمبلي تكون سريعه جدا جدا و لكن يعيبها محدوديتها بـ ASCII حيث ان unicode تستخدم اسليب مختلفه.

و الله ولي التوفيق

0

شارك هذا الرد


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

الجملة هي :


ch = ch + 32 * (1 - ch / 91 * 2);

ch / 91 قيمتتها 1 إن كان الحرف small ، وقيمتها 0 إن كان capital

ch / 91 * 2 قيمتتها 2 إن كان الحرف small ، وقيمتها 0 إن كان capital

1 - ch / 91 * 2 قيمتتها 1 - إن كان الحرف small ، وقيمتها 1 إن كان capital

في النهاية سننقص 32 في حال كان الحرف small وسنزيد 32 في حال كان الحرف capital

تم تعديل بواسطه namespace
0

شارك هذا الرد


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

الجملة هي :


ch = ch + 32 * (1 - ch / 91 * 2);

ch / 91 قيمتتها 1 إن كان الحرف small ، وقيمتها 0 إن كان capital

ch / 91 * 2 قيمتتها 2 إن كان الحرف small ، وقيمتها 0 إن كان capital

1 - ch / 91 * 2 قيمتتها 1 - إن كان الحرف small ، وقيمتها 1 إن كان capital

في النهاية سننقص 32 في حال كان الحرف small وسنزيد 32 في حال كان الحرف capital

تم تعديل بواسطه namespace
0

شارك هذا الرد


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

لا لا تحاول أخ حمزه, طريقة الأخ خالد أسرع و أبسط :P

0

شارك هذا الرد


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

لا لا تحاول أخ حمزه, طريقة الأخ خالد أسرع و أبسط :P

هههههه

هذه جملة واحدة فقط :P

كلامك صحيح من ناحية السرعة

أخذنا تلك الطريقة في مادة computer interfacing وتعلمنا أن ASCII CODES لم تكتب عبثاً ، وإنما على ذلك الأساس

ورجينا همتك في اللغز الرابع

سلام

0

شارك هذا الرد


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

هذه طريقة أخرى خطرت لي باستخدام الـ boolean to int conversions:

char a = 'A', b;
b = a + (a > 90) * -32 + (a <= 90) * 32;

تعديل: شكراً للأخ namespace على اكتشاف مشكلة في الكود قبل التعديل :)

تم تعديل بواسطه Khaled.Alshaya
0

شارك هذا الرد


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

اللغة الانجليزية فقط إما ASCII أو utf8, و هذا hack من أيام تصميم ترميز ASCII و ليس طريقة جيدة في الحقيقة :lol:

إذا أردت تطبيق هذا الشيء على utf16 فيجب عليك الأخذ في عين الاعتبار الـ Endianess أو اقرأ BOM إذا كنت تقرأ من ملف على Windows ...

تحياتي ..

0

شارك هذا الرد


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

السلام عليكم

عاشي الايادي شباب كل الافكار جميلة ولم اكن اعرف البعض منها.

انا حبيت ان اعدل على طريقة من الطرق, وهو اننا نستطيع ان نعمل X_OR مع الرقم 20H مع اي رمز مطلوب تحويلة.

وهو بهذه الحالة سيقوم بالتحويل من صغير الى كبير او من صغير الى كبير.


# include <iostream.h>
# include <conio.h>
main()
{
char ch1 = 'a' ^ 0x20;
char ch2 = 'A' ^ 0x20;

cout << ch1 << "\t" << ch2 ;
getch();
return 0 ;
}

تم تعديل بواسطه محمد علاء الدين
نفسي نلتزم و نستخدم تاج الكود
0

شارك هذا الرد


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

أجمل طريقة و أروعها هي قليلة جمل البرمجة و سريعة تنفيذ :char(A^32)كما شرح الاخ

الطريقة التي أقترحها هي كالتالي,

لو نظرنا لقيمة الحرف 'A' و قيمة الحرف 'a' في نظام ASCII و لكن هذه المرة بالنظام الثنائي :

A = 01000001

a = 01100001

إذا كنت شديد الملاحظة, ستلاحظ أن العددين متطابقين باستثناء الـ Bit السادس, و ذلك هو الحال بالنسبة لبقية الأحرف,

الأحرف الصغير و الكبيرة متطابقة باستثناء الـ Bit السادس, فهو في الأحرف الصغيرة دائماً يساوي 1, بينما في الأحرف الكبيرة يساوي 0.

حسناً ما علينا فعله لتحويل حرف كبير لحرف صغير أو العكس هو قلب ال BIT السادس.

إذا كان صفر نرجعه واحد و إن كان واحدا نرجعه صفرا

و هذا هو بضبط مايقوم بيه هذا سطر : char(A^32).

يعتمد على دالة ^ التي تعمل مباشرة على Bits . و هي دالة كسر المنطقية.

تم تعديل بواسطه ikossan
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

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

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