المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : ارجوا المساعده في الـc++


raghd
25-Mar-2008, 12:48 AM
السلام عليكم و رحمه الله و بركاته
اتمنى مساعدتي في اجاد الخلل في هذا الكود حيث انه يطلب من المستخد كتابة جمله
ثم يعيد طباعتها بعد حذف الاحرف المكرره


#include<iostream.h>
int main(){
char string1[26];
char string2[26];
cout<<"Enter The String :";
cin>>string1;
for(int i=0;i<26;i++)
{for(int j=0;j<20;j++)
if(string1[i]==string1[j])
string1[i]=string1[j];
}
for( i=0;i<26;i++)
cout<<" The String after deleting duplicate characters :";
cout<<string1[i];
return 0;
}

waad
26-Mar-2008, 02:14 AM
السلام عليكم
اختي رغد كيف حالك ومرحبا بك في المنتدى

اختي المشكله عندك هنا

for(int i=0;i<26;i++)
{for(int j=0;j<20;j++)
if(string1[i]==string1[j])
string1[i]=string1[j];
}


حاولي تراجعين الكود مرة اخرى وانا ان شاء الله راح اشوفه لك غدا نظرا لتأخر الوقت (( وتوقف العقل عن التفكير :())

بالتوفيق اختي

waad
26-Mar-2008, 02:21 AM
اختي المفروض ان الi & j مايتساوون
يعني تحطين if statement بعد الfor
اذا كانوا مو متساويين تقارن اذا متساويين ماتسوي شي

هذه الفكره التي في بالي في هذا الوقت جربيه وان شاء الله يعمل وانا راح امر المنتدى غدا ان شاء الله لأطمئن عليك
بالتوفيق اختي :)

AL-KING
26-Mar-2008, 03:27 PM
اختي الكريمه


الفكرة الي في بالي هي كالتالي

يتم ادخال المصفوفة الاولي و التي يدخل فيها المستخدم الاحرف

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

و يتم اختيار الحروف فقط ولا يتم اختيار اي حرف مكرر

بعدها يتم طباعه الاحرف فقط

و هذا الكود كتبته و هو يقوم بتصفيه الحروف a,b,c وتقدري تكملي بقيه الاحرف بالنسخ و اللصق و التعديل البسيط فقط في اسماء المتغيرات

و يمكنك ايضا استخدام الاسكي كود

* ملاحظة انا عملتها احرف صغيرة اذا حبيتي ممكن تضيفي الاحرف الكابيتل بنفس الطريقه

تفضلي الكود

#include<iostream.h>
void main()
{
int hh=0 ;
int a=0,b=0,c=0,d=0 ,e=0,f=0,g=0,h= 0,i=0,j=0,k=0,l =0,m=0,n=0,o=0, p=0,q=0,r=0,s=0 ,t=0,u=0,v=0,w= 0,x=0,y=0,z=0;
char string1[26];
char string2[26];
cout<<"Enter The String :";
for(int ii=0;ii<26;ii++)
{
cin>>string1[ii];
}
for(int jj=0;jj<26;jj++)
{
if(string1[jj]=='a'&&a==0)
{
string2[jj]='a';
a++;
}
if(string1[jj]=='b'&&b==0)
{
string2[jj]='b';
b++;

}
if(string1[jj]=='c'&&c==0)
{
string2[jj]='c';
c++;

}

}
cout<<"\n out : ";
for(int kk=0 ; kk<=26 ; kk++)
{

if(string2[kk]=='a')
{
cout<<string2[kk];

}
if(string2[kk]=='b')
{
cout<<string2[kk];

}
if(string2[kk]=='c')
{
cout<<string2[kk];
}

}
cout<<"\n";
}

انا عارف ان الكود راح يطلع طويل و لكن هذا الي طلع معاي

و اذا ما عرفتي تعديل الكود اي مافهمتي فيه جزئيه معينه تقدري تسائلي عنها

و اي خدمه احنا حاضرين

احترامي

A L - K I N G

raghd
26-Mar-2008, 05:37 PM
weed

اختي المفروض ان الi & j مايتساوون


يعني تحطين if statement بعد الfor
اذا كانوا مو متساويين تقارن اذا متساويين ماتسوي شي

اختي الفكرة فقط احذف المتساوي
ولكن اذا كانوا مو متساوين ما اغير شي

شاكرة لك مرورك

raghd
26-Mar-2008, 05:38 PM
AL-KING
جاري تجربه الكود
يعطيك العافيه

waad
26-Mar-2008, 11:08 PM
السلام عليكم
اختي رغد انا فاهمة الفكرة لاني اخذت نفسها لما كنت في سنه أولى :)

الكود المفروض يكون (( حسب توقعي ))

for (int i=0;i<26;i++)
{
for (int j=0;j<26;j++)
{
if (i!=j)
{
if (string1[i]==string1[j])
{
//shift array to delete element string[j]
}
}
}

waad
26-Mar-2008, 11:11 PM
Al-king
جزاك الله كل خير على المساعده
اخي طريقتك صحيحه ولكنها طويلة جدا وممكن تتعبك كثير في برامج اخرى اكبر واطول

اتمنى لك التوفيق

raghd
28-Mar-2008, 12:14 AM
مشكورة وعد
عل اهتمامك
و يا ريت تكملي جميلك وتحاولي تكتشفي الخطاء في كودي الجديد



#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main()
{
string alphabet;
string key;
alphabet.resize (26);
int k=0;
for(int i=int('a');i<=int('z');i++)
{
alphabet[k++]=char(i); //initializing alphabet with all letters from a to z
}//for

cout<<"Enter the Keyword:\n\n\t";
cin>>key;
string c;
c=key+alphabet;
for(int y=0;y<c.size() ;y++)
for(int j=y+1;j<c.size() ;j++)
{
if(c[y]==c[j])
c[j]='.';
}
string p;
p.resize(26);
int t=0;
for(int m=0;m<c.size();m++)
{
if(c[m]!='.')
p[t++]=c[m]; //if condition
} //for
cout<<"\nThe new alphabetic letters are:\n\n";
cout<<p;
cout<<"\n\n";
ifstream plain("mono_plaintext. txt");
ofstream cipher("mono_ciphertext .txt");
string message;
string e_message;
int s=message.lengt h();
int d=0;
while(!plain.eo f())
{
getline(plain,m essage);
e_message.resiz e(s);
for(int n=0;n<s;n++)
{
for(int y=0;y<26;y++)
{
if(message[n]==alphabet[y])
{
e_message[n]=char(p[y]);
d++;
}//if
}//inner for
}//outer for
cout<<"\nThe encrypted Message is:\n"<<e_message[d]<<"\n";
cipher<<"The encrypted Message is:\n"<<e_message.c_str ()<<"\n";

}//while

plain.close();
cipher.close();
return 0;

}


الخطاء بس في جملة الطباعه الاخيره

waad
28-Mar-2008, 12:10 PM
السلام عليكم
اهلا اختي
اظن المشكله عندك في جملة ال while(!plain.eo f())

raghd
28-Mar-2008, 05:01 PM
هذا امر علشان يقرأ من الملف و يطبق الاوامر حتى ينهي من كل الكلمات الموجده فيه ثم يخرج
..
.. صراحه نعبت مو قادره احصل الخطاء

waad
28-Mar-2008, 10:36 PM
الله يعطيك العافيه اختي
اعرف انه امر للطباعه لكن الصراحه الكود هذا جديد علي يعني في اشياء ما مرت علي من قبل
نصيحتي لك راجعي ال loop في الطباعه

raghd
28-Mar-2008, 11:53 PM
وعد
تسلمي اختي