1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
#include <stdio.h>
typedef struct coordonnee {
int x;
int y;
}Coordonnee;
Coordonnee rechercherX (int x, int taille, int tab[][taille], int lig_deb, int col_deb, int lig_fin, int col_fin){
int m;
Coordonnee position;
if ((taille==1)&&(tab[lig_deb][col_deb]!=x)){
position.x=-1;
position.y=-1;
return position;
}
if ((taille==1)&&(tab[lig_deb][col_deb]==x)){
position.x=lig_deb;
position.y=col_deb;
return position;
}
if ((taille%2)==0){
m=(taille-1)/2;
if ((tab[lig_deb][col_deb]<=x)&&(x<=tab[lig_deb+m][col_deb+m])){
rechercherX (x, taille/2, tab, lig_deb, col_deb, lig_deb+m, col_deb+m);
}
if ((tab[lig_deb][col_deb+m+1]<=x)&&(x<=tab[lig_deb+m][col_deb+col_fin])){
rechercherX (x, taille/2, tab, lig_deb, col_deb+m+1, lig_deb+m, col_deb+col_fin);
}
if ((tab[lig_deb+m+1][col_deb]<=x)&&(x<=tab[lig_fin][col_deb+m])){
rechercherX (x, taille/2, tab, lig_deb+m, col_deb, lig_fin, col_deb+m);
}
if ((tab[lig_deb+m+1][col_deb+m+1]<=x)&&(x<=tab[lig_fin][col_fin])){
rechercherX (x, taille/2, tab, lig_deb+m+1, col_deb+m+1, lig_fin, col_fin);
}
}
}
int main(){
int T[4][4]={{10,12,16,18},
{11,16,40,46},
{22,57,59,60},
{40,80,82,85}};
Coordonnee p=rechercherX (60, 4, T, 0, 0, 3, 3);
printf ("La position de 60 (qui est (2,3)) est : (%d, %d).\n", p.x, p.y);
system("PAUSE");
return 0;
} |
Partager