begin process at 2012 05 30 19:39:31
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

Maths & Algorithmes

 > Caree magique en C

Caree magique en C


 Information sur le tutoriel

Note :
Aucune note

 Description

En mathématiques, un carré magique d'ordre n est composé de n2 nombres entiers généralement distincts, écrits sous la forme d'un tableau carré. Ces nombres sont disposés de manière à ce que leurs sommes sur chaque rangée, sur chaque colonne et sur chaque diagonale principale soient égales.

Tutorial


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define N  100

int     a[N][N];
int     n;

void Init (int n)
{
    int i, j;

    for (i = 0 ; i < n; ++i)
        for (j = 0; j < n; ++j)
            a[i][j] = 0;
}

void Magique (int n)
{
    int i, j, k;

    i = n - 1; j = n / 2;
    for (k = 1; k <=  n * n; ++k) {
        a[i][j] = k;
        if ((k % n) == 0)
            i = i - 1;
        else {
            i = (i + 1) % n;
            j = (j + 1) % n;
        }
    }
}

void Erreur (char s[])
{
    printf ("Erreur fatale: %s\n", s);
    exit (1);
}

void Lire (int *n)
{
    printf ("Taille du carre' magique, svp?::  ");
    scanf ("%d", n);
    if ((*n <= 0) || (*n > N) || (*n % 2 == 0))
        Erreur ("Taille impossible.");
}

void Imprimer (int n)
{
    int i, j;

    for (i = 0; i < n; ++i) {
        for (j = 0; j < n; ++j)
            printf ("%4d ", a[i][j]);
        printf ("\n");
    }
getch();
}

int main ()
{
    clrscr();
    Lire(&n);
    Init(n);       /* - */
    Magique(n);
    Imprimer(n);
    return 0;

}

Commentaires

Commentaire de jphache71 le 17/04/2011 10:08:21

bravo

Commentaire de zertyx le 19/04/2011 12:28:22

merci ^_^

Commentaire de nzoudy le 22/04/2011 00:08:50

Félicitations jeune homme
quel Nyack

Commentaire de pgl10 le 15/05/2011 10:24:17

C'est très bien. On peut aussi mettre les nombres
1 2 3 ... n dans la diagonale principale avec :
    i = 0; j = 0;
    for (k = 1; k <=  n * n; k++) {
        a[i][j] = k;
        if ((k % n) == 0) {
            i = i - 1;
            if(i < 0) i = i + n;
        }
        else {
            i = (i + 1) % n;
            j = (j + 1) % n;
        }
    }
Vrai pour tout n et amusant pour n = 9

Commentaire de pgl10 le 15/05/2011 14:08:48

La modification ci-dessus enoncée détruit les sommes des deux diagonales principales. Ce qui peut être considéré comme interdit !

Commentaire de ZeRo0Cold le 26/05/2011 08:50:36

merci bcp

Commentaire de zertyx le 26/05/2011 13:17:31

Vous êtes les bienvenues

Commentaire de hichamst le 04/06/2011 21:16:07

il ne fonctionne pas mon petit

Commentaire de amenoo le 10/06/2011 11:04:27

:( ca marche pa avec moi; ya erreur avec clrscr

Commentaire de zertyx le 13/06/2011 10:25:25

t'aurai dû essayer avant de parler HICHAMST, ta manière de parler reflète ce que tu es.
AMENDO "clrscr" ne fait qu'effacer l'écran, tu peux la enlever si tu veux.

Commentaire de arianafox le 16/06/2011 16:00:54

bravo.......merci bq

Commentaire de elk2kila le 30/06/2011 03:09:44

je trouve cette petite application tres reussie.mais j'aimerais bien avoir son utilite dans la vie de tous les jours.quel est son veritable role dans la conception? est-ce qu-elle participe dans la realisation des jeux video.
merci!!

Commentaire de elk2kila le 30/06/2011 03:09:49

je trouve cette petite application tres reussie.mais j'aimerais bien avoir son utilite dans la vie de tous les jours.quel est son veritable role dans la conception? est-ce qu-elle participe dans la realisation des jeux video.
merci!!

Commentaire de zertyx le 01/07/2011 19:56:00

merci ELK2KILA pour cette question.
ce petit morceau de code est très demander par les débutants en langage C, parce qu'il est parmi les moyens les plus fréquent que les profs demandent ou utilisent pour faire comprendre l'utilisation et la manipulation des vecteurs à deux dimensions.

Commentaire de polman le 12/07/2011 01:21:58

en faite ca marche pas chez moi !!!!!!!!!!!!!!! mm apres avoir enlever clrscr();

Commentaire de BuuG63 le 29/10/2011 16:48:35

Super !

Commentaire de castalchaihane le 24/03/2012 23:29:14

C'est très bien.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales