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

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

بدأه CPP-Programmer في 25 سبتمبر 2008 · 21 رد · 1,686 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كيفكم شباب ؟يارب تكنون بخير :)

معي مشكلة متوسطة اليوم وجعت لى راااااااسي جداً !!

المشكلة كالتالي :

اريد ان اعمل يطبع لك كلمات معينة كل مدة معينة وتختار بrandom يعني مثلا اريد اطبع كلمة ahmed اريد اخلي a ثم ينتظر شئ اقل من 950 بالSleep (عشوائي) ويكتب كل رقم والحمدلله نجحت وهذا هو الكود :

#include<windows.h>

#include<iostream>

#include<stdlib.h>

#include<time.h>

using namespace std;

void main(){

srand( time(NULL) );

system("color c");

char name[] = {'A','h','M','e','D',' ','K','i','n','g',' ',' ','z','A','x',' ','Y','e','e','7'};

for(int i=0;i<=19;i++){

cout << name;

Sleep(rand() % 950);

}

cout << endl << endl << "Written By zAx ";

system("pause");

}

لكن احب يكون الكلام اللى بيكتبه يكون Input يعني المستخدم البرنامج هو اللى يضعه ويبدل الahmed king zax yee7 لأي كلمة ثانية هو عاوزها قعدت اشوف اى دالة مش عارف !! وفيه دالة بالفيجوال بيسك اسمها Mid وهي تكتب فيها رقم الحرف ويكتبه لما يكون variable..

وطبعاً الفكرة بتاعت البرنامج كلها انه Array يعني كل حرف لوحده وبعدها فالfor فيه لووب من 0 الى 19 يعني حيكتب لى الحروف كلها ان شاء الله .. ايه الحللل :( :( :( ؟

هل فيه دالة تكتب لى الحروف حرف حرف مثل Array لكن char ??

او هل ممكن اخلي المستخدم يدخل البيانات في Array؟ يعني مثلا يجيب اول حرف يدخله المستخدم ويضعه بأول Array ? او فيه حل ثني او ايش ؟

وشكراً لكم

وانتظركم ان شاء الله

Just C++ Life :)

#2

اهلا اخي

بصراحة لم افهم قصدك , جيدا ,

هل تقصد هكذا ؟

#include<windows.h>
#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<string>
using namespace std;


void main()
{
srand( time(NULL) );
system("color b");
string name;
cout<<"Enter Your Text:"<<endl;
getline(cin, name);
cout<<".................................................."<<endl;
for(int i=0;i<=strlen(name.c_str());i++){
cout << name;
Sleep(rand() % 950);
}
cout << endl << endl << "Written By zAx ";
system("pause");
}
llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#3

اعتقد طريقة Time كافيه لكن هذه طريقه أخرى للحل

  1.  
  2. #include <ctime>
  3. #include<cstdlib>
  4. #include <iostream>
  5. #include<string>
  6. using namespace std;
  7. void wait ( int seconds )/*sleep تعمل عمل*/
  8. {
  9. clock_t endwait;
  10. endwait = clock () + seconds * CLOCKS_PER_SEC ;
  11. while (clock() < endwait) {}
  12. }
  13.  
  14. int main(int argc, char *argv[])
  15. {
  16. srand ( time(NULL) );/*تجديد الاعداد*/
  17. string text;
  18. cout<<"Enter Text :";
  19. getline(cin,text);
  20. for(int i=0;i<text.size();i++)
  21. {
  22. wait(rand()%3),cout<<text[i];
  23. }
  24. cout<<endl<<endl<<endl<<"Bye";
  25. cin.get();
  26.  
  27. return 0;
  28. }
  29.  
  30.  

tvquran_6.gif

#4
  1.  
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. int main(void)
  7. {
  8. string input;
  9. cout << "Enter string : " ;
  10. getline(cin, input);
  11. int n = input.length();
  12. const char* arr = new char[n+1];
  13.  
  14.  
  15. arr = input.c_str();
  16.  
  17. for (int i = 0; i < n; i++)
  18. {
  19. cout << arr[i] << endl;
  20. for (int j = 0; j < 10000; j++);
  21. }
  22. system("pause");
  23. }
  24.  
  25.  

اخى ,, هل هذا ما تريد ؟؟

السطر 20 : العدد 10000 هو عداد للعد حتى 10000 ثم طباعة الرقم الذى بعده و يمكنك تعديله كيفما تشاء

تم تعديل هذه المشاركة بواسطة Omar Eladel في 25 سبتمبر 2008 في 04:24

#5

السلام عليكم

اسف للتأخير :)

time1 اهلا ورحباً بك بالموضوع اولا شكرا جزيلا

ثانيا كودك شغال تمام وهذا اللى اقصده ;)

فهد الشلوي كودك فيه غلط شكرا جزيلا وخلاص حبيبي جزاك الله خيرا تايم1 قالي الحل

