Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define TAILLE 3
- int magicSquareLines(int **tab2d, int n){
- int i,j,k;
- int res = 0;
- int sommeL = 0;
- int sommeC = 0;
- int sommeD1 = 0;
- int sommeD2 = 0;
- int resLigne = 0;
- int resColonne = 0;
- for ( i = 0; i < n; i++ ) {
- for ( j = 0; j < n; j++) {
- /* Somme des lignes */
- sommeL += tab2d[i][j];
- /* Somme des colonnes */
- sommeC += tab2d[j][i];
- /* Trace de la matrice */
- if (i == j){
- sommeD1 += tab2d[i][i];
- }
- /* Diagonale de (0,n-1) à (n-1, 0) */
- if ( i + j == n - 1){
- sommeD2 += tab2d[i][j];
- }
- }
- /* Ajout du résultat des lignes, res s'incrémente de 0 ou 1 */
- res += resLigne == sommeL;
- resLigne = sommeL;
- sommeL = 0;
- /* Ajout du résultat des colonnes, res s'incrémente de 0 ou 1 */
- res += resColonne == sommeC;
- resColonne = sommeC;
- sommeC = 0;
- }
- /* Ajout du résultat des diagonales, res s'incrémente de 0 ou 2 */
- res += 2 * (sommeD1 == sommeD2);
- /* Il y a en tout n-1 colonnes, n-1 lignes + 2 diago */
- return res == (n - 1) * (n - 1) + 2;
- }
- int main(int argc, char const *argv[]) {
- /* Initialisation de la première dimension du tableau d'int*/
- int **tab = malloc(TAILLE * sizeof(int));
- int i;
- /* Initialisation de la deuxième dimension du tableau d'int*
- c'est int* car la première dimension nous donne des pointeurs d'entiers*/
- for ( i = 0; i < TAILLE; i++) {
- tab[i] = malloc(TAILLE * sizeof( int* ));
- }
- tab[0][0] = 2;
- tab[0][1] = 7;
- tab[0][2] = 6;
- tab[1][0] = 9;
- tab[1][1] = 5;
- tab[1][2] = 1;
- tab[2][0] = 4;
- tab[2][1] = 3;
- tab[2][2] = 8;
- int res = magicSquareLines(tab, TAILLE);
- printf("Ce carré %s magique\n", res == 1 ? "est" : "n'est pas");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement