Carré magique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 943 fois - Téléchargée 33 fois

Contenu du snippet

Petit programme pour afficher des carrés magiques en C.

Source / Exemple :


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

#define max 20
#define blanc 15
#define blink 128

void page_garde (void);
void continuation (void);

void main()
{
int tab[max][max], i, j, n, val, test;
int si[max], sj[max], diag=0, adiag=0, index;
char oui='o';

page_garde();
clrscr();
printf("Bienvenu dans le carré magique.");
continuation();

do
	{
	diag=0;
	adiag=0;
	do
		{
		clrscr();
		printf("Entrez la taille du carr? (nombre impair inférieur ? %d): ", max);
		fflush(stdin);
		scanf ("%d", &n);
		}
	while ((n%2)!=1 || n>max);

	index=(int)(log10 (n*n));
	for (i=0; i<max; i++)
		{
		si[i]=0;
		sj[i]=0;
		for (j=0; j<max; j++)
			tab[i][j]=0;
		}

	i=0;
	j=n/2;
	val=1;
	tab[0][n/2]=val;
	while (val<=n*n)
		{
		if((val%n)!=0)
			{
			if (i>0 && j<n-1)
				{
				i--;
				j++;
				}
			else
				{
				if (i==0)
					{
					i=n-1;
					j++;
					}
				else
					if (j==(n-1))
						{
						j=0;
						i--;
						}
				}
			}
		else
			i++;
		val++;
		tab[i][j]=val;
		}
/* affichage du carré magique */
	printf("\nVoici le carré magique:\n");
	for (i=0; i<n; i++)
		{
		for (j=0; j<n; j++)
			printf("%*d ", index+1, tab[i][j]);
		printf("\n");
		}
	continuation();
	gotoxy(1, 5+n);
	delline();
	delline();

/* v?rification du carré magique */
/* somme des colonnes */
	for (i=0; i<n; i++)
		{
		for (j=0; j<max; j++)
		sj[i]+=tab[i][j];
		}
/* somme des lignes */
	for (j=0; j<n; j++)
		{
		for (i=0; i<n; i++)
		si[j]+=tab[i][j];
		}

/* somme de la diagonale */
	for (i=0; i<n; i++)
		diag+=tab[i][i];

/* somme de l'anti-diagonale */
	for (i=0; i<n; i++)
		adiag+=tab[n-1-i][i];

	printf("Vérification de la magie du carré:");
	if (n>9)
		{
		gotoxy(1, 2);
		for (i=0; i<=n+1; i++)
			delline();
		test=-2;
		gotoxy(1, 3);
		}
	else
		test=n;
	for (i=0; i<n; i++)
		printf("\nValeur de la somme de la ligne %d: %d", i+1, sj[i]);
	continuation();
	gotoxy(75, 6+test);
	for (i=0; i<=n+2; i++)
		delline();
	gotoxy(75, 5+test);
	for (j=0; j<n; j++)
		printf("\nValeur de la somme de la colonne %d: %d", j+1, si[j]);
	continuation();
	gotoxy(75, 6+test);
	for (i=0; i<=n+1; i++)
		delline();
	gotoxy(75, 5+test);
	printf("\nValeur de la somme de la diagonale: %d", diag);
	printf("\nValeur de la somme de l'antidiagonale: %d", adiag);
	printf("\n\nVoulez-vous rejouer au carré magique? (O)oui, ");
	printf("(autre touche)non : ");
	fflush(stdin);
	scanf("%c", &oui);
	}
	while (oui=='o' || oui=='O');
clrscr();
}

void page_garde (void)
{
char txt[60], txt0[2];

clrscr();
textcolor(blanc);
strcpy(txt, "***************************************************");
gotoxy(15, 8);
puts(txt);
strcpy(txt0, "*");
gotoxy(15, 9);
puts(txt0);
gotoxy(65, 9);
puts(txt0);
strcpy(txt, "*            LOGICIEL DU CARRE MAGIQUE            *");
gotoxy(15, 10);
puts(txt);
gotoxy(15, 11);
puts(txt0);
gotoxy(65, 11);
puts(txt0);
gotoxy(15, 12);
puts(txt0);
gotoxy(65, 12);
puts(txt0);
gotoxy(15, 13);
strcpy(txt, "*          COPYRIGHT ALEXANDRE ROGER 1999         *");
puts(txt);
gotoxy(15, 14);
puts(txt0);
gotoxy(65, 14);
puts(txt0);
gotoxy(15, 15);
puts(txt0);
gotoxy(65, 15);
puts(txt0);
gotoxy(15, 16);
puts(txt0);
textcolor(blink+blanc);
gotoxy(20, 16);
cprintf("< APPUYEZ SUR UNE TOUCHE POUR CONTINUER >");
textcolor(blanc);
gotoxy(65, 16);
puts(txt0);
gotoxy(15, 17);
puts(txt0);
gotoxy(65, 17);
puts(txt0);
gotoxy(15, 18);
strcpy(txt, "***************************************************");
puts(txt);
gotoxy(80, 25);
getch();
}

void continuation (void)
{
textcolor(blink+blanc);
cprintf("\n\n\r< APPUYEZ SUR UNE TOUCHE POUR CONTINUER >");
textcolor(blanc);
gotoxy(80, 25);
getch();
}

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mercredi 9 février 2005
Statut
Membre
Dernière intervention
25 mars 2005

pas mal
Messages postés
556
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
31 octobre 2019

Boujour

j'ai un probleme avec le compilateur :

"--------------------Configuration: jdhg - Win32 Debug--------------------
Compiling...
der.cpp
c:\program files\microsoft visual studio\myprojects\jdhg\der.cpp(19) : error C2065: 'clrscr' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\jdhg\der.cpp(87) : error C2065: 'gotoxy' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\jdhg\der.cpp(88) : error C2065: 'delline' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\jdhg\der.cpp(154) : error C2065: 'textcolor' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\jdhg\der.cpp(155) : error C2065: 'strcpy' : undeclared identifier
Error executing cl.exe.

jdhg.exe - 5 error(s), 0 warning(s)"

Je l'ai fait en vc++. S'il vous plaît aidez moi.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.