Dev - C++ - Determinar si hay dos o mas elementos iguales en una matriz

 
Vista:
Imágen de perfil de Francisco
Val: 55
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Determinar si hay dos o mas elementos iguales en una matriz

Publicado por Francisco (36 intervenciones) el 21/02/2018 06:54:31
Hola, ¿Cómo están?,
Les envío un código que hice pero que falla.
Es sobre determinar si hay dos o mas elementos iguales en una matriz, hice el código pero no me sale. ¿Hay alguna falla en el código?, ¿Cómo puedo corregirlo?, por favor, ayúdenme. Muchas gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<iostream>
using namespace std;
int main(){
    int matriz[3][3],i=0,j=0,k=0,l=0,valor=0;
    char verdad='f';
    cout<<"ingrese valor que se va a repetir "<<endl;
    cin >> valor;
    cout<<"introduzca valores de la matriz "<<endl;
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            cout<<"["<<i<<"]"<<"["<<j<<"]"<<endl;
            cin >> matriz[i][j];
        }
    }
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            for(k=0;k<3;k++){
                    if(matriz[i][j]==valor || matriz[j][k]==valor){
                        verdad='t';
 
                    }
                    else{
                        verdad='f';
                        break;
                    }
            }
        }
    }
    if(verdad=='t'){
        cout<<"en la matriz hay dos o mas valores que son iguales "<<endl;
    }
    else if(verdad=='f'){
        cout<<"todos los elementos son diferentes "<<endl;
    }
    return 0;
}

Cuando ingreso 5, y despues 1,2,3,4,5,5,6,7,8 me muestra que todos los elementos son diferentes.
Debe haber un error.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Determinar si hay dos o mas elementos iguales en una matriz

Publicado por agustin (522 intervenciones) el 21/02/2018 14:27:03
¿Por qué solicitas el valor que se supone se va a repetir? Por qué no buscas directamente si hay alguno repetido?
Por otro lado lo que necesitas en tu código es un contador que cuente las ocurrencias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alexbd
Val: 18
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Determinar si hay dos o mas elementos iguales en una matriz

Publicado por Alexbd (6 intervenciones) el 22/02/2018 00:10:48
Hola buen dia hace ya tiempo escrbi una funcion que retorna el numero total de repeticiones en un array, lo comparto.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
extern int repeat_chars(const char* cadena)
{
	int length = strlen(cadena), d=0, c=0, counter=0;
	if(cadena == NULL) return -1;
	size_t tabla[256];
	memset(&tabla, 0, sizeof(tabla));
	char *array = new char[length+1];
	if(array == NULL) { perror("Memoria insuficiente"); exit(1); }
	strcpy(array, cadena);
	//
	do
	{
		c=array[counter++];
		tabla[c]+=1;
		if(tabla[c] > 1) ++d;
 
	}while(counter < length);
	//
	//cerr<<"Total repeticiones: "<<d<<endl;
	delete[] array;
	return d;
}
Espero le sea de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 14
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Determinar si hay dos o mas elementos iguales en una matriz

Publicado por CHAPU (6 intervenciones) el 23/02/2018 21:22:27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//AQUI EL CODIGO CREO QUE ES ASI COMO LO QUIERES
#include<iostream>
using namespace std;
int main(){
	int i,j,aux,verdad,contador;
    int matriz[3][3];
    cout<<"introduzca valores de la matriz "<<endl;
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            cout<<"ingrese en la posicion ["<<i+1<<"]"<<"["<<j+1<<"]: ";
            cin>>matriz[i][j];
            if(aux!=matriz[i][j]){
            	aux=matriz[i][j];
			}else{
				verdad=1;
				contador ++;
			}
        }
    }
    if(verdad==1&&contador==1){
        cout<<"\n en la matriz hay "<<contador<<" valores igual a otro "<<endl;
    }else if(verdad==1&&contador>1){
    	cout<<"\n en la matriz hay "<<contador<<" valores que son iguales a otro "<<endl;
	}
    else{
        cout<<"todos los elementos son diferentes "<<endl;
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar