Comment faire ce programme en C? Partie 3.2-3.9

Existe-t-il plusieurs conditions, comme dans plusieurs instructions if if nécessaires pour que les rectangles d’intersection soient correctement imprimés?

Étape 3: Deux rectangles se croisent s’ils ont une aire commune Deux rectangles ne se chevauchent pas s’ils touchent simplement (le bord commun ou le coin commun

Deux rectangles se croisent (comme spécifié ci-dessus) si, et seulement si,

i) max (xmin1, xmin2) <min (xmax1, xmax2) et

ii) max (ymin1, ymin2) <min (ymax1, ymax2)

Votre sortie doit être formatée. Comme indiqué ci-dessous, un rectangle est représenté par ses coordonnées en bas à gauche (xmin, ymin) et en haut à droite (xmax, ymax). Où les coordonnées sont des coordonnées dans un plan cartésien.

Exemple de sortie:

enter two rectangles: 1 1 4 4 2 2 5 5 rectangle 1: (1,1)(4,4) rectangle 2: (2,2)(5,5) intersection rectangle: (2,2)(4,4) 

et

 enter two rectangles: 1 1 4 4 5 5 10 10 rectangle 1: (1,1)(4,4) rectangle 2: (5,5)(10,10) these two rectangles do not intersect 

Code:

 #include  #include  int readRect (int *w, int *x, int *y, int *z){ return scanf("%d%d%d%d",w,x,y,z); } int minInt(int x1, int x2){ return x1, x2; } int maxInt(int y1, int y2){ return y1, y2; } int main (void){ int a,b,c,d,e,f,g,h; printf(">>enter two rectangles:\n"); readRect(&a,&b,&c,&d); readRect(&e,&f,&g,&h); printf("rectangle 1:(%d,%d)(%d,%d)\n",a,b,c,d); printf("rectangle 2:(%d,%d)(%d,%d)\n",e,f,g,h); if(maxInt(a,e) < minInt(c,g) && maxInt(b,f) < minInt(d,g)){ printf("intersection rectangle: (%d,%d)(%d,%d)\n",?,?,?,?); } else { printf("these rectangles do not intersect\n"); } return EXIT_SUCCESS; } 

Votre fonction pour max et min est fausse.
1. vous ne comparez pas le paramètre passé à l’intérieur de ces fonctions pour un maximum / minimum de deux.
2. Vous ne pouvez pas renvoyer deux valeurs d’une fonction.

Tu devrais faire comme ça;

 int minInt(int x1, int x2){ if(x1 < x2) return x1; else return x2; } int maxInt(int x1, int x2){ if(x1 > x2) return x1; else return x2; } 

Et changez votre printf imprimant le rectangle d’intersection en

 printf("intersection rectangle: (%d,%d)(%d,%d)\n", maxInt(a,e), maxInt(b,f), minInt(c,g), minInt(d,h) ); 

étape 1 – Le coupable est “\ n” dans scanf. Si vous supprimez le résultat, faites-le moi savoir si vous avez besoin d’une aide spécifique à l’étape 2 ou 3.

Première chose:

 return scanf("%d%d%d%d\n",w,x,y,z); 

devrait être

 return scanf("%d %d %d %d",w,x,y,z); 

Ensuite, vous pouvez entrer votre liste de numéros sous forme de liste, et les numériser correctement.

Les autres parties de votre question, vous devrez essayer de vous résoudre, de rendre votre problème plus spécifique, et soulever de nouvelles questions.