se trata de definir una matriz de 4x4, y almacenar en la matriz parejas de numeros, los numeros se deben generar aleatoriamente de 1 a 8...creo que el error esta en el while, a veces me queda en un bucle infinito y a veces no me quedan todas las parejas completas...
les agradeceria mucho su ayuda...
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;
void parejas(){
srand(time(NULL));
int matriz[4][4],nume,cont=0;
for(int x=0;x<4;x++){//llenando la matriz con numeros aleatorios
for(int y=0;y<4;y++){
nume=1+rand()%8;
matriz[x][y]=nume; //llenando la matriz con numeros aleatorios
}
}
//comparacion de las parejas de la matriz
for(int x=0;x<4;x++){ //recorriendo cada posicion de la matriz
for(int y=0;y<4;y++){
for(int s=0;s<4;s++){
// for para comparar cada posicio con la posicion generada por los 2 for anteriores
for(int m=0;m<4;m++){ //for para recorrer filas
if(matriz[x][y]==matriz[s][m]) {
//comparando el valor de la posicion [x][y] con el vlor de cada posicion de la matriz
cont++; //contamos cuantas veces el numero es igual
if(cont>2){ //si el numero esta repetido mas de dos veces
while(matriz[s][m]==matriz[x][y]){
//se mantendra este ciclo para asignarle un valor diferente
nume=1+rand()%8;
//generamos el nuevo numero que va a tener la posicion de la matriz
matriz[s][m]=nume;
}
cont=2; //igualmaos el contador a 2
}//cierre de if que evalua el contador
}//cierre del if que evalua si los numeros son iguales
}//cierre del for que recorre filas
}cont=0; //cierre de for que recorre columnas
cout<<matriz[x][y] <<"\t" <<x <<y;
cout<<endl;//mostramos el numero
}//cierre del segundo for
}//cierre del primer for
} //cierre de la funcion
int main(){ //funcion principal
cout<<"numero" <<"\t" <<"posicion" <<endl;
cout<<endl;
parejas(); //llamada a la funcion
system("pause");
}
Hola creo que tienes un error de logica estas evaluando en la misma matriz. Hay un momento donde
matriz[s][m]
donde s=x e m=y entonces si cambias el valor de s,m s seguirá siendo igual al valor x,y ahi esta tu ciclo infinito por lo demas he visto otras detalles pero creo que con ese es suficiente.
Tienes que agregar una condicion de exclusión donde s != x and m!=y.
Es eso u otra matrizo guardar el valor temporalmente en otra variable y comparar contra esa variable.
Saludos
ok. lo voy aprobar asi para ver...GRACIAS por tu ayuda