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

ايش الخطأ لو سمحتوا

بدأه std في 22 أبريل 2009 · 6 رد · 590 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

عندي مشكلة في التنفيذ اعتقد انه من عبارة if

اتمنى لو تطلعوا على الكود وتعرفوا الخطأ

الكود هو كالتالي

# include <iostream>
using namespace std;
using std::cout;
using std::cin;
using std::endl;
#include <string>

void main() {
	char a[26][26],inc[100],g[100];
	string msg;
	string key; 
	int i,j,s,z,k,f,temp1,temp2,flag; 

	s=65;
	for(i=0;i<26;++i)
	{
		z=s;
		for(j=0;j<26;++j)
		{
			if(z<=90)
			{
			  a[j]=z;
			  ++z;
			}
			//else
			{ 
			   break;
			}
		}

		z=65;
		f=j;
		for(k=1;k<=(26-f);++k)
		{
			a[j]=z;
			z++;
			j++; 
		}
	++s;
	}//end first for
  for(i=0;i<26;i++)
  {
	  for(j=0;j<26;j++)
		  cout<<a[j]<<" ";
	  cout<<endl;
  }

  cout<<"Enter your message"<<endl;
  getline(cin, msg, '\n');

  cout<<"Enter key incription"<<endl;
  getline(cin, key, '\n');

  //char inc[msg.length()];
  j=0;
  cout<<msg.length()<<endl<<key.length()<<endl;
  for(i=0;i<msg.length();i++)
  {

	  if(j<key.length())
	  if (msg!=' ')
		  inc=key[j];
	  else
	  {
		  inc=' ';
		  --j;
	  }
	  else
	  {
		  j=-1;
		  --i;
	  }

	  ++j;

  }

  for(i=0;i<msg.length();i++)
	  cout<<inc;
  //inc='\0';

  flag=0;
  for(i=0;i<msg.length();++i)
  {
	  for(j=0;i<26;++j)
	  {   if(msg==' ')
		  {
			  g=' ';
			  break;
		  }
		  if(msg==a[0][j])
		  {
			  temp1=j;
			  temp2=j;
			  ++flag;
			  ++flag;

		  }
		  /*if(inc==a[j][0])
		  {
			  temp2=j;
			  ++flag;
		  }*/
		  if(flag==2)
			  break;
	  }
	  if(flag==2)
	  g=a[temp2][temp1];
	  flag=0;
  }
for(i=0;i<msg.length();++i)
 cout<<g;
cin>>z;
}

وجزاكم الله خير

#2

السلام عليكم

البرنامج سليم برمجيا

ولكنى اعتقد انه يوجد خطأ منطقى فيه

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

او المطلوب من البرنامج بالضبط !!!!

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#3

السلام عليكــم ورحمـة الله وبركاتــه ،،

اولاً اشكرك على تفاعلك وتعاونك

هذه الخوارزمية هي

vigenere's cipher

إن شاء الله تكون اتوضحت

#4

السلام عليكم

#include <iostream>
#include <string>
#include <ctype.h>
using namespace std;
void main() {
	char a[26][26];
	string msg;
	string key;
	string en_msg="";
	int i,j,s,z,f,k;
	char t1,t2;
	s=65;
	for(i=0;i<26;++i)
	{
		z=s;
		for(j=0;j<26;j++)
		{
			if(z<=90)
			{
			  a[j]=z;
			  ++z;
			}
			else
			{
			   break;
			}
		}

		z=65;
		f=j;
		for(k=1;k<=(26-f);++k)
		{
			a[j]=z;
			z++;
			j++;
		}
	++s;
	}//end first for
  for(i=0;i<26;i++)
  {
	  for(j=0;j<26;j++)
		  cout<<a[j]<<" ";
	  cout<<endl;
  }
  cout<<"Enter your message"<<endl;
  getline(cin, msg, '\n');
  cout<<"Enter key incription"<<endl;
  cin>>key;
  cout<<msg.length()<<endl<<key.length()<<endl;
  j=0;
  for (i=0;i<msg.size();i++)
  {
	  if(msg!=' '){ 
	  t1=toupper(msg);
	  t2=toupper(key[j%(key.size())]);
	 en_msg+=(a[t1-'A'][t2-'A']);
	  }
	  else
		  en_msg+=' ';
	  j++;
  }
  cout<<en_msg<<endl;
}

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#5

السلام عليكــم ورحمـة الله وبركاتــه ،،

شكراً أخي amin_mu123 على تفاعلك معي

البرنامج اتنفذ معي الحمد لله

بس اريد استفسر من سطرين في البرنامج ما فهمتم ممكن توضح ايش عملهم

t2=toupper(key[j%(key.size())]);
	 en_msg+=(a[t1-'A'][t2-'A']);

تسلم أخي والله يعطيك العافية

مشكووووووور

#6

العفو أخى

t1 ,t2 متغيرات حرفيه مؤقته , t1 يستقبل حروف الرساله تباعا بعد تحويلها الى الصوره الكبيره عن طريق toupper

t2 يستقبل حروف كلمة السر بطريقه تكراريه فمثلا عندما تكون كلمة السر hello فمن المفترض حسب الخوارزميه أن تتكرر كلمة hello حسب حروف الرساله

لو فرضنا ان الرساله

iwanttolearn

تتكرر كلمة السر بالشكل التالى

hellohellohe

ولكى أجعل t2 يستقبل الحروف من كلمة السر بهدا الشكل التكرارى استخدمت معامل باقى القسمه %

j%(key.size())

ثم ادخلت t1 ,t2 بطرحهما من 'A' حتى استطيع التعامل مع المصفوفه المسبقه a

فيعطينى حرف ما اقوم بإضافته الى en_msg تباعا

فتتكون لدى الرساله المشفره

تحياتى

تم تعديل هذه المشاركة بواسطة amin_mu123 في 25 أبريل 2009 في 09:59

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#7

السلام عليكــم ورحمـة الله وبركاتــه ،،

شكرا اخي

البرنامج اتنفذ بس في خطأ بسيط

هو أن زيادة قيمة J تكون داخل IF وليس خارجها

وشكراً

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