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

طيب ممكن مساعده في تضبيط البرنامج هذا(عاجل ومهم جدا)

مغلق
بدأه Hussain في 10 نوفمبر 2001 · 14 رد · 934 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا شباب هذا سؤال وانا حليته بس ابغى تعديل عليه:

==-=-=

-----

A company wants to transmit data over the telephone, but they are concerned that their phones may be tapped. All of their data is transmitted as four-digit

Integers . Thy have asked you to write a program that encrypts their data so

That it may be transmitted more securely. Your program should read a four-digit Integer and encrypt it as follows: Replace each digit by ( the sum of that digit plus 7 ) modulus 10. Then, swap the first digit with the third, swap the second digit with the fourth, and print the encrypted integer. Write a separate program

That inputs an encrypted four-digit integer, and decrypts it to form the original number

=-=-=

وهذا الحل

#incllude
#include


void encrypt( int n ) { 
cout << setw(4) << setfill('0') << 
((((n % 10) + 7) % 10) * 100 ) 
+ ((((n / 10 % 10) + 7) % 10) * 1000 ) 
+ ((((n / 100 % 10) + 7) % 10) * 1 ) 
+ ((((n / 1000 % 10) + 7) % 10) * 10 ); 
} 

int main() 
{ 
int n; 
cin >> n; 

if (n <= 9999) { 
encrypt( n ); 
} else { 
cout << "ERROR: Non 4-digit number entered." << endl; 
return 1; 
} 
return 0; 
}

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

هذا الحل بس ابغى مساعده في وتعديل ان البرنامج يرجع ويفك الشفره من جديد يعني باسورد ثم تشفير نم فك التشفير وارجاع للباسورد الاصلي ........ واريده في برنامج واحد يعني دمج برنامجين ببرنامج واحد تشفير وفك التشفير ........

ارجو افادتي اخواني

#2
int decrypt( int n ) 
{ 
	int val;
	val = ((((n / 1 % 10) + 3) % 10) * 100) 
            + ((((n / 10 % 10) + 3) % 10) * 1000)
	    + ((((n / 100 % 10) + 3) % 10) * 1) 
            + ((((n / 1000 % 10) + 3) % 10) * 10);

	return val;
}

Coding on the Cloud and for the Cloud!

My Blog

#3

اخوي هاني شكلك ما فهمت السؤال مضبوط :confused: لاني ابي عمليه عكسيه لهالكود

ـــــــــــــــــــــــــــــــــــــــــــــــ

void encrypt( int n ) {

cout << setw(4) << setfill('0') <<

((((n % 10) + 7) % 10) * 100 )

+ ((((n / 10 % 10) + 7) % 10) * 1000 )

+ ((((n / 100 % 10) + 7) % 10) * 1 )

+ ((((n / 1000 % 10) + 7) % 10) * 10 );

}

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

وانت وضعت هالكود انه مكمل الظاهر

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

int decrypt( int n )

{

int val;

val = ((((n / 1 % 10) + 3) % 10) * 100)

+ ((((n / 10 % 10) + 3) % 10) * 1000)

+ ((((n / 100 % 10) + 3) % 10) * 1)

+ ((((n / 1000 % 10) + 3) % 10) * 10);

return val;

}

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

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

وهذا مثال للمطلوب

1234---- يتحول بالتشفيرالى-->0189----> بعد ذلك ارجاع القيمه الاصليه---> 1234

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

وشوف ابغاك اذا ما عليك امر يعني ;) انك تدمج البرنامج مع الكود اللي يعمل العكس وتعطيني البرنامج كامل مو بس بالكودين لاني تعبت من جد :(

ـــــــــــــــــــــ

و مشكور وما قصرت مقدمت :)

#4

السلام عليكم

اخ hussain

انا كتبت برنامج يقوم بالعمليتين يشفر ويفك التشفير

البرنامج بدائي شوي :rolleyes: ما لقيت طريقه احسن لحله بس البرنامج يشتغل صح

ورود

#5

البرنامج:

#include

#include

void encrypt( int a[],int *temp )

{

temp[2]=(a[0]+7)%10;

temp[0]=(a[2]+7)%10;

temp[3]=(a[1]+7)%10;

temp[1]=(a[3]+7)%10;

}

void print(int a[])

{

int i;

for(i=0;i<4;i++)

printf("%d ",a);

printf("n");

}

void decrypt(int t[],int *k )

{ int i;

for(i=0;i<4;i++)

{

if(t==9 || t==8)

t=(t/10)+(t%10)-7;

else

t=(t%10)+3;

}

k[0]=t[2];

k[1]=t[3];

k[2]=t[0];

k[3]=t[1];

}

main()

{

int a[4],i,t[4]={0},s[4]={0};

puts("Enter 4 digit number");//one digit at atime

for(i=0;i<4;i++)

scanf("%d",&a);

puts("the password");

encrypt(a,s);

print(s);

puts("The original number");

decrypt(s,t);

print(t);

getch();

}

#6

عجيب أمرك : أنا كتبت كود decrypt يعني فك تشفير وهو مختلف عن كودك .

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

روتين فك الضغط يقوم باضافة 3 مع أخذ باقي القسمة على 10 طبعا مع تبديل الأرثام كما في التشفير ، وهذا مثال

1395 -> 6280 -> 1395

لأن:

(6 + 3)%10 = 9

(2 + 3)%10 = 5

(8 + 3)%10 = 1

(0 + 3)%10 = 3

إذا يأست نهائيا فقل لي حتى أنسق لك البرنامج كامل ..

Coding on the Cloud and for the Cloud!

My Blog

#7

للأسف ما عرفت كيف :( :( وانت تقول الى هالدرجه انا بالسي كذا وشكلي صفر .... انا توني اتعلمها ما لي شهرين ومن قبل ما اعرف ايش هي البرمجه .... يعني زين مني عرفت اطلع هالبرنامج اللي موجود هنا وبعد تعب عملته بس كيف اعمل الاثنين ببرنامج واحد ما عرفت ..... واذا كان ممكن تنسق البرنامج كامل ومع شرح ولو مبسط علشان انا استفيد وكل الاعضاء يستفيدون من البرنامج

____

* ملاحظه : خذ في بالك اني مبتدئ يعني ما ابغى دوال غريبه وجديده علي :) .. يعني بنفس الصيغه اللي بالبرنامج الي انا كتبته

____________________

#8

السلام عليكم

اخ hussian

لا تيأس حاول :)

انا غيرت شوي في البرنامج الي كتبته والشكر للاستاذ هاني الي بسط الفكره

والتغيير في الفانكشن decrypt

void decrypt(int t[],int *k )

{ int i;

for(i=0;i:rolleyes:

ورود

#9

كل الشكر لك ورود .. ولكن للحين ابغى ادمج البرنامجين ببرنامج واحد

دمجوه لي الله يخليكم ... و انا توني عليمي ومن جد تقريبا = صفر بالفيجول ++C :eek:

#10

اخوي Hussain

البرنامج جاهز فوق ما عليك الا تغير الفانكش الي قمت انا بتصحيحها يعني تلغي الفانكش decrypt من البرنامج

وتحط بدالها

void decrypt(int t[],int *k )

{ int i;

for(i=0;i:rolleyes:

ورود

#11

شباب اعتبروني غبي وما افهم شي.....

يعني كل هذا عجز مو راضين تطبعون البرنامج كامل ؟!؟!؟!؟!

دام ان البرنامج حقي هذا هو هنا وبرنامجكم اللي تقولون بس كوبي بست موجود وحطيتوه اشوف ركبوهم مع بعض صح علشان انسخ والصق وأشغل البرنامج

لاني نسخة البرنامج وحطيته طلع فيه الف غلط يمكن 25 غلط :( :(

على فكره انا ابغاه بالفجوووول ++C ويوم شغلته على فجول بلس بلس الف خط

و لاني اول مره اشوف ( = ) انا خابرها (==) مو (=) وبأقواس مو بدون كذا ويوم سويت كومبايلر قال لي ان فيه error كثير مره

انا ابي برنامج على نفس صيغة البرنامج اللي وضعته ولو فيه شي اسهل منه بعد يكون افضل يشفر ويفك الباسورد بنفس الوقت ويكون للفجول ++C

ـــــــــــــــــ

واذا هذا اللي حطيتوه لي بالفجول ++C عذروني ما بعد اخذ وادرس هالشغلات لاني اشوفها غريبه مرره ؟!؟!؟ مثل برنامجك الكامل يا ورود اللي انت وضعته اشتغل عندي ولكن عكس الارقام بالغلط مو مضبط بالطريقه الص والا هو يشتغل ويشفر ويرجع يفك ... ولكن #include

#include

انا للحين ما درستهم ولا اعرف ايش معناهم انا حدي للحين ادرس

#incllude

#include

وبس

:(

انا خلاص شيبت ويا اصحاب الخبره شوفوا لي حل ... هلب مي على قولتهم :eek:

#12

أخي على كل مو مشكلة شوي شوي بتتعلم ..

هناك خطأ بسيط جدا في برنامجك الأول وهو أنك كتبت #incllude .. على كل هذا البرنامج كامل :

أختي ورود طبعا حلك صحيح مائة في المائة ولكن الأخ حسين يريد البرنامج على طريقته .. وأشكرك على التجاوب مرة أخرى .. ;)

#include 
#include 

////////////////////////////////////////////////
// encrypt( int n ) 
//
//	Description : The encryption routine
//
//	Parameters : 
//		n : is the value to be encrypted
//
//	Return : the incrypted value

int encrypt( int n ) 
{ 
	int result;

	result =   ((((n / 1 % 10) + 7) % 10) * 100 ) 
			 + ((((n / 10 % 10) + 7) % 10) * 1000 ) 
			 + ((((n / 100 % 10) + 7) % 10) * 1 ) 
		     + ((((n / 1000 % 10) + 7) % 10) * 10 ); 
	return result;
} 

////////////////////////////////////////////////
// decrypt( int n ) 
//
//	Description : The decryption routine
//
//	Parameters : 
//		n : is the value to be decrypted
//
//	Return : the decrypted value

int decrypt( int n ) 
{ 
	int result; 
	result =   ((((n / 1 % 10) + 3) % 10) * 100) 
	         + ((((n / 10 % 10) + 3) % 10) * 1000) 
		     + ((((n / 100 % 10) + 3) % 10) * 1) 
		     + ((((n / 1000 % 10) + 3) % 10) * 10); 

	return result; 
} 

////////////////////////////////////////////////
// main() 
//
//	Description : The main program
//
//	Parameters : N/A
//
//	Return : The exit value

int main() 
{ 
	int n; 
	cout << "Type the value to Derypt it : ";
	cin >> n; 

	if (n <= 9999) 
	{ 
		int en = encrypt( n );
		cout << "Encrypted value : " 
			 << setw(4) << setfill('0') << en << endl;
		int de = decrypt(en);
		cout <<"Decrypted value : " 
			 << setw(4) << setfill('0') << de << endl;

		if (de == n) {
			cout << "COOL!! The operation completed successfully.!" << endl;
		}
		else {
			cout << "Error in Encryption/Dectyption!" << endl;
			return 2;
		}
	} 
	else 
	{ 
		cout << "ERROR: Non 4-digit number entered." << endl; 
		return 1; 
	} 

	return 0; 
}

Coding on the Cloud and for the Cloud!

My Blog

#13

مشكورين وما قصرتوا اخواني ومشكور اخوي هاني عالبرنامج .... بس انت تقول برنامج ورود صح ؟؟؟؟ جربه وتشوف انه غلط مو صح لانه ما يسوي العمليه اللي نبغاها بالضبط

و اذا ممكن سؤال ثاني هذي بالضبط ايش معناها

return 2;

}

?

وعلى فكره انا اتعلم

return 2;

}

و

return 1;

}

منكم والا انا للحين ما بعد ادرسه وشكل الكورس بيخلص ولا بناخذهم علشان كذا لا تلوموني :)

اخوكم Hussain :rolleyes:

#14

أوكي،

تعليمة ال return انهاء عمل التابع والرجوع إلى التابع المستدعي والقيمة التي بعد ال return هي القيمة المرجعة .

تعليمات return هي واحدة في الmain وفائدتها الرجوع إلى النظام (كان دوس أو وندوز أو غيرها) والقيمة بعد ال return هي القيمة التي يرجعها البرنامج إلى النظام والقيمة 0 تفيد صحة خروج البرنامج وأي قيمة غيرها تفيد أن البرنامج انتهى بخطأ ما . وهي فقط تفيد في حالة تنقيح البرنامج ..

أخي برنامج ورود صحيح ولكنه يقتضي ادخال كل رقم بعد الآخر وبينهم مسافة أو enter ..

وسلام

Coding on the Cloud and for the Cloud!

My Blog

#15

مشكور وما قصرت اخوي :)

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

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

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

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

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

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