الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طريقة التحويل بين النظام العادي ونظام موريس !

مغلق
بدأه مهندس كمبيوتر في 1 يناير 2008 · 5 رد · 1,704 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

في عندي مشكلة وهي برنامج يحول من نظام النصوص الحرفية الى نظام موريس وبالعكس ..

المشكلة اني استطعت حل التحويل الأول وهو من النصوص الحرفية الى نظام موريس ولكن ..... لم استطع ان احول من موريس الى النصوص الحرفية .............

حلي للمشكلة الأولى ....

#include <iostream.h>
#include<conio.h>
main()
{
	char x[50];

cout<<endl<<"enter would convert char to Moris "<<endl;

cin>>x;

cout<<"Moris = "<<endl;


for(int i=0;x!=NULL;i++)
{
switch(x)
{
case '0':
cout <<"-----"<<"  "; 
break;
case '1':
cout <<".----"<<"  ";
break;
case '2':
cout <<"..---"<<"  ";
break;
case '3':
cout <<"...--"<<"  ";
break;
case '4':
cout <<"....-"<<"  ";
break;
case '5':
cout <<"....."<<"  ";
break;
case '6':
cout <<"-....."<<"  ";
break;
case '7':
cout <<"--..."<<"  ";
break;
case '8':
cout <<"---.."<<"  ";
break;
case '9':
cout <<"----."<<"  ";
break;
case 'a':
case 'A':
cout <<".-"<<"  ";
break;
case 'b':
case 'B':
cout <<"-..."<<"  ";
break;
case 'c':
case 'C':
cout <<".-.-"<<"  ";
break;
case 'd':
case 'D':
cout <<"-.."<<"  ";
break;
case 'e':
case 'E':
cout <<"."<<"  ";
break;
case 'f':
case 'F':
cout <<"..-."<<"  ";
break;
case 'g':
case 'G': 
	cout<<"--."<<"  ";
case 'h':
case 'H': 
	cout<<"...."<<"  ";
	break;
case 'i':
case 'I': 
	cout<<".."<<"  ";
	break;
case 'j':
case 'J':
	cout<<".---"<<"  ";
	break;
case 'k':
case 'K':
	cout<<"-.-"<<"  ";
	break;
case 'l':
case 'L':
	cout<<".-.."<<"  ";
	break;
case 'm':
case 'M':
	cout<<"--"<<"  ";
	break;
case 'n':
case 'N':
	cout<<"-."<<"  ";
	break;
case 'o':
case 'O':
	cout<<"---"<<"  ";
	break;
case 'p':
case 'P':
	cout<<".--."<<"  ";
	break;
case 'q':
case 'Q':
	cout<<"--.-"<<"  ";
	break;
case 'r':
case 'R':
	cout<<".-."<<"  ";
	break;
case 's':
case 'S':
	cout<<"..."<<"  ";
	break;
case 't':
case 'T':
	cout<<"-"<<"  ";
	break;
case 'u':
case 'U':
	cout<<"..-"<<"  ";
	break;
case 'v':
case 'V':
	cout<<"...-"<<"  ";
	break;
case 'w':
case 'W':
	cout<<".--"<<"  ";
	break;
case 'x':
case 'X':
	cout<<"-..-"<<"  ";
	break;

case 'y':
case 'Y':
	cout<<"-.--"<<"  ";
	break;
case 'z':
case 'Z':
	cout<<"--.."<<"  ";
	break;
default:
	cout<<"Non the alphnumbric ";
	break;

	}

	}
	getche();
	return 0;
	}

ولكن كيف اعمل التحويل الثاني بالعكس :: انا اعلم ان switch loop لا تقبل غير الرمز الحرفي او الارقام الصحيحة

وكيف ادخل اليها شيفرات نظام موريس وهي نصوص رمزية

ارجو المساعدة منكم اخواني

#2

السلام عليكم ,,

لا توجد طريقة قياسية في ++C تمكنك من تطبيق switch على الـ strings أو المصفوفات النصية, في الحقيقة ليس لديك حل إلا استخدام if statement ,,

