Ripper 0 Denunciar post Postado Junho 1, 2010 Faça um programa em C que dada uma matriz 10 por 10, essa matriz deverá ser preenchida com números de 1 a 100, de acordo com a seguinte regra: é escolhida uma célula arbitrária da matriz, que será preenchida com o número 1. A próxima célula, a ser preenchida com o número 2 deverá ser uma célula vizinha a célula preenchida com o número 1. A célula a ser preenchida com o número 3 deverá ser vizinha a célula preenchida com o número 2 e assim por diante. Se por exemplo o programa tiver que colocar o número 18 em uma célula vizinha ao número 17, mas todas as células vizinhas ao número 17 já estão preenchidas, o programa deve tentar colocar o número 18 vizinho ao número 16, ou seja, ele deve ir voltando até encontrar uma célula vazia vizinha a um número anterior. No final, o programa deve mostrar como ficou a matriz preenchida. Alguém tem alguma idéia ? Ninguém tem uma ideia para eu começar :( . Fiz alguma coisa mas acho que ta um lixo. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 1, 2010 A norma é não fazer as provas/exercícios/trabalhos dos outros. Poste o que você já fez. Compartilhar este post Link para o post Compartilhar em outros sites
Ripper 0 Denunciar post Postado Junho 1, 2010 A norma é não fazer as provas/exercícios/trabalhos dos outros. Poste o que você já fez. La vai: #include<stdio.h> #include<stdlib.h> #include<time.h> int main(){ int a; int b; int c; int i, j; int d[100], e[100]; //vetores para armazenar a linha e a coluna resp. int m[10][10]; //matriz a ser preenchida srand(time(NULL)); a=(rand()%10); //sorteio da linha da primeira celula b=(rand()%10); //sorteio da coluna de primeira celula for(i=0;i<3;i++) for(j=0;j<3;j++){ m[i][j]=0; } printf("%d %d\n",a,B); //teste para ver quais numeros sairam m[a][b]=1; //condicao da questao c=1; d[0]=a; e[0]=b; //fiz o teste com 1 numero alem do inicial d[1]=rand()%(d[0]+2); //Aqui eu queria fazer o seguinte: fazer o sorteio baseado no numero anterior if(d[1]<d[0]-1) d[1]=rand()%(d[0]+2); //EX: se a=3 e b=4 faz-se o sorteio da proxima linha com o resto de 5 e da proxima e[1]=rand()%(e[0]+2); // e o da proxima coluna com resto de 6. Assim pego o vizinhos da celula 3,4. if(e[1]<e[0]-1) e[1]=rand()%(e[0]+2); // Caso eu obtenha algum numero menor que 2 (que nao inclui os vizinhos da celula //3,4) o numero deve ser sorteado de novo. Mesma coisa para a coluna printf("%d %d \n",d[1],e[1]); //Mas ocorre casos em que obtenho numeros "proibidos". O que fazer ? return 0; } //Ainda resta verificar se os vizinhos estão sendo usados. Um veterano da faculdade sugeriu usar uma pilha para fazer isso //Ainda não estudei isso mas posso dar uma olhada e queria uma dica sobre isso se possível Compartilhar este post Link para o post Compartilhar em outros sites