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

تحدي بسيط ...

بدأه yacinebrca في 26 أغسطس 2014 · 7 رد · 1,036 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

:) السلام عليكم :)

 

المطلوب ... :(

 

طباعة مصفوفة(ثنائية البعد) لكن بشرطين :

 

استعمال حلقة تكرارية واحدة فقط ... ^_^

وكذلك استعمال مؤشر "عداد" واااحد فقط <_< ..

 

اليكم هذا الكود ولكم الحق في الاضافة عليه دون المساس بالشرطين .

int main()
{
    int i=0;
    int x[2][4] = {i+7,i+6,i+5,i+4,i+3,i+2,i+1,i};

    for(? ; ? ; ?)
    {
      printf(" %d ",??);
      ?????  // ligne;
    }


    return 0;
}

المخرجات تكون على الشكل التالي

    7     6    5     4    3     2    1     0

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

تم تعديل هذه المشاركة بواسطة yacinebrca في 26 أغسطس 2014 في 04:32

2

elearning_image.jpg

#2

ذكرتني بالماتلاب

 

بالمناسبة الماتلاب أفضل لغة في معالجة المصفوفات

 

هذا هو الحل

#include <stdio.h>
int main()
{
    int i=0;
    int x[2][4] = {i+7,i+6,i+5,i+4,i+3,i+2,i+1,i};

    for(int j=0 ; j<8 ; j++)
    {
      printf(" %d ",x[(j/4)][(j%4)]);
      if (j%2==1)
	  printf("\n");
    }
}
#3

أولا أسالك هل نفذت الكود حقا  :excl: :excl: ... لأان الكود يحوي برمته شيء من السي ++ " في الحلقة التكرارية"

/ c++
for(int j=0 ; j<8 ; j++){...}

// c
int j;
for( j=0 ; j<8 ; j++){...}

لكن  حلك صحيح ... شكرا لك .. :D

 

مع أنني كنت انتظر حل آحر .. ^_^

ات طلبت "عداد" واحد فقط من أجل الخلاص من

هذا السطر ... :D :D

x[?][?] !!!!!!

بارك الله فيك ...

 

 

انتظر مشاركات أخرى ... :blush:

elearning_image.jpg

#4
اقتباس

 

أولا أسالك هل نفذت الكود حقا  :excl: :excl:

 

أجل جربته و هو يعمل

#5

أرى  أن اريك الصورة أحسن  ....

 

t12PXW.png

elearning_image.jpg

#6

كنت أنتظر حلول أخرى باستعمال المؤشرات

 

سأضع محاولتي ...

 

شكرا لكم .. :)

#include <stdio.h>

#define ligne printf("\n");

int main()
{
    int i=0;
    int x[2][4] = {i+7,i+6,i+5,i+4,i+3,i+2,i+1,i};
    int *ptr = &x;

    for(; i<8 ;){

       printf(" %d ",*(ptr+i++));
      ((i+1)%2==0)?
                  :ligne;
    }

    return 0;
}

 ومن لم يرد اضافة  مؤشر . ..

فهناك حل آخر ...   ;)

int i=0;
    int x[2][4] = {i+7,i+6,i+5,i+4,i+3,i+2,i+1,i};
   
    for(; i<8 ;)
    {
       printf(" %d ",*(x[0]+i++) );
      ((i+1)%2==0)?:ligne;
    }
1

elearning_image.jpg

#7

أضف std=gnu11 إلى الكومباير لكي يعمل معك الكود، إن كنت تستخدم الويندوز فمن الأفضل أن تستخدم visual studio

#8

لماذا visual يبقى افضل من code blocks على الوينذوز..

وبارك الله فيك ..

elearning_image.jpg

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