و حتى الحلول المتوفرة لكي نستطيع دمج المصفوفات الحرفية في switch ليست بالصغيرة لدمجها في برنامجك, هنا مقال يتحدث عن هذا الشيء و لكن تحتاج إلى معرفة STL خصوصاً maps ,, لذلك أقترح عليك استخدام if statement بدلاُ من ذلك :

Switch on Strings in C++

تحياتي ,,

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 1 يناير 2008 في 12:10

#3
Khaled.Alshaya كتب:
السلام عليكم ,,

لا توجد طريقة قياسية في ++C تمكنك من تطبيق switch على الـ strings أو المصفوفات النصية, في الحقيقة ليس لديك حل إلا استخدام if statement ,,

و حتى الحلول المتوفرة لكي نستطيع دمج المصفوفات الحرفية في switch ليست بالصغيرة لدمجها في برنامجك, هنا مقال يتحدث عن هذا الشيء و لكن تحتاج إلى معرفة STL خصوصاً maps ,, لذلك أقترح عليك استخدام if statement بدلاُ من ذلك :

Switch on Strings in C++

تحياتي ,,

اولاً شكرا لك أخي على مرورك وردك ...... ولكن هل تقصد انت ان اعمل على hashtable المصفوفات الديناميكية .

انا شفت الرابط الذي اعطيتني اياه ... توقعت ان انشئ enum ساكنة وادخل فيها الرموز والشيفرات ... وانشئ مفاتيح في قيم هذه الرموز لاستدعائها ......... ما رأيك ...

#4

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

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

تحياتي ,,

#5
Khaled.Alshaya كتب:
الطريقة المذكورة في المقال جميلة, و لكن لك حرية الاختيار, الطريقة ليست بتلك الصعوبة و لكنها تضيف الكثير من الكود إلى كودك ,,

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

تحياتي ,,

شكرا لك اخي مرة أخرى ...... وانا غلبتك معي .. ولكن المشروع الذي اعمله بسيط وذلك تحدي لاتباث قدرتي على عمل برنامج تشفير الكلام وفك تشفيره بنظام موريس .. والمشكلة التي واجهتني عندما احول التشفير الى الكلام العادي ....من نظام موريس الى نص عادي .... انت اقترحت ( بارك الله فيك ) ان استخدم if statement في الحل الثاني ... ولكن مشكلة هذا loop لا ينسخ الكلام ككلمة واحدة ..... يعني عندما تفك تشفير الرمز ---. .--- --.. يكتب حرف واحد ... وهذه الكلمة تتكون من عدة أحرف 3 أحرف كما ترى ..... اتوقع ان يكون الحل في دالة النسخ strcat في المكتبة string .... ما رأيك ...

#6

السلام عليكم ,,

أهلاً بك من جديد أخي العزيز ,,

اقتباس
شكرا لك اخي مرة أخرى ...... وانا غلبتك معي .. ولكن المشروع الذي اعمله بسيط وذلك تحدي لاتباث قدرتي على عمل برنامج تشفير الكلام وفك تشفيره بنظام موريس .. والمشكلة التي واجهتني عندما احول التشفير الى الكلام العادي ....من نظام موريس الى نص عادي .... انت اقترحت ( بارك الله فيك ) ان استخدم if statement في الحل الثاني ... ولكن مشكلة هذا loop لا ينسخ الكلام ككلمة واحدة ..... يعني عندما تفك تشفير الرمز ---. .--- --.. يكتب حرف واحد ... وهذه الكلمة تتكون من عدة أحرف 3 أحرف كما ترى ..... اتوقع ان يكون الحل في دالة النسخ strcat في المكتبة string .... ما رأيك ...

في الحقيقة يمكنك استخدام الكائن string و بالتالي تريح رأسك من وجع التعامل مع المصفوفات النصية, التعامل معه بسيط جداً و سيعطيك فرصة للتركيز على الهدف من برنامجك بدل التعب الناتج عن التعامل مع المصفوفات النصية,

توجد الكثير من الدروس حول فقط ابحث حول string class في ++C,,

تحياتي ,,

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 2 يناير 2008 في 01:35

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…