Título: Mi programa no responde! (SOLUCIONADO) Publicado por: MJI en 22 Diciembre 2018, 13:19 pm Hola, me gustaría realizar un programa que crease un vector hasta cierto 'num', y los números que lo componen están entre 0 y num - 1. Ademas no ha de repetirse ningún numero dentro del vector.
Mi intento de este programa es el siguiente: #include <iostream> #include <cstdlib> #include <time.h> using namespace std; const int MAX = 80; typedef int Vector[MAX]; void GenerarVector(Vector v, int num); void MostrarVector(const Vector v, int num); int main (void) { Vector v; int num; Presentacion(); cout << "Dame numero de elementos del vector: "; cin >> num; cout << endl; if(num < 0) cout << "El numero no es positivo, no se puede generar el vector"; else { GenerarVector (v, num); cout << "El vector generado es: "; MostrarVector (v, num); } return 0; } void Presentacion(void) { cout << "Este programa genera vector de una cantidad de numeros que el usuario " cout << "indique, comprendidos entre 0 y el numero indicado, sin repetirse ningún" cout << " numero a lo largo del vector" << endl << endl; return; } void GenerarVector(Vector v, int num) { int numvec; bool numrep = false; int i = 0; int j = 0; srand(time(NULL)); do { numvec = rand() % num; do { if(numvec = v[j]) numrep = true; else numrep = false; j++; } while(j <= i && numrep == false); j = 0; if(numrep == false) { v = numvec; i++; } } while(i < num); return; } void MostrarVector(const Vector v, int num) { int contador = 0; int i = 0; while(contador < num) { cout << v << " "; i++; contador++; } return; } No informa de ningún error pero al ejecutarse se queda congelado. ¿Alguien sabe cual es el problema? Me imagino que sera por la función 'GenerarVector'. Gracias. Título: Re: Mi programa no responde! Publicado por: K-YreX en 22 Diciembre 2018, 13:54 pm El código entre etiquetas de código GeSHi porque cuando usas la i como índice entre corchetes se convierte todo el mensaje de ahí en adelante en cursiva y la i y los corchetes no se ven y no se puede corregir bien el código.
En la función <generarVector()> estás usando asignaciones (un igual "=") donde deberías estar usando comparaciones (dos iguales "=="). No he mirado todo el código en profundidad pero la idea para generar un vector sin valores repetidos es: - Opción 1 Generas un número aleatorio, recorres los valores que ya has introducido en el vector y si ninguno es igual al nuevo valor generado, lo introduces en el vector, si ya está repetido, generas otro número. - Opción 2 Vas ordenando cada nuevo valor que introduces y así no tienes que compararlo con todo el vector que ya tienes generado. PD: Las funciones de tipo <void> no hace falta que le pongas <return>, es raro verlo. Suerte :-X Título: Re: Mi programa no responde! Publicado por: MJI en 22 Diciembre 2018, 14:06 pm El código entre etiquetas de código GeSHi porque cuando usas la i como índice entre corchetes se convierte todo el mensaje de ahí en adelante en cursiva y la i y los corchetes no se ven y no se puede corregir bien el código. En la función <generarVector()> estás usando asignaciones (un igual "=") donde deberías estar usando comparaciones (dos iguales "=="). No he mirado todo el código en profundidad pero la idea para generar un vector sin valores repetidos es: - Opción 1 Generas un número aleatorio, recorres los valores que ya has introducido en el vector y si ninguno es igual al nuevo valor generado, lo introduces en el vector, si ya está repetido, generas otro número. - Opción 2 Vas ordenando cada nuevo valor que introduces y así no tienes que compararlo con todo el vector que ya tienes generado. PD: Las funciones de tipo <void> no hace falta que le pongas <return>, es raro verlo. Suerte :-X Vale, el problema era añadir un = mas en el segundo do de la función GenerarVector. Muchas gracias! |