oregon ha scritto:
Mi pare che ce n'erano altri ma hai eliminato il codice dalla discussione e non posso dirti di piu
rieccolo, però le altre parti me le ha controllate l'insegnante e per lui andava tutto bene
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int r,c,d1=0,d2=0;
int n,es,f,k;
int r1,c1,n1;
int cifra[9];
int tr[3];
int tc[3];
int mat[3][3];
void inserimento();
void controllo();
void stampa();
void calcola();
void azzeramento1();
void azzeramento2();
void azzeramento3();
void scambia();
int mettid(int sotto,int sopra);
void selector(unsigned short color)
{
HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,color);
}
main()
{
system("color 0F");
azzeramento1();
azzeramento2();
azzeramento3();
stampa();
do
{
controllo();
calcola();
stampa();
inserimento();
}
while(es==0);
do
{
printf("\n 0=fine lavoro 1=scambia \n");
k=mettid(0,1);
if(k==1)
{
scambia;
calcola;
stampa;
}
}
while(es==0);
printf("\n");
system("pause");
}
void scambia()
{
int r2=0,r3=0,c2=0,c3=0,comodo,salva1[3][3],salva2[3][3];
printf("\n riga dove si vuole sostituire il massimo:");
scanf("%d",&r);
printf("\n colonna dove si vuole sostituire il massimo:");
scanf("%d",&c);
printf("\nIl valore avente coordinate (%d,%d) e': %d\n da sostituire con:",r,c,mat[r][c]);
comodo=salva1[r][c];
salva1[r][c]=salva2[r][c];
salva2[r][c]=comodo;
}
void stampa()
{
system("cls");
selector(30);
printf(" Quadrato Magico ");
printf("\n\n");
selector(2);
printf(" 1");
printf(" 2");
printf(" 3");
for(r=0;r<3;r++)
{
selector(2);
printf("\n\n %3d",r+1);
selector(11);
for(c=0;c<3;c++)
{
printf(" %4d",mat[r][c]);
}
selector(12);
printf("%5d",tr[r]);
}
selector(14);
printf("\n\n %3d",d2);
selector(12);
for(c=0;c<3;c++)
{
printf(" %4d",tc[c]);
}
selector(14);
printf("%5d",d1);
printf("\n\n");
}
void calcola()
{
azzeramento2();
for(r1=0;r1<3;r1++)
{
tr[r1]=mat[r1][0]+mat[r1][1]+mat[r1][2];
}
for(c1=0;c1<3;c1++)
{
for(r1=0;r1<3;r1++)
{
tc[c1]=tc[c1]+mat[r1][c1];
}
}
d2=mat[0][2]+mat[1][1]+mat[2][0];
d1=mat[0][0]+mat[1][1]+mat[2][2];
}
void controllo()
{
selector(15);
do
{
printf("\n riga ");
r=mettid(1,3);
r=r-1;
printf("\n colonna ");
c=mettid(1,3);
c=c-1;
}
while(mat[r][c]>0);
selector(14);
printf("\n valore ");
for(f=0;f<9;f++)
{
if(cifra[f]==0)
{
printf("%d",f+1);
}
}
printf("\n");
do
{
n=mettid(1,9);
}
while(cifra[n-1]>0);
cifra[n-1]=n;
mat[r][c]=n;
}
void azzeramento2()
{
for(r=0;r<3;r++)
{
tr[r]=0;
tc[r]=0;
}
}
void azzeramento1()
{
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
mat[r][c]=0;
}
}
}
void azzeramento3()
{
for(r=0;r<9;r++)
{
cifra[r]=0;
}
}
void inserimento()
{
es=1;
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
if(mat[r][c]==0)
{
es=0;
}
}
}
}
int mettid(int sotto,int sopra)
{
int pippo;
do
{
printf("(%d - %d): ",sotto,sopra);
scanf("%d",&pippo);
}
while(pippo<sotto || pippo>sopra);
return pippo;
}