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

بليز مساااعده

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

سلام

لوسمحتواا

هاي البرنامج ايش المخرجات

وايش يسوي

يعنيWhat does this program do??

#include <iostream>

#include <cstdlib>

bool mystery3( const char *, const char * );

int main()

{

char string1[ 80 ], string2[ 80 ];

cout << "Enter two strings: ";

cin >> string1 >> string2;

cout << "The result is "

<< mystery3( string1, string2 ) << endl;

system("PAUSE");

return 0;

}

bool mystery3( const char *s1, const char *s2 )

{

for ( ; *s1 != '\0' && *s2 != '\0'; s1++, s2++ ){

if ( *s1 != *s2 )

return false;

}

return true;

}

ولوسمحتواا

ايش الخطا في ها البرنامج//

1::

char *s;

cout<<s<<endl;

2::

char s[]="this character array";

for(;*s!='\0\';s++)

cout<<*s<<' ';

#2

البرنامج اﻻول لكى يعمل كان ﻻبد من اضافة كود بسيط لة فى السطر الثالث كما هو موضح ادناة.

ام وظيفة البرنامج تتمثل فى الدالة mystery3 التى ترجع قيمة منطقية 1 اذا كان السلسة النصية الثانية موجودة ضمن اﻻولى

وترجع 0 (صفر) اذا لم توجد السلسة النصية الثانية ضمن اﻻولى.

الكود اﻻول بعد التعديل:

#include <iostream>
#include <cstdlib>

using namespace std; // فقط هذا السطر ينقصة

bool mystery3( const char *, const char * );

int main()
{
    char string1[ 80 ], string2[ 80 ];
    /////////////////////////////////////////////////////////
    // cout << "Enter two strings: ";
    // cin >> string1 >> string2; */
    // changed to

    cout << "Enter strings one: ";
    cin >> string1;

    cout << "Enter strings two: ";
    cin >> string2;

    ///////////////////////////////////////////////////////
    cout << "The result is "
         << mystery3( string1, string2 ) << endl;

    system("PAUSE");
    return 0;
}

bool mystery3( const char *s1, const char *s2 )
{
    for ( ; *s1 != '\0' && *s2 != '\0'; s1++, s2++ )
    {
        if ( *s1 != *s2 )
            return false;
    }

    return true;
}

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#3

الكود :

char *s;
    cout<<s<<endl;

السطر اﻻول:

اذا كنت اعلنت عن s متغير مؤشر من نوع char .

فـــ s يشير الى متغير اخر من نوع char

اى ان s يحتوى على عنوان متغير اخر من نفس نوعة

أين هذا العنوان الذى وضع فية؟

فقط انت اعلنت عن s ولم تعطية عنوان متغير اخر لكى يشير الية.

وفى السطر الثانى انت تخرج قيمة المشار اليها بـــ s . حقيقا انها قيمة ﻻ معنى لها اى انها ممكن ان تكون صفر او اى عنوان اخر .

وبالتالى يمكن تصور الكود الصحيح لة بالشكل التالى

char myname[] = "Mohammed Abu Zayed";
    char *s;
    s = &myname[0]; // or s = myname;
    cout<<s<<endl;

الكود :

 char s[]="this character array";
    for(; *s !='\0\';s++)
            cout<< *s << ' ';

السطر اﻻول ﻻ خطأ فية ولكن

طولة ليس 20 حرفا كما يبدو ولكن 20 باﻻضافة الى حرف نهاية السلسة النصية اى عددها 21

اى ان المترجم داخليا يحول الثابت s الى 21 حرف بدﻻ من 20 حرف.

تذكر ان s ثابت مؤشر const pointer والثابت ﻻيمكن ان يخضع لعملبات الزيادة او النقصان -- او ++ .

السطر الثانى بة الخطأ الكارثى محاولة استخدام المتغير الثابت كمتغير ديناميكى وكما ذكرنا فأن s ثابت وليس متغير

جميل. نحن اﻵن متغير يشير الى الثابت s ويسمح لنا بأستخدام العمليات ++ او -- علية.

بما ان s من نوع char فنحن نحتاج الى متغير مؤشر من نوع char يحمل عنوان s اى يحمل فقط عنوان اول حرف فى المصفوفة s[]

كالتالى

char *ps = s; // or char *ps = &s[0];

واﻻن استبدل s فى باقى الكود بـــ ps حتى تتمكن من اجراء عملية الزيادة ++ علية.

و ﻻتنسى حذف \ من '\0\' السطر الثانى

وايضا تحويل ' ' الى " " فى cout فى السطر اﻻخير

الكود بعد التعديل :

char s[] ="this character array";
    char *ps; // اﻻعلان عن مؤشر متغير
    ps = s; //اضافة عنوان s الى ps
    for(; *ps !='\0'; ps++)
        cout<< *ps << " ";

تذكر ان :

ps يحمل عنوان s

وان ps++ تزيد العنوان بمقدار عدد واحد حرف الى اﻻمام.

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

وان *ps هى قيمة العنوان الموجود فى ps

تحياتى العطرة.

تم تعديل هذه المشاركة بواسطة محمد ابوزايد في 8 ديسمبر 2011 في 19:37

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#4

مشكوووووووور استاااذي محمد ابو زايد

الله يوفقك ويجزاك الف خير

.............

بس لو سمحت اعطني مثال على

الدالة mystery3 التى ترجع قيمة منطقية 1 اذا كان السلسة النصية الثانية موجودة ضمن اﻻولى

وترجع 0 (صفر) اذا لم توجد السلسة النصية الثانية ضمن اﻻولى.

يعني اذاكان السلسله الثانيه نفس السلسله الاولى ترجع قيمه 1 ( الثانيه hello والاولى hello ترجع 1)

واذا كان السلسله الثانيه مختلفه عن السلسله الاولى ترجع قيمه 0 ( الثانيه hello والاولى mohammed ترجع 0)

او لا؟؟؟؟

ومشكوووووووووور

اطيب التحايا

تم تعديل هذه المشاركة بواسطة صعب تكراري في 8 ديسمبر 2011 في 20:36

#5

ضمنها بنسبة 100% ﻻ مشكلة او جزء كــ

i love islam

و

islam

يعطى واحد === 1

وهكذا

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#6

لوسمحتوووووا ايش الخطا في هاي البرامج

معليش اتعبتكم معايا............

بس ماعندي الا الله ثم انتم تساعدوني :wacko:

double *realPtr;

long *integerPtr;

integerPtr = realPtr;

هل الخطا انه لازم تكون كلها المتغيرين من نفس النوع ولازم نضع دي العلامه& في السطر الثالث عشان يعرف انه ياخذ عنوانه.. ونضع متغير مؤشر ومتغير عادي

........................

.double x = 19.34;

double xPrt = &x;

cout << xPrt << endl;

هل الخطأ لازم نضع*

ومعليش ع الازعاااج والاطاله

:ty:

ارق التحاااااااايا لكم

تم تعديل هذه المشاركة بواسطة صعب تكراري في 12 ديسمبر 2011 في 17:17

#7

انا حليت ها البرامج وطلعت الاخطااء بس شوووفو

حلي صح او خطااااااااااا

وابغى اسالكم؟؟؟؟

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

تغير اللون للطباعه

الله يعطيكم الصحه والعافيه

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

تم تعديل هذه المشاركة بواسطة صعب تكراري في 11 ديسمبر 2011 في 21:19

#8

1.

نعم يجب ان يكون كلا المتغيرين من نفس النوع . أو نقوم بعمل تحويل لنوع المتغير

غير مطلوب ان نضع & قبل المتغير اذا كان كلا المتغيرين من نفس النوع كما فى حالتك.

double *realPtr;
    double *integerPtr;
    integerPtr = realPtr;

تحذير: متغيرات المؤشرات تم اعلانها ولكن لم يتم وضع قيم(عنوان) بها . وبالتالى فأنها تحتوى على قيمة null او حسبما يقرر المتغير.

وحتى يكون الكود كامل يمكن :

double *realPtr;
    double *integerPtr;
    double dd = 10, yy = 33;
    realPtr = &dd;
    integerPtr = &yy;
    integerPtr = realPtr;

2.

نضغ النجمة فى السطر الثالث حتى نخبر cout اننا نريد طباعة القيمة التى يشير لها xPtr وليس قيمة xptr وهى(عنوان القيمة المشار اليها)

double x = 19.34;
double xPrt = &x;
cout << *xPrt << endl;

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#9
وابغى اسالكم؟؟؟؟
هل يمكن تغيير اللون عند كتابه البرنامج في السي بلص بلص غير اللون الاسود الموجود في البرنامج او لا..
تغير اللون للطباعه
الله يعطيكم الصحه والعافيه
وجزاكم الله خير

  cout << "\033[1;31mbold red text\033[0m\n"; // نص احمر

وكود آخر

#include <iostream>
#include <conio>
using namespace std;
int main(void)
{
   int i, j;

   clrscr();
   for (i=0; i<9; i++)
   {
	   for (j=0; j<80; j++)
		  cprintf("C");
	   cprintf("\r\n");
	   textcolor(i+1);
	   textbackground(i);
   }

تم تعديل هذه المشاركة بواسطة محمد ابوزايد في 12 ديسمبر 2011 في 12:51

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#10

بالنسبة للكود الثالث وهو اﻻهم ونحن نريد فية استخدام المتغير المؤشر العام void فى الحصول على قيمة متغير عادى

أو من مؤشر عادى يشير فى اﻻصل الى متغير عادى.

#include <iostream>
using namespace std;
int main(void)
{
    short num = 100; // متغير عادى
    short result; // متغير عادى
    short *pnum = &num; // متغير مؤشر وبه عنوان num
    void *genericptr = pnum ; // اﻵن القيمة من مؤشر الى مؤشر ﻻ تستلزم &
    result = *static_cast<short*>(genericptr) ;
    // اﻵن يجب ان يكون المؤشر العام من نفس نوع المتغير المراد الحاق القيمة بة
    cout << result << endl;
}

طبعا شرح الكود يتطلب كتابة اكثر

للمزيد يمكنك زيارة الموقــــــــــــــــــــــــــــع

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#11

مشكوووووووووووووووووووووور الف الف شكر استاذي محمد ابو زايد

والله يعطيك الصحه والعافيه

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

تحياااتي.......

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

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