Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema C++

Estas en el tema de Problema C++ en el foro de C/C++ en Foros del Web. Alguien podría ayudarme a resolver este problema? Realice una función (y un programa principal para probar dicha función) que reciba un vector de enteros y ...
  #1 (permalink)  
Antiguo 21/12/2013, 07:19
 
Fecha de Ingreso: diciembre-2013
Mensajes: 1
Antigüedad: 10 años, 4 meses
Puntos: 0
Problema C++

Alguien podría ayudarme a resolver este problema?



Realice una función (y un programa principal para probar dicha función) que reciba un vector de enteros y su
tamaño y nos devuelva un valor lógico (cierto o falso) indicando si todos los elementos del array son diferentes
o hay alguno que se repite.



Gracias.
  #2 (permalink)  
Antiguo 21/12/2013, 10:42
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Problema C++

Pues eso, si ya lo tienes todo solo te falta implementar que es lo mas divertido. Primero creas el main, implementas un array de enteros, lo rellenas de valores y haces la llamada. Ahora creas la funcion, recibe la lista de enteros como argumento. Para resolver recorres elemento por elemento comparando otra vez contra todos los elementos siguientes a si mismo (no contra los anteriores); cuando encuentras una coincidencia finalizas retornando falso (no hace falta seguir la comparacion cuando ya hay dos repetidos), si se da el caso que llegas a comparar todos sin coincidencias entonces retornas cierto.

Pon un poco de tu parte, prueba a hacer algo de codigo y comenta exactamente donde tienes el problema. Es muy probable que nadie te de el ejercicio resuelto; nunca se sabe, pero suele ocurrir que nadie quiera resolver los ejercicios de otro, y no es por fastidiar :)

Saludos
vosk
  #3 (permalink)  
Antiguo 21/12/2013, 18:34
Avatar de bgab7  
Fecha de Ingreso: agosto-2013
Mensajes: 11
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema C++

Código C++:
Ver original
  1. bool iguales(int arreglo[tamArreglo])
  2. {
  3.   for(int i;i<tamArreglo;i++)
  4.   {
  5.     for(int j;j<tamArreglo;j++)
  6.     {
  7.       if((arreglo[i]==arreglo[j])&&(i!=j))
  8.       {
  9.         return true;//Si hay un numero igual
  10.       }
  11.     }
  12.   }
  13.   return false;//No hay un numero igual
  14. }
  #4 (permalink)  
Antiguo 22/12/2013, 06:44
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Problema C++

Un par de observaciones, no se si esto que digo será correcto:

Código C++:
Ver original
  1. for(int i; i<tamArreglo; i++)

Si no inicias 'i', con que valor comienza en bucle? Siempre iniciará en 0? Lo mismo para el bucle interno y la 'j'; si no aseguras que 'i' o 'j' sea un valor del rango del array te puede provocar una violacion de segmento.

Otra cosa, estas haciendo mas comprovaciones de las necesarias; en cambio con lo que comenté siempre te aseguras de no recomparar lo que ya te resultó diferente. Pongamos el caso del siguiente array {0, 0}, cuando lo envio a tu algoritmo:

Código C:
Ver original
  1. entre 0 y 2
  2.     entre 0 y 2
  3.         [0] == [0] ? no
  4.         [0] == [1] ? si, retorna true con 2 comprovaciones

Ahora con el otro algoritmo:

Código C:
Ver original
  1. entre 0 y 2-1
  2.     entre (valor anterior) y 2
  3.         [0] == [0+1] ? si, retorna true con 1 comprovacion

En tu algoritmo en el caso menos favorable (cuando todos son diferentes) se hacen tamArreglo*tamArreglo comprovaciones, si es de 5 se hacen 5x5 comprovaciones; de la otra forma se hacen (5-1)+(5-2)...(5-5).

Una ultima cosa, todo esto no lo he comentado para incordiar :)) Creo que @Levgms al ser el interesado deberia pronunciarse un poco.

Saludos
vosk

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:30.