إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

سؤال عن كتابة كود؟

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • سؤال عن كتابة كود؟

    سلام عليكم
    أنا مبتدأ جدا في تعلم لغات البرمجة بشكل عام وحاليا بدأت في تعلم لغة C والله يعين ، وصادفت في الكتاب سؤال يطلب مني تصميم برنامج ، مهمة هذا البرنامج أنه يطلب الحرف الأول من الإسم وكذلك يطلب الحرف الآخر من الإسم ، ثم يقوم بعرضها ، وقد اجتهدت ، وهذا هو
    كود PHP:
    #include<stdio.h>

    main ()
    {
        
    char let1let2;

        
    printf("Enter letter first name: ");
        
    scanf("%c", &let1);

        
    printf("Enter letter last name: ");
        
    scanf("%c\n", &let2);

        
    printf("Your first name is: %c\n"let1);
        
    printf("Your last name is: %c\n"let2);

    وهو بالفعل يطلب منك إدخال الحرف الأول والأخير من اسمك ، ويقوم بعرض الحرف الأول من اسمك ولكن المشكلة أنه لايعرض الحرف الأخير من اسمك ، أرجوا إفادتي ، والتعديل علي .
    عندي سؤال ثاني ، من المعروف أنه لو كان هناك ملف باللغة C فالترجمته يكتب
    gcc -o code code.c
    سؤالي لو كان الملف من نوع C++ فكيف يتم ترجمته ؟
    وشاكرا لكم .
    التعديل الأخير تم بواسطة jalal_haj; الساعة 22-10-2007, 10:49 PM.

  • #2
    كود:
    #include <stdio.h>
    
    int main(void){
        
        char first, last;
        
        printf("Enter the first char : ");
        scanf("%c", &first);
        
        fflush(stdin);
        printf("\nEnter the last char : ");
        scanf("%c", &last);
        
        printf("\nThe first char -> [%c] ", first);
        printf("\nThe last  char -> [%c] ", last );
        
        return 0;
    }
    بخصوص ال g++ فالإستخدام بنفس الطريقة
    g++ file.cpp -o file
    Programming-Fr34ks[dot]NET
    Ma Weblog
    ابدأ بتعلم Python | Ruby
    كتاب البايثون متوافر الآن
    لا اتواجد بهذا المنتدى ... للإتصال

    تعليق


    • #3
      مشكووووووور جدا أخي StrikerX واعذرني لأني جدا مقفل في الموضوع ، عند ترجمتي للبرنامج المعدل ، يعني بعد أن أقوم بتنفيذ
      gcc -o prog prog.c
      تظهر لي الرسالة التالية
      prog.c:18:2: warning: no newline at ent of file
      وحين أقوم بتنفذ الأمر
      ./prog
      يطلب مني إدخال الحرف الأول ، ولكن عندما أدخله ، فإنه لايطلب مني إدخال الحرف الأخير ، فقط يتم إظهار الرمز الأول ويقفل البرنامج أرجوا المساعدة وشكرا .

      تعليق


      • #4
        العفو .. بخصوص ال Warning
        لازم يكون فى عندك سطر فاضى فى آخر البرنامج -عادة- يعنى مش لازم تقفل الكود على ال { سيب سطر فاضى من بعدها

        ممممم انا نسيت ان مش fflush فى linux مش مشكلة فى حل تانى بعد سيرش سريع انك تستخدم function تقرا سطر فاضى بإستخدام fgets
        كود:
        #include<stdio.h>
        
        void clear_kb(void);
        
        int main()
        { 
            char first;
            char last;
            
            printf("Enter the first char : ");
            scanf("%c", &first);
        
            clear_kb();
            printf("\n");
            printf("Enter the last char : ");
            scanf("%c", &last);
            
            
            printf("First char -> [%c]", first);
            printf("\nLast char -> [%c]", last);
        
            
            return 0;
        }
        
        void clear_kb(void){
            
            char junk[255];
            fgets(junk, 255, stdin);
          
        }
        Programming-Fr34ks[dot]NET
        Ma Weblog
        ابدأ بتعلم Python | Ruby
        كتاب البايثون متوافر الآن
        لا اتواجد بهذا المنتدى ... للإتصال

        تعليق


        • #5
          سترايكر اسف علي التعديل ,,, بس في نقطه لازم اوضحها
          كود PHP:
            fflush(stdin); 
          اول حاجه موجوده في اللينكس وبتسخدم عادي
          خطر +خطا وده الي سبب خلل في البرنامج بتاعك
          خلينا نفهم معني fflush ألاول
          flush يعني ببساطه ادفع كل ال buffers المصاحبه لل stream بداخل ال stream
          في حالة stdout , stderr الي بيحصل ان ال buffer بيدفع بداخل الستريم لاظهاره
          تخيل في حالة stdin يعني ال buffer حالته out مش in ايه الي حيحصل ؟ بالظبت حيدخل جوه ال stream وممكن تفقد بيانات تانيه مستخدمه في نفس الوقت
          مش كلامي ده كلام standard
          The function fflush() forces a write of all buffered data for the given
          output or update stream via the stream's underlying write function
          الحل ؟؟ getchar() بدل fflush(stdin) الخطا وخلص نفسك حتاخد حرف ال enter الي دخل في النصف .
          مثلا
          كود PHP:
             printf("Enter the first char : ");
              
          scanf("%c", &first);
          getchar(); 
          او استخدم احد ال unbuffered functions الي مش بتحتاج تتك enter مثلا getch او getche
          تحياتي
          BOOOF , I AM GONE
          Still , you gotta wait for my PRESENT :D
          C programming arabic Tutorial|Programming-fr34ks

          تعليق


          • #6
            جميل ياستورم انا عن نفسى الكود الأول اشتغل معايا على MinGW .. وبعدين فى سيرش لقيت إن كل كمبيلر قد يكون ليه Non-portable way فى ال flushing فلما حصلت مشكلة معاه شوفتله حل تانى وهو ال clear_kb او ال while loop ومش عارف وقعت منى إزاى ال getchar() lol

            على كل سورى على اللبس ومشكور ياحبى
            Programming-Fr34ks[dot]NET
            Ma Weblog
            ابدأ بتعلم Python | Ruby
            كتاب البايثون متوافر الآن
            لا اتواجد بهذا المنتدى ... للإتصال

            تعليق


            • #7
              مش حلوه اللبس ديت
              BOOOF , I AM GONE
              Still , you gotta wait for my PRESENT :D
              C programming arabic Tutorial|Programming-fr34ks

              تعليق


              • #8
                مشكوووورين ستروم واسترايكرس البرنامج عمل بشكل جيد ولكن عند تنفيذ الترجمة يظهر نفس السطر التالي
                prog.c:31:2: warning: no newline at ent of file
                ومشكوورين

                تعليق


                • #9
                  [QUOTE=pasem_haj;47601عند تنفيذ الترجمة يظهر نفس السطر التالي
                  prog.c:31:2: warning: no newline at ent of file
                  ومشكوورين[/QUOTE]

                  take it easy it's not an issue
                  BOOOF , I AM GONE
                  Still , you gotta wait for my PRESENT :D
                  C programming arabic Tutorial|Programming-fr34ks

                  تعليق


                  • #10
                    الشكر للجميع ، ومع الإستفادة من الأستاذين ستروم واسترايكرس ، فإن البرنامج الذي يعمل مع عدم إظهار الرسالة التي يظهرها في السابق وهي الرسالة التالية
                    file.c:31:2; warning: no newline at end of file
                    والبرنامج هو التالي:
                    كود PHP:
                    #include <stdio.h>

                    int main(void)
                    {
                        
                    char firstlast;
                        
                        
                    printf("Enter the first char : ");
                        
                    scanf("%c", &first);
                        
                        
                    getchar();
                        
                    printf("\nEnter the last char : ");
                        
                    scanf("%c", &last);
                        
                        
                    printf("\nThe first char -> [%c] "first);
                        
                    printf("\nThe last  char -> [%c]\n"last);
                        
                        return 
                    0;

                    والحمد لله .

                    تعليق


                    • #11
                      سؤال عن كود آخر

                      المعذرة مرة أخرى عندي هنا سؤال ثاني ، صاحب الكتاب (والكتاب هو كتاب لغة C الشامل الإصدار الثاني لمؤلفه خليل أونيس) ذكر مثال لاستعمال المؤثرات ، ومنها ## معاً ، وذكر لذلك مثال ولكنه لم يعمل والسبب ربما أنا أو هو لذا أضعه هنا راجيا التعليق هل هو صحيح أم لا ، والمعذرة على هكذا أسئلة ، ولكن هذا هو مستواي ، والكود هاهو:
                      كود PHP:
                      #include<stdio.h>

                      #define MergingName (str, strplus) str##strplus

                      main()
                      {
                          
                      char MergingName(ch1) = 'H';
                          
                      char MergingName(ch2) = 'e';
                          
                      char MergingName(ch3) = 'l';
                          
                      char MergingName(ch4) = 'l';
                          
                      char MergingName(ch5) = 'o';

                          
                      printf("%c%c%c%c%c\n"ch1ch2ch3ch4ch5);

                      وماهو عمل هذا المؤثر # ، وشكرا .

                      تعليق


                      • #12
                        صراحة انا مش فاهم معنى كلمة مؤثر لكن واضح إنك بتسأل على ال ## صح كدا ؟
                        بإختصار الكلام كله عن Operator إسمه Token Concatenation او Token Pasting

                        والكود شغال معايا تمام بس سيبنا نشرحه
                        كود:
                        #include<stdio.h>
                        
                        #define MergingName(str, val) str##val
                        int main(void)
                        {
                            char MergingName(ch, 1) = 'H';
                            char MergingName(ch, 2) = 'e';
                            char MergingName(ch, 3) = 'l';
                            char MergingName(ch, 4) = 'l';
                            char MergingName(ch, 5) = 'o';
                        
                            printf("%c%c%c%c%c\n", ch1, ch2, ch3, ch4, ch5);
                            
                            return 0;   
                        }
                        اول سطر مثلا
                        كود:
                        char MergingName(ch, 1) = 'H';
                        بيعمل إيه ؟ بيعملdelcare ل char بإسم ch1
                        نفس الشئ فى السطر اللى بعده بيعمل declare ل char تانى بإسم ch2
                        etc

                        اللى يفهمك الليلة دى كلها هو ال macro دا
                        كود:
                        #define MergingName(str, val) str##val
                        ال macro دا بيعمل إيه ؟
                        بتدخل ليه str وهنا مثلا ال ch
                        val عشان تعبر عن الترتيب 1 , 2 , .. etc
                        والريترن بتاعه يكون ال str + val يعنى اول سطر دا كأنك كتبت
                        كود:
                        char ch1='H';
                        وبس كدا
                        Programming-Fr34ks[dot]NET
                        Ma Weblog
                        ابدأ بتعلم Python | Ruby
                        كتاب البايثون متوافر الآن
                        لا اتواجد بهذا المنتدى ... للإتصال

                        تعليق

                        يعمل...
                        X