Dev - C++ - Ayuda en un arreglo de numeros aleatorios en devc++

 
Vista:
sin imagen de perfil

Ayuda en un arreglo de numeros aleatorios en devc++

Publicado por Sebastian (1 intervención) el 15/03/2015 15:20:06
Necesito ayuda urgente por favor, llevo días intentado hacerlo pero no me resulta. Este es un programa que me genera números aleatorios en un arreglo. Mi problema es que me piden contar los elementos de arreglo hasta que se repita un elemento del arreglo con alguno de los ya antes recorridos, y que ahí pare mi programa y me imprima el total de numeros que tuvo que recorrer, se que es algo sencillo, pero no soy estudiante de informática y hace tiempo que no programaba, por favor si alguien es tan amable, se lo agradecería bastante.

AQUI LES DEJO EL CODIGO DE DEVC++

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
37
38
39
40
41
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
 
int main ()
{
	int CANTIDAD=10000;
	double muestra [CANTIDAD];
	int numero;
	int p,x;
	int i=0;
	srand(time(NULL));
 
	cout << "    \n\n::::::: GENERADOR DE NUMEROS ALEATORIOS :::::::\n\n" << endl;
 
 
cout << "Ingrese la cantidad de numeros a generar: " << endl;
cin >> CANTIDAD;
 
 
 
	for(p=0 ; p < CANTIDAD ; p++)
	{
		numero = 1 + rand() % (366 - 1);
		muestra[p]=numero;
 
 
	}
 
   cout << "\n\nLa cantidad generada es:\n\n[ " ;
 
   for(p=0 ; p < CANTIDAD ; p++)
   cout << muestra[p] << " ";
 
   cout << "] \n\n" ;
 
 
 return 0;
 
}
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: 338
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda en un arreglo de numeros aleatorios en devc++

Publicado por Martín (158 intervenciones) el 16/03/2015 10:21:49
Hola; para comenzar, tienes un par de errores al definir el array
double muestra [CANTIDAD];

En C++ las dimensiones de un array deben ser conocidas en tiempo de compilación:
1
2
int CANTIDAD=10000;    // debería ser una constante
double muestra [CANTIDAD];

Luego usas CANTIDAD para que el usuario ingrese la cantidad de números aleatorios que van a generarse, entonces no puede ser constante. El código este no debería compilar; ¿qué compilador usas?

Yo te sugeriría que en lugar de un array uses un std::vector.

Martín;
Profesor de C++
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
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++

Ayuda en un arreglo de numeros aleatorios en devc++

Publicado por agustin (522 intervenciones) el 18/03/2015 08:39:44
o new/delete para reservar la memoria indicada por CANTIDAD.
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
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++

Ayuda en un arreglo de numeros aleatorios en devc++

Publicado por aguml (522 intervenciones) el 18/03/2015 11:24:38
El siguiente codigo funciona:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
#include <Windows.h>
 
using namespace std;
 
enum {
   BLACK             = 0,
   DARKBLUE          = FOREGROUND_BLUE,
   DARKGREEN         = FOREGROUND_GREEN,
   DARKCYAN          = FOREGROUND_GREEN | FOREGROUND_BLUE,
   DARKRED           = FOREGROUND_RED,
   DARKMAGENTA       = FOREGROUND_RED | FOREGROUND_BLUE,
   DARKYELLOW        = FOREGROUND_RED | FOREGROUND_GREEN,
   DARKGRAY          = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
   GRAY              = FOREGROUND_INTENSITY,
   BLUE              = FOREGROUND_INTENSITY | FOREGROUND_BLUE,
   GREEN             = FOREGROUND_INTENSITY | FOREGROUND_GREEN,
   CYAN              = FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE,
   RED               = FOREGROUND_INTENSITY | FOREGROUND_RED,
   MAGENTA           = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE,
   YELLOW            = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN,
   WHITE             = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
}Foreground_Color;
 
 
short GetTextColor(void) //Obtengo el color de texto actual
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   CONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInfo;
   GetConsoleScreenBufferInfo(hStdOut, &ConsoleScreenBufferInfo);
   return ConsoleScreenBufferInfo.wAttributes;
}
 
void SetTextColor(short colorTexto) //Envio el color de texto deseado
{
   HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
   SetConsoleTextAttribute(hStdOut, colorTexto);
}
 
int main () {
   int j, p, cantidad;
   int *muestra;
   bool encontrado;
   short colorOriginal;
 
   srand(time(NULL));
   cout << " \n\n::::::: GENERADOR DE NUMEROS ALEATORIOS :::::::\n\n" << endl;
   cout << "Ingrese la cantidad de numeros a generar: ";
   cin >> cantidad;
 
   muestra = new int[cantidad];
   encontrado=false;
 
   for(p=0 ; p < cantidad && encontrado != true; p++)
   {
      muestra[p] = 1 + rand() % 365;
      for(j=0;j<p && p > 0 && encontrado != true;j++)
      {
         if(muestra[j]== muestra[p])
            encontrado=true;
      }
   }
   p--;
   j--;
   cout << "\n\nLa cantidad de elementos generados es: [ " << p+1 << " ]" << endl << endl;
   if(encontrado == true)
      cout << "El valor repetido es: [ " << muestra[p] << " ]" << endl << endl;
   else
      cout << "No se repitio ningun valor." << endl << endl;
 
   cout << "LISTADO DE LOS VALORES GENERADOS" << endl;
 
   for(int x=0;x<=p;x++)
   {
      if(x%9 == 0)
         cout << endl;
      if(encontrado == true && (x==j || x==p)){
         colorOriginal=GetTextColor();
         SetTextColor(RED);
         cout << "[ " << setw(3) << muestra[x] << " ] ";
         SetTextColor(colorOriginal);
      }else{
         cout << "[ " << setw(3) << muestra[x] << " ] ";
      }
   }
   cout << endl << endl;
 
   delete [] muestra;
   system("PAUSE");
   return 0;
}

Le he puesto algunas tonterias para que se vea mas mono pero bueno, se pueden quitar si no te valen jejeje.
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