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

اختبر قدرتك ( في المصفوفات ) ...

بدأه yacinebrca في 27 مارس 2014 · 4 رد · 716 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

 السلام عليكم  أعضاء و زاور هذا المنتدى ...

 

 

تمرين  (  حول المصفوفات  ...  )

 

يقوم المستخدم بملأ مصفوفات مربعة الشكل .

 

المصفوفات تحوي على العدد 1 و 0 فقط  ... لو أدخل المستخدم قيم ماعدا 1 و 0 تطلب منه اعادة الادخال  ... وهذا شيئ بسيط ...

 

ثم تقوم بتتبع الخانات التي تحوي على الرقم  (1)  ثم تنظر عن يمين وشمال هذه الخانة وفي الأعلى والأسفل وبين الجانبين ..

 

كما في الصورة ....

 

 

340640501.png

 

 

 

نريد ان نقوم بطباعة كل الخانات التي تحوي على الرقم (1) لكن اذا حققت هذا الشرط :

 

يجب ان يكون حولها 4 خانات تحوي على الرقم  (1) 

 

قلت 4 خانة لا أقل من ذلك ولا أكثر ....

 

 

 

سأعرض بعض الأمثلة لتقريب الصورة أكثر  ...

 

817460436.png

 

 

 أمثلة عن التمرين للتوضيح .......

 

 

226379978.png

 

 

اتمنى من الاخوة ان يكون الحل بلغة السي .....

 

 

 

السلام عليكم

 

دمتم في رعاية الله وحفظه ....

تم تعديل هذه المشاركة بواسطة yacinebrca في 27 مارس 2014 في 21:00

1

elearning_image.jpg

#2

سؤال جميل بارك الله فيك

قمت بعمل بعض التلوينات في الكود ليبدو أفضل (يعمل على ويندوز فقط )

#include <stdio.h>#include <stdlib.h>#include <windows.h>int main(){    int a,b;//dinmensions    int i,j;//loops variables    int **M;//The matrix    printf("Enter the matrix dimensions a*b (example 5*4 or 3*2)");    scanf("%d*%d",&a,&b);    a+=2;b+=2;//a small trick    printf("Enter the Matrix! (only 1s and 0s)\n");    M=(int**)malloc(sizeof(int*)*a);//memory allocations    for(i=0;i<a;i++){            M=(int*)malloc(sizeof(int)*b);//memory allocations            if(i!=0&&i!=a-1)                printf("Enter the Line %d\n",i);            for(j=0;j<b;j++){                if(i==0||i==a-1||j==0||j==b-1){                    M[j]=0;                }                else{                    printf("Enter the Column %d\n",j);                    scanf("%d",&M[j]);                    while(!(M[j]==0||M[j]==1)){                        printf("reenter the Column %d\n",j+1);                        scanf("%d",&M[j]);                    }                }            }    }    printf("-------The Matrix-------\n");    for(i=1;i<a-1;i++){            printf("         ");            for(j=1;j<b-1;j++){                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0xf0);                if(M[j])                    if(M[i+1][j-1]+M[i+1][j]+M[i+1][j+1]+M[j-1]+M[j+1]+M[i-1][j-1]+M[i-1][j]+M[i-1][j+1]==4)                            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0xE0);                printf("%d ",M[j]);            }            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x0f);    putchar(10);    }    puts("----------------");    return 0;}

أولاً قم بإدخال أبعاد المصفوفة مثلاً 3*3

ثانياً : أدخل الأسطر واحداً واحداً (بدون أخطاء ) أو أدخل كل عنصر على حدة إن كنت تريد أن تخطئ عمداً ..

مثال :

1 1 1

1 0 1

0 1 0

وستتم طباعة العناصر ملونة (الأصفر يدل على العنصر الذي يحقق الشرط والباقي باللون الأبيض )

 

والله ولي التوفيق

#3

..... :excl: :excl:  البرنامج لا يشتغل  .......


 


 


 


 


:D :D :D 


 


أنا امزح معك فقط  ...


 


حل موفق وجميل ..ماشاء الله


 


بارك الله فيك على المشاركة ...... ;)


elearning_image.jpg

#4

 ملاحظة  المصفوفة تكون مربعة الشكل ( عدد الاسطر يساوي عدد الأعمدة) ...

elearning_image.jpg

#5

سأضع حل ثاني بعد الحل الذي قدمه الأخ مصطفى  ....


 


انتظرت محاولات  لكن .....


#include <stdio.h>

#include <stdlib.h>

#define T 100

int main(int argc, char *argv[])

{

  int x[T][T];

  int i,j,t=0,M;



  printf("\n\n");


  do{  printf(" Donner lr nombre de linge : ");

       scanf("%d",&M);

       }while(M<0 || M>T);


  for(i=0;i<M;i++){

                      printf(" \n  Linge : %d  \n\n",i+1);

                      for(j=0;j<M;j++)


                          do

                            {

                                  printf(" x[%d][%d] = ",i,j);

                                  scanf("%d",&x[j]);            


                           }while(x[j]!=0 && x[j]!=1);	                 

                  }


  printf("\n\n\n\n");


  for(i=0;i<M;i++){

                    for(j=0;j<M;j++)                    

                                 printf("           %d\t",x[j]);

                    printf("\n");

                 }


  printf("\n\n\n\n");


  for(i=0;i<M;i++){

                    for(j=0;j<M;j++)

                         {

                              if(x[j]==1)  

                                  {                                                                                                                       

                                         if(x[j]==x[j+1] && j!=(M-1)    )t++;


                                         if(x[j]==x[j-1] && j!= 0    )t++;  


                                         if(x[j]==x[i+1][j-1]&& (j!=0 && i!=(M-1)) )t++;                                


                                         if(x[j]== x[i+1][j+1]&& ( i!=(M-1) && j!=M-1))t++;


                                         if(x[j]== x[i+1][j] && i!=(M-1)    )t++;                                                                   


                                         if(x[j]==x[i-1][j-1]&& (  i!=0  && j!=0 )  )t++;                                


                                         if(x[j]== x[i-1][j+1]&&( i!=0 && j!=(M-1)))t++;


                                         if(x[j]== x[i-1][j] && i!=0  )t++;   

                                  }                                                                                                                                                                                                    

                     if(t==4)

                            printf ("x[%d][%d] = %d \n",i,j,t); 

                            t=0;                                    

                      }

              }                                                                    

  system("PAUSE");	

  return 0;

}

elearning_image.jpg

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