begin process at 2013 05 24 03:06:32
  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.

Commentaire de thierclap le 13/07/2012 20:23:38

bonjour à tous ,

comment obtenir la librairie conio.h sous Macosx 10.5 ppc?

Commentaire de vegas045 le 03/08/2012 18:33:35

c'est bien

Commentaire de medmed7 le 03/10/2012 20:32:29

merci ,quant j'ai fait la trace de la fonction 'magique' pour n=3,j'ai trouvé qu'il n'y a pas égalité sur chaque colonne sur chaque ligne et sur chaque diagonale principale  .

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

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 : 1,591 sec (4)

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