Dev - C++ - Ayudando comparando arreglos con un if

   
Vista:

Ayudando comparando arreglos con un if

Publicado por Andre Jaime andremgm1@hotmail.com (1 intervención) el 15/11/2014 05:21:16
Hola, gente, tengo un problema el cual no entiendo, yo hice este codigo usando arreglos:
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
#include <iostream>
#include <cmath>
#include <cstdlib>
#include<math.h>
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
int lista1[100];
int lista2[100];
int variable;
cout << " Cuantos numeros tendra su arreglo"<< endl;
cin>> variable;
 
for(int i=0;i<variable;i++){
	cout << " inserte los numeros que desea comparar"<< endl;
	cin>> lista1[i];
 
}
for (int k=0;k<variable;k++){
	cout << " inserte los numeros que deseas comparar ( lista 2) "<< endl;
	cin >> lista2[k];
 
}
	if(lista1 == lista2) {
		cout <<" la lista contiene los mismos numeros y por lo tanto no se puede comparar"<< endl;
	}
	else
	cout << " La lista es totalmente diferente"<< endl;
 
	return 0}

Lo que quiero hacer es hacer que me diga si los arreglos tienen los mismos numeros o no, ejemplo si el usuario pone exactamente los mismos numeros independientemente del orden, que me diga que son los mismos, pero si hay uno diferente quiero que me diga que las listas son diferentes, solo quiero que me digan que es lo que debo de hacer y porque mi resultado no es el que espero con este codigo.
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

Ayudando comparando arreglos con un if

Publicado por leo lucas (1 intervención) el 15/11/2014 06:03:18
Tu problema está en la lógica, revisa el if, estás comparando las direcciones del inicio de tus arreglos y no lo que contienen.

lista1 y lista2 contienen direcciones de memoria, lo que debes hacer en este caso (según yo) es crear otro for que recorra los arreglos campo por campo y los compare, si llega al final con éxito es porque los arreglos son idénticos.

Reemplaza tu if por este código:

1
2
3
4
5
6
7
8
9
10
11
int i;
 
for (i=0;i<variable;i++) {
	if (lista1[i]!=lista2[i]) { break; }
}
 
if (i==variable) {
	cout<<"los arreglos son iguales "<<endl;
} else {
	cout<<"los arreglos son diferentes "<<endl;
}


Espero que se entienda mi solución.
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