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

السلام عليكم ( التشفير ) فكره جديده

مغلق
بدأه بخيت في 8 نوفمبر 2002 · 13 رد · 900 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

على الاقل عندي :) جديده

اخواني الكرام هذه اولى مشاركاتي اتمنى ان افيد واستفيد معكم ..

اقوم بعمل هذه الايام يحتاج الى كتابة بريمج يعمل على تشفير الكلمات المدخله اليه كما يقوم بعد ذلك بفك التشفير في حال الرغبه .

الفكره حتى الان :

1 ) واجهة ادخال للكلمات ( ادخل الكلمه ثم يقوم البرنامج بتشفيرها وطباعتها بعد التشفير ) ..

2 ) قاعده او ملف او اي كان لحفظ الكلمات المدخله وهي مشفره ..

3 ) واجهه لفك التشفير او استرجاع الكلمات التي محفوظه لصيغتها الطبيعيه وطباعتها ..

كما ترون لعل البرنامج بسيط الى حد ما ولكني فعلا الى الآن لم اجد النقطه التي ابدأ بها ..

فهل لي بمساعده منكم او خطوات عمليه اقوم بها لبناء هذا البريمج ؟؟

تحياتي اليكم ..

#2

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

أخي بخيت الجواب بسيط جداً ...

أما إستقبال الكلمات فاستعمل الدالة getch في الملف

conio.h و هي دالة تقوم بأخذ الحرف من غير إظهاره على

الشاشة ثم أعمل عليه التشفير ثم إطبعه بالامر printf

أو cout .

هذه هي نقطة البداية و الباقي هو مجرد تخزين عادي في

الملف و عملية عكسية للحالة الأولى :)

لمزيد من المعرفه عن الدالة getch راجع هذا الرابط:

http://www.c4arab.com/showlesson.php?lesid=813

و لمزيد من المعرفه في الملفات في سي:

http://www.c4arab.com/showlesson.php?lesid=814

تحياتي ,,, طلال.

#3

الطريق كما ذكر اخ طلال

اما اذا اردت كود فهذا غير صحيح لان كيف تريد برنامج تشفير

وهو معروض في الموقع ؟

وشكرا

اختكم

لغة سي

#4

اعتذر كثيرا عن تأخري بالرد

وأشكركم على المساعده والتي بلا شك افادت ..

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

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

اتمنى ان تساعدوني على تخطي هذا الخلل ( مطلوب مني بكره :'( )

#include <iostream.h>

#include <cstring.h>

#include <fstream.h>

#include <fstream.h>

void main ()

{





ifstream data("english.txt");

if(!data)

	cerr<<"english  file could not be opened"<<endl;



ofstream compress("compressed.txt");

if(!compress)

	cerr<<"compressed file could not be opened"<<endl;



char word;

data>>word;





if(word=='E'){

compress<<1010;}



if(word=='T'){

compress<<1011;}



if(word=='A'){

compress<<11000;}



if(word=='O'){

compress<<11001;}



if(word=='N'){

compress<<11011;}







}
#5

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

أخي لم أفهم البرنامج فهو لا يعمل ما هو مطلوب

كما ذكرت في السؤال اعلاه !!

هل تريد تشفير كلمة أم حرف فقط ؟!!!!!!

تحياتي .,,,

#6

استاذي العزيز

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

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

والذي اردته هو ان يقوم البرنامج بالانتقال الى الحرف التالي عند الانتهاء من الحرف الاول

وذلك ليستمر عمل البرنامج في المستند النصي كاملا

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

#7

السلام عليكم

جرب هذا :

while(data>>word)
{
if(word=='E'){
compress<<1010;}

if(word=='T'){
compress<<1011;}

if(word=='A'){
compress<<11000;}

if(word=='O'){
compress<<11001;}

if(word=='N'){
compress<<11011;}
}

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#8

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

:D الان فهمت نعم أخي بالطبع لا بد من عمل

while كما فعل أستاذي tmaaa

لأنه سوف يقرء حرف واحد ثم يخرج من البرنامج :)

و من ثم لمذا لا تجعل معادلة عامه تحول كل حرف

إلى أي شيئ أو ان تخزن كل حرف على صيغة Binary

أي صفر وواحد :) مثلاً

مع تحياتي ,,, و برمجة ممتعه :)

#9

من الصعب بعد تشفير الجملة اعادتها الى الجملة الاصلية

بالطريقه المكتوبة

اما ان تأخذ الرقم digit لان الحرف E يتكون من 4digit

والحرف A 5digit

يكون صعب الا في حالة استخدام عملية حسابه

ان تقرا 1100 على انه رقم ثم تبحث به الى دالة تحوله الى رقم الاصلي للحرف واعادة الحرف الاصلي

مثل

A=56

وتحول هذا الرقم الى 11000(ليس الرقم صحيح لكن افتراض)

ويطبع على الشاشة

وعند تحويله تقراء 11000 والى الدالة ليتحول الى 56

***********

اختكم لغة سي

#10

بالنسبة لموضوع التشفير :

1- أنصحك باستخدام VisualC++ لأنها أكثر مرونة في التعامل مع ال string .

2 - التشفير يحتاج إلى تحديد الشيفرة المستخدمة , لذلك أقترح عليك شيفرة Gray , وأنا أستطيع المساعدة بشكل ممتاز إن أردت.

أستطيع مساعدتك في VisualC++ , والشيفرة إن لم تكن تعرفها , وهي سهلة جداً.

#11

#include

#include

#include

البرنامج الأول يشفر الملف النصي english.txt ويضع الناتج في الملف number.txt .

void main()

{

FILE* pf1;

FILE* pf2;

char ch;

pf1 = fopen("english.txt","r+t");

pf2 = fopen("number.txt","w+");

if (pf2 == NULL)

exit(1);

ch = fgetc(pf1);

while (!feof(pf1)) {

fprintf(pf2,"%d ",ch);

ch = fgetc(pf1);

}

fclose(pf1);

fclose(pf2);

}

البرنامج الثاني يفك شيفرة الملف number.txt ويضع الناتج في الملف english.txt .

void main()

{

FILE* pf1;

FILE* pf2;

int i_ch;

pf1 = fopen("number.txt","r+t");

pf2 = fopen("english.txt","w+");

if (pf1 == NULL)

exit(1);

fscanf(pf1,"%d",&i_ch);

while (!feof(pf1)) {

fprintf(pf2,"%c",i_ch);

fscanf(pf1,"%d",&i_ch);

}

fclose(pf1);

fclose(pf2);

}

#12

#include

#include

#include

البرنامج الأول يشفر الملف النصي english.txt ويضع الناتج في الملف number.txt .

void main()

{

FILE* pf1;

FILE* pf2;

char ch;

pf1 = fopen("english.txt","r+t");

pf2 = fopen("number.txt","w+");

if (pf2 == NULL)

exit(1);

ch = fgetc(pf1);

while (!feof(pf1)) {

fprintf(pf2,"%d ",ch);

ch = fgetc(pf1);

}

fclose(pf1);

fclose(pf2);

}

البرنامج الثاني يفك شيفرة الملف number.txt ويضع الناتج في الملف english.txt .

void main()

{

FILE* pf1;

FILE* pf2;

int i_ch;

pf1 = fopen("number.txt","r+t");

pf2 = fopen("english.txt","w+");

if (pf1 == NULL)

exit(1);

fscanf(pf1,"%d",&i_ch);

while (!feof(pf1)) {

fprintf(pf2,"%c",i_ch);

fscanf(pf1,"%d",&i_ch);

}

fclose(pf1);

fclose(pf2);

}

#13

السلام عليكم ورحمة الله

لقد تأكدت الآن انني مهمل للفائده من الانترنت :)

معذره اخواني على التأخير بالرد

الاستاذ tmaaa جزاك الله كل خير وفرج عنك كل ضيق فعلاً اتيتني بالحل :)

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

الاستاذه اختي لغة سي اشكرك على تعقبك جزاك الله كل خير ..

اخي اسماعيل عنجريني شاكرا لك فضل ما تقدمت به فعلا رائع سهل الله لك دروبك على الخير ..

-------------------------

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

الحمد لله تمت كتابة البرنامج ( على قدي:o ) وارفقته لكم هنا والآن اواجه مشكلتان انا أكيد من انكم ستفيدوني فيها بإذن الله ..

#include <iostream.h>

#include <cstring.h>

#include <fstream.h>

#include <fstream.h>

void main ()

{





ifstream data("english.txt");

if(!data)

	cerr<<"english  file could not be opened"<<endl;



ofstream compress("compressed.txt");

if(!compress)

	cerr<<"compressed file could not be opened"<<endl;



char word;



while(data>>word){



if(word==' '){

compress<<100;}



if(word=='E'){

compress<<1010;}



if(word=='T'){

compress<<1011;}



if(word=='A'){

compress<<11000;}



if(word=='O'){

compress<<11001;}



if(word=='S'){

compress<<111000;}



if(word=='H'){

compress<<111001;}



if(word=='R'){

compress<<111010;}



if(word=='L'){

compress<<111011;}



if(word=='D'){

compress<<1111000;}



if(word=='W'){

compress<<1111001;}



if(word=='G'){

compress<<1111010;}



if(word=='V'){

compress<<1111011;}



if(word=='Y'){

compress<<11111000;}



if(word=='F'){

compress<<11111001;}



if(word=='M'){

compress<<11111010;}



if(word=='P'){

compress<<11111011;}



if(word=='C'){

compress<<111111000;}



if(word=='K'){

compress<<111111001;}



if(word=='U'){

compress<<111111010;}



if(word=='B'){

compress<<111111011;}



if(word=='J'){

compress<<111111100;}



if(word=='Q'){

compress<<111111101;}



if(word=='X'){

compress<<111111110;}



if(word=='Z'){

compress<<111111111;}







}

}

المشكله الأولى هي المسافه بين الكلمات او الجمل لا يعمل البرنامج عليها علماً باني حاولت ان اجعله يتعامل معها كحرف عادي . لا أعلم ماهو الحل ؟

المشكله الثانيه ان الموضوع كبر في رأس الدكتور ويبغانا نعمل للبرنامج واجهه تطبيقيه للتعامل مع البرنامج خارج برنامج C++ اي انه يكون برنامج مستقل .. والحقيقه هنا توقفت حائراً فلا أعلم من اين ابدأ .. فهل لكم بإرشادي على الاقل بالبدايات ؟؟

أعود مره أخرى لإشكركم جميعا وتأكدوا بأن الدعاء لكم في ظهر الغيب وجب :)

تحياتي ..

#14

السلام عليكم

من الواضح تريد ان تخزين البيانات في ملف

اولا

البرنامج يقصه عملية الخروج من البرنامج اذا لم يجد الملف

exit(1)//return0

ثانيا يجب ان تكون هناك مسافة بين كل طباعة

cout<<"100110<<" ";

لان المسافة هي الفاصل بين كل string

اختكم

لغة سي

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

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