Lily lovely
2018-08-25, 21:38
السلام عليكم
3andi mochkil fi tarjamat lkhawarizmiyat b dev c++ t3icho 3awnoni f tarjamat had programme
structure coord
entier crd1 ;
entier crd2 ;
fin structure ;
entier cote,i,j,ind ;
entier tab[9][9];
{fonctions et procédures utilisées}
{prédicat de test de parité d’un entier}
fonction booléen paire(entier n) ;
booléen result ;
si n modulo 2=0
alors result ¬ true ;
sinon result ¬ false;
fin si;
fin fonction paire ;
{procédure de changement de ligne avec traçage du tableau}
procédure N_L(entier cote) ;
entier x ;
nouvelle_ligne( );
pour x :1 à cote
écrire(²___²) ;
fin pour ;
nouvelle_ligne( ) ;
écrire(²|²) ;
fin procédure N_L ;
{fonction qui transforme les anciennes coordonnées d’un nombre du tableau en nouvelles}
fonction coord place(entier tab[9][9], coord a_coord) ;
coord n_coord ;
si a_coord.crd1 < cote
alors n_coord.crd1 ¬ a_coord.crd1 + 1 ;
sinon n_coord.crd1 ¬ 1 ;
fin si ;
si a_coord.crd2 < cote
alors n_coord.crd2 ¬ a_coord.crd2 + 1 ;
sinon n_coord.crd2 ¬ 1 ;
fin si ;
tant que tab[n_coord.crd1][n_coord.crd2] <> 0 faire
n_coord.crd1 ¬ a_coord.crd1 ;
n_coord.crd2 ¬ a_coord.crd2 + 2;
si n_coord.crd2 = cote +1
alors n_coord.crd.2 ¬ 1;
sinon si n_coord.crd2 = cote + 2
alors n_coord.crd2 ¬ 2
fin si ;
fin si ;
fin tant que ;
fin fonction place ;
{programme principal}
Début Programme principal
coord _coord ;
écrire(²Donner une valeur impaire du côté du carré magique (maximum 9) ²) ;
lire(²cote²) ;
si cote > 9 ou paire(cote) ou cote < 0
alors écrire(²Valeur incorrecte ²) ;
sinon
si cote = 1
alors écrire (²_²) ;
nouvelle_ligne( ) ;
écrire(²|1|²) ;
nouvelle_ligne( ) ;
écrire(²_²) ;
sinon
{traitement}
{initialisation du tableau}
pour j :1 à cote faire
pour i :1 à cote faire
tab[i][j] ¬0 ;
fin pour
fin pour
i ¬cote/2 + 1 ; {place le 1 au milieu horizontalement}
j ¬cote/2 + 2 ; {place le 1 sous le milieu verticalement}
{placement des termes suivants}
ind ¬ 1 ;
faire
tab[i][j] ¬ ind ;
_coord.crd1 ¬ i;
_coord.crd2 ¬ j;
i ¬ place(tab, _coord).crd1;
j ¬ place(tab, _coord).crd2;
ind ¬ ind + 1;
tant que ind <> cote * cote;
{affichage}
pour j :1 à cote faire
N_L(cote) ;
pour i :1 à cote faire
si tab[i][j]<9
alors écrire(² ²) ; {espace pour l’alignement du tableau}
fin si
écrire(tab[i][j]) ;
écrire(²|²) ;
fin pour
fin pour
fin si
fin si
Fin Programme principal
3andi mochkil fi tarjamat lkhawarizmiyat b dev c++ t3icho 3awnoni f tarjamat had programme
structure coord
entier crd1 ;
entier crd2 ;
fin structure ;
entier cote,i,j,ind ;
entier tab[9][9];
{fonctions et procédures utilisées}
{prédicat de test de parité d’un entier}
fonction booléen paire(entier n) ;
booléen result ;
si n modulo 2=0
alors result ¬ true ;
sinon result ¬ false;
fin si;
fin fonction paire ;
{procédure de changement de ligne avec traçage du tableau}
procédure N_L(entier cote) ;
entier x ;
nouvelle_ligne( );
pour x :1 à cote
écrire(²___²) ;
fin pour ;
nouvelle_ligne( ) ;
écrire(²|²) ;
fin procédure N_L ;
{fonction qui transforme les anciennes coordonnées d’un nombre du tableau en nouvelles}
fonction coord place(entier tab[9][9], coord a_coord) ;
coord n_coord ;
si a_coord.crd1 < cote
alors n_coord.crd1 ¬ a_coord.crd1 + 1 ;
sinon n_coord.crd1 ¬ 1 ;
fin si ;
si a_coord.crd2 < cote
alors n_coord.crd2 ¬ a_coord.crd2 + 1 ;
sinon n_coord.crd2 ¬ 1 ;
fin si ;
tant que tab[n_coord.crd1][n_coord.crd2] <> 0 faire
n_coord.crd1 ¬ a_coord.crd1 ;
n_coord.crd2 ¬ a_coord.crd2 + 2;
si n_coord.crd2 = cote +1
alors n_coord.crd.2 ¬ 1;
sinon si n_coord.crd2 = cote + 2
alors n_coord.crd2 ¬ 2
fin si ;
fin si ;
fin tant que ;
fin fonction place ;
{programme principal}
Début Programme principal
coord _coord ;
écrire(²Donner une valeur impaire du côté du carré magique (maximum 9) ²) ;
lire(²cote²) ;
si cote > 9 ou paire(cote) ou cote < 0
alors écrire(²Valeur incorrecte ²) ;
sinon
si cote = 1
alors écrire (²_²) ;
nouvelle_ligne( ) ;
écrire(²|1|²) ;
nouvelle_ligne( ) ;
écrire(²_²) ;
sinon
{traitement}
{initialisation du tableau}
pour j :1 à cote faire
pour i :1 à cote faire
tab[i][j] ¬0 ;
fin pour
fin pour
i ¬cote/2 + 1 ; {place le 1 au milieu horizontalement}
j ¬cote/2 + 2 ; {place le 1 sous le milieu verticalement}
{placement des termes suivants}
ind ¬ 1 ;
faire
tab[i][j] ¬ ind ;
_coord.crd1 ¬ i;
_coord.crd2 ¬ j;
i ¬ place(tab, _coord).crd1;
j ¬ place(tab, _coord).crd2;
ind ¬ ind + 1;
tant que ind <> cote * cote;
{affichage}
pour j :1 à cote faire
N_L(cote) ;
pour i :1 à cote faire
si tab[i][j]<9
alors écrire(² ²) ; {espace pour l’alignement du tableau}
fin si
écrire(tab[i][j]) ;
écrire(²|²) ;
fin pour
fin pour
fin si
fin si
Fin Programme principal