sou novo aqui e estou com uma dúvida, se alguém puder me ajudar, ficarei grato!
Meu professor de Álgebra Linear me mandou fazer um programa que encontre a solução para o quadrado mágico, sendo que todas as seqüências somadas deve dar 15.
Usei uma lógica pouco otimizada, eu sei, eu tive problemas de como numerar o vetor "y[]" de 1 à 9 sem repetição. Mas o maior problema não é esse agora.
Veja, fiz as anotações no código:
#include <stdlib.h>
#include<time.h>
main()
{
int mat[2][2],x,y[8],a1,a2,a3,a4;
srand(time(NULL));
do{
y[0]=10;
y[1]=11;
y[2]=12;
y[3]=13;
y[4]=14;
y[5]=15;
y[6]=16;
y[7]=17;
y[8]=18;
do
{
y[0]=rand()%10;
y[1]=rand()%10;
y[2]=rand()%10;
y[3]=rand()%10;
y[4]=rand()%10;
y[5]=rand()%10;
y[6]=rand()%10;
y[7]=rand()%10;
y[8]=rand()%10;
}while( ( (y[1]==y[2]) || (y[1]==y[3]) || (y[1]==y[4]) || (y[1]==y[5]) || (y[1]==y[6]) || (y[1]==y[7]) || (y[1]==y[8]) || (y[1]==y[0]) || (y[2]==y[3]) || (y[2]==y[4]) || (y[2]==y[5]) || (y[2]==y[6]) || (y[2]==y[7]) || (y[2]==y[8]) || (y[2]==y[0]) || (y[3]==y[4]) || (y[3]==y[5]) || (y[3]==y[6]) || (y[3]==y[7]) || (y[3]==y[8]) || (y[3]==y[0]) || (y[4]==y[5]) || (y[4]==y[6]) || (y[4]==y[7]) || (y[4]==y[8]) || (y[4]==y[0]) || (y[5]==y[6]) || (y[5]==y[7]) || (y[5]==y[8]) || (y[5]==y[0]) || (y[6]==y[7]) || (y[6]==y[8]) || (y[6]==y[0]) || (y[7]==y[8]) || (y[7]==y[0]) || (y[8]==y[0]) ) || ( (y[1]==0) || (y[2]==0) || (y[3]==0) || (y[4]==0) || (y[5]==0) || (y[6]==0) || (y[7]==0) || (y[8]==0) || (y[0]==0) ) ); // y[] não pode ser zero, e nunca pode repetir os valores.
mat[0][0]=y[0];
mat[0][1]=y[1];
mat[0][2]=y[2];//2 //y[2] e y[3] estão saindo da condição do while diferentes (compile e veja),
mat[1][0]=y[3];//3 //mas depois de serem transferidos pra matriz, são forçados a serem iguais, não sei como!
mat[1][1]=y[4];
mat[1][2]=y[5];//5 //y[5] e y[6] estão saindo da condição do while diferentes (compile e veja),
mat[2][0]=y[6];//6 //mas depois de serem transferidos pra matriz, são forçados a serem iguais, não sei como!
mat[2][1]=y[7];
mat[2][2]=y[8];
a1=mat[0][0]+mat[1][1]+mat[2][2];
a2=mat[0][2]+mat[1][1]+mat[2][0];
a3=mat[0][1]+mat[1][1]+mat[2][1];
a4=mat[1][0]+mat[1][1]+mat[1][2];
}while( (a1!=15) || (a2!=15) || (a3!=15) || (a4!=15) );
printf("\n\n\t%d %d %d\n\n\t%d %d %d\n\n\t%d %d %d\n\n\n\n",y[0],y[1],y[2],y[3],y[4],y[5],y[6],y[7],y[8]);
printf("\n\n\t%d %d %d\n\n\t%d %d %d\n\n\t%d %d %d\n\n\n\n",mat[0][0],mat[0][1],mat[0][2],mat[1][0],mat[1][1],mat[1][2],mat[2][0],mat[2][1],mat[2][2]);
system("pause");
}
// Se alguém conhecer alguma forma mais eficiente de preencer o vetor y[] sem repetição, por favor me ajudem. E me ajudem entender o erro (comentado no código).
Pergunta
Cawe Coy
Olá,
sou novo aqui e estou com uma dúvida, se alguém puder me ajudar, ficarei grato!
Meu professor de Álgebra Linear me mandou fazer um programa que encontre a solução para o quadrado mágico, sendo que todas as seqüências somadas deve dar 15.
Usei uma lógica pouco otimizada, eu sei, eu tive problemas de como numerar o vetor "y[]" de 1 à 9 sem repetição. Mas o maior problema não é esse agora.
Veja, fiz as anotações no código:
// Se alguém conhecer alguma forma mais eficiente de preencer o vetor y[] sem repetição, por favor me ajudem. E me ajudem entender o erro (comentado no código).
Grato! (:
Cawe Coy R.M.
Editado por Jonathan QueirozLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.