عمر العادل فيه اخطاء برضه لكن الحمدلله تم حل المشكلة

لكن فيه مشكلة اصغر بكثير

ملاحظة ( اخذت دمج من بين كودين Time1 و فهدالشلوي) وهذا هو الكود النهائي والحمدلله شغال تمام :

#include<iostream>
#include<string>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
using namespace std;
void main(){
srand( time(NULL) );
string txt;
cout << "Enter the txt : " << endl;
cin >> txt;
for(int i=0;i<=txt.size()+2;i++){
cout << txt;
Sleep(rand() % 950);
}
cout << endl << "Written By zAx" << endl;
system("pause");
}

لكن شباب جميع البرامج لااعرف لماذا اذا وضعت بها كلمة ثم مسافة ثم كلمة تكتب الكلمة الاولي ثم لا تطبع الباقي

ياريت تاخذون كودي وتجربونه وتكتبون مثلا في البرنامج :

ahmed cpp

حيكتب : ahmed وبس !!

هل فيه حل :( ؟

Just C++ Life :)

#6
اقتباس
لكن شباب جميع البرامج لااعرف لماذا اذا وضعت بها كلمة ثم مسافة ثم كلمة تكتب الكلمة الاولي ثم لا تطبع الباقي

ذلك لأن الكائن cin لا يتعامل مع ما بعد المسافات البيضاء لذلك استخدم

getline(cin, name of variable)

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

اضافة ::

اقتباس
عمر العادل فيه اخطاء برضه لكن الحمدلله تم حل المشكلة

ممكن تذكر الاخطاء لى لأن البرنامج عندى يعمل بدون اى مشاكل ؟؟

وفقم الله

تم تعديل هذه المشاركة بواسطة Omar Eladel في 25 سبتمبر 2008 في 20:51

#7

ماهو كمبايلرك ؟

tvquran_6.gif

#8

السلام عليكم

عمر العادل اهلا حبيبي :)

تمام اخي .. فهمتك وتم حل المشكلة الحمدالله بالgetline(cin, txt);

والان فهمت انه cin>> لا تتعامل مع اى شئ بعد " "او المسافة

والاخطاء هي كالتالي ولكن خلاص تمت البرمجة ولكن فيه ملحوظة ياريت تجاوبوني عليها بالأخر :

--------------------Configuration: OmarElAdel - Win32 Debug--------------------

Compiling...

OmarElAdel.cpp

c:\documents and settings\zax\omareladel.cpp(11) : error C2143: syntax error : missing ']' before 'constant'

c:\documents and settings\zax\omareladel.cpp(11) : error C2143: syntax error : missing ';' before 'constant'

c:\documents and settings\zax\omareladel.cpp(11) : error C2143: syntax error : missing ';' before ']'

c:\documents and settings\zax\omareladel.cpp(22) : warning C4508: 'main' : function should return a value; 'void' return type assumed

Error executing cl.exe.

OmarElAdel.exe - 3 error(s), 1 warning(s)

وشكراً لك جزيلا لكن ارجو الاجابة علي الملاحظة : بتلاقيها تحت بس نردعلى باقى الاخوة

فهد الشلوي : كومبايلري هو Microsoft Visual C++

ارتحت عليه :)

الملاحظة ارجو الرد عليها وهي الأخيرة ان شاء الله في البرنامج البسيط بتاعي :

عند تشغيل البرنامج واكتب الكلام اللى عاوزه يطبعه لي بصيغة اليد (هههه يعني كأنه شخص هو اللى يكتب وهذا هو برنامجي) ما يطبعه اول مرة لازم اكتبها مرتين

يعني اول لما يشتغل مثلا اكتب ahmed مايحصل شئ ... اكتب ahmed مرة ثانية يشتغل البرنامج لماذا + هل فيه حل ؟

صراحة يا شباب :اشكركم من كل قلبي صراحة فعلا حبيبتوني في سي++ وجعلوتني احبها اكثر واكثر ;)

Just C++ Life :)

#9

عندك فى error فى دالة main و يقل لك يجب ان ترجع void و انا عندى MinGW و يقل لك يجل ان ترجع int :lol:

اخى العزيز :

* ملحوظة

ممكن تستخدم الصناديق التى يوفرها المنتدى لتوضيح الكلام

تم تعديل هذه المشاركة بواسطة Omar Eladel في 25 سبتمبر 2008 في 21:57

#10

اخي جميع الكودات التي وضعها الاخوان تايم وعمر والتي كتبتها انا لا يوجد فيها اي خطاء برمجي.

لكن فقط كود عمر يطبع حرف تحت حرف ولا يستخدم انتظار عشوائي فقط انتظار ثابت.

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

#include <ctime> 
الى
#include <time.h>
و
#include<cstdlib>
الى
#include<stdlib.h>
tvquran_6.gif

#11

عمر العادل : اعتقد المشكلة في المترجمات :S Compilers ،، لكن لم ترد علي الملاحظة :( + ان شاء الله بستعمل من الان الصناديق :)

فهدالشلوي : غيرتهم لكن للأسف فيه اخطاء برضه اعتقد المشاكل مثل ما قلت في الكومبايلز لكن يا اخي فهد الشلوي كودك مش بسيط بالنسبة لى :( انا لسه مبتدئ :) بالذات الفنكشن ما فهمت فيها ولا شئ + البوينترز لسه ما درستها هي الدرس القادم ان شاء الله بالنسبة لى

Just C++ Life :)

#12

هذا كودك الآخير بتعديل بسيط:

  1.  
  2. #include<iostream>
  3. #include<string>
  4. #include<stdlib.h>
  5. #include<time.h>
  6. #include<windows.h>
  7. using namespace std;
  8. void main()
  9. {
  10. srand( time(NULL) );
  11. string txt;
  12. cout << "Enter the txt : " << endl;
  13. getline(cin, txt);
  14. for(int i=0;i<txt.size();i++)
  15. {
  16. cout << txt[i];
  17. Sleep(rand() % 950);
  18. }
  19. cout << endl << "Written By zAx" << endl;
  20. system("pause");
  21. }
  22.  

tvquran_6.gif

#13

اخي تايم1 لم الاحظ تغيير ؟ هل تستطيع وضع لون احمر علي التعديل ؟ + للأسف نفس المشكلة :) لازم اكتب الكلمة مرتين عشان يكتبهالي

Just C++ Life :)

#14
 
#include<iostream>
#include<string>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
using namespace std;
void main(){
srand( time(NULL) );
string txt;
cout << "Enter the txt : " << endl;
getline(cin,txt) /*cin >> txt*/;
for(int i=0;i<=txt.size()/*+2*/;i++){
cout << txt;
Sleep(rand() % 950);
}
cout << endl << "Written By zAx" << endl;
system("pause");
}

تم تعديل هذه المشاركة بواسطة فهدالشلوي في 25 سبتمبر 2008 في 22:38

tvquran_6.gif

#15

لا يوجد في الكود شئ يجعله يتكرر!

فقط بعد كتابه الكلمه أضغط Enter.

tvquran_6.gif

#16

فهووود هذا هو الكود اللى استعمله تقريباً ..

ايوة انا لما اكتب الكلمة ولتكن Fahad اضغط انتر ينزل سطر الى تحت ولا يفعل شئ الا لما اكتب fahad مرة ثانية

Just C++ Life :)

#17
CPP-Programmer كتب:
اخي تايم1 لم الاحظ تغيير ؟ هل تستطيع وضع لون احمر علي التعديل ؟ + للأسف نفس المشكلة :) لازم اكتب الكلمة مرتين عشان يكتبهالي

عفوا اخي ماهي المشكلة التي تواجهها ؟

ضع الكود واطرح المشكلة.

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#18

عندي لا تظهر المشكلة ولا اعرف سببها.

لكن جرب من قائمه Build أعمل Clean ثم F5

tvquran_6.gif

#19

يا شباب البرنامج هذا هو كوده الكـامل :

#include<iostream>
#include<string>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
using namespace std;
void main()
{
srand( time(NULL) );
string txt;
cout << "Enter the txt : " << endl;
getline(cin, txt);
for(int i=0;i<=txt.size();i++)
{
cout << txt;
Sleep(rand() % 950);
}
cout << endl <<  "Written By zAx" << endl;
system("pause");
}

ليست مشكلة ولكن سؤال واستفسار :

الان عند تشغيل البرنامج ظهر لى شئ طبيعي مكتوب Enter the txt : تمام !!؟

المهم كتبت ahmed او اي حاجة ثانية !ثم اضغط Enter

لا يحدث اي شئ ولا يكتب لى اى شئ !! ولا يكتب اي شئ لي تمام ؟؟ فاهمين للأن ؟؟؟

طيب بعدها اضغط علي Enter للمرة الثانية يشتغل البرنامج :D?

هل لازم اضع الاسم ثم 2 انتر ؟؟

بس استفسار

جزاكم الله خيراً يا شباب

Just C++ Life :)

#20

أضف : بعد سطر getline الدالة التاليه

cin.clear();

tvquran_6.gif

#21

هناك طرق كثيرة اخي , جرب هذه

#include<iostream>
#include<string>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
using namespace std;
void main()
{
srand( time(NULL) );
char text[256]="";
cout << "Enter the txt : " << endl;
cin.getline(text,256);
for(int i=0;i<=strlen(text);i++)
{
cout << text;
Sleep(rand() % 950);
}
cout << endl <<  "Written By zAx" << endl;
}
llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#22

شكراً شباب والحمدلله تم تكملة البرنامج

تم شكر : time1 و عمر عادل و فهدالشلوي

Just C++ Life :)

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

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

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

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

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