elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Opinad
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Opinad  (Leído 2,136 veces)
cNoob

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Opinad
« en: 18 Junio 2016, 12:08 pm »

Hola!
He hecho un simple programa el cual genera números aleatorios, pero antes tu le indicas un numero que ha de buscar en la lista de números aleatorios, la cantidad de veces que debe buscarlo y el "rango" de números que genera (podríamos decir que lo que tu introduces es arco y luego hace lo siguiente: rand()%arco ).Y bueno, debido a mi poca experiencia programando estaría que me dieseis vuestra opinión y tips para mejorarlo.
Gracias :D

Código
  1. //HECHO POR CNOOB
  2. //18 DE JUNIO DE 2016
  3.  
  4. #include <iostream>
  5. #include <cstdlib>
  6. #include <ctime>
  7. using namespace std;
  8.  
  9. int Errores(bool error,int numero,int veces,int arco);
  10. void Errores2(int errores2);
  11.  
  12. int main (){
  13.  
  14.    srand(time(0));
  15.    int numero;
  16.    int veces;
  17.    int arco;
  18.    int x;
  19.    int y=1;
  20.    int i=0;
  21.    int posiciones[i];
  22.    int z=0;
  23.    double h;
  24.    bool error;
  25.  
  26.    cout << "Numero que se busca: ";
  27.    cin >> numero;
  28.    cout << "Veces que se buscara: ";
  29.    cin >> veces;
  30.    cout << "Rango de numeros (0-x): ";
  31.    cin >> arco;
  32.    cout << endl;
  33.  
  34.    error=Errores (error,numero,veces,arco);
  35.  
  36.  
  37.    if(error==false){
  38.    while(i<veces)
  39.    {
  40.        x=(rand()%(1+arco));
  41.        cout << y << "    " << x << endl;
  42.        cout << "                     Busqueda: " << (1+i) << endl;
  43.        ++y;
  44.        if(x==numero){
  45.            cout << endl;
  46.            cout << "STOP" << endl;
  47.            cout << "Busqueda " << 1+i << "." << endl;
  48.            cout << endl;
  49.            cout << endl;
  50.            ++i;
  51.            z += (y-1);
  52.            y=1;
  53.        }
  54.    }
  55.  
  56.  
  57.    h = (z/veces);
  58.  
  59.    cout << "Numero buscado: " << numero << endl;
  60.    cout << "Veces que se ha buscado: " << veces << endl;
  61.    cout << "Rango de numeros generado: " << arco << endl;
  62.    cout << endl;
  63.    cout << "Media de posiciones en las que se encontro el " << numero << " ->  "<< h << endl;
  64.  
  65.    Errores2 (h);
  66.  
  67.    cout << endl;
  68.    }
  69.  
  70.    system ("PAUSE");
  71.    return 0;
  72. }
  73.  
  74. int Errores(bool error,int numero,int veces,int arco)
  75. {
  76.    error=false;
  77.  
  78.    if(numero<0){
  79.        cout << "ERROR!" << endl;
  80.        cout << "No se pueden buscar numeros negativos." << endl;
  81.        cout << endl;
  82.        error=true;
  83.    }
  84.  
  85.    if(veces<=0){
  86.        cout << "ERROR!" << endl;
  87.        cout << "No se pueden buscar 0 o menos veces." << endl;
  88.        cout << endl;
  89.        error=true;
  90.    }
  91.  
  92.    if(arco<0){
  93.        cout << "ERROR!" << endl;
  94.        cout << "No se pueden generar rangos negativos." << endl;
  95.        cout << endl;
  96.        error=true;
  97.    }
  98.  
  99.    if(numero>arco){
  100.        cout << "ERROR!" << endl;
  101.        cout << "No se pueden buscar numeros mayores que el rango." << endl;
  102.        cout << endl;
  103.        error=true;
  104.    }
  105.    return error;
  106. }
  107.  
  108. void Errores2(int h)
  109. {
  110.    if(h==0){
  111.        cout << "(Es probable que haya sucedido un error, compruebe los valores introducidos.)" << endl;
  112.    }
  113.  
  114. }
  115.  


En línea

Wannabe programador autodidacta de c++
"Usain Bolt comenzó gateando."
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Opinad
« Respuesta #1 en: 18 Junio 2016, 14:28 pm »

Hola, así por encima:
          1. Pon comentarios porque a priori no sé que es x ni y ni i.
          2. Esto solo se permite en un estándar con extensiones. Para hacerlo en ISO C++ tienes tres opciones:
Código
  1. int posiciones[i]
                   a. Poner directamente un 0 porque i vale 0 en ese momento.
                   b. Hacerlo con memoria dinámica.
                   c. Usar la clase vector.
             Pero definitivamente en ISO C++ no puedes declarar un array con una variable en los corchetes.
          3. La función Errores devuelve un entero, y tu devuelves un booleano, es bueno que respetes los tipos. Si vas a devolver un bool el tipo de retorno debe ser bool. ¿Por qué el compilador no da fallo? Pues porque realiza conversiones implícitas, primero de bool a int y                 luego de int a bool para que no haya problemas.


« Última modificación: 18 Junio 2016, 14:30 pm por avesudra » En línea

Regístrate en
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Opinad
« Respuesta #2 en: 18 Junio 2016, 15:11 pm »

Usar la clase vector. Esa es la mejor opción si estas trabajando con C++.

Ya que las lineas no pueden ser declaradas asi ni en C ni en C++

Código
  1.    int i=0;
  2.    int posiciones[i];

Podrias cambiarlo por

Código
  1. int posiciones[] = new int[i]

Aunque tambien i en ese momento vale 0 creo que no aplica ahi.

Saludos



PD:

En los libros de C que tengo nunca se mencionan los datos bool. Siempre usan un Dato entero para ellos.

Obvio es solo de C++ pero...

Ahorita busque sobre ellos y solo salen referencias vagas pero ninguna referencia oficial.

Segun esto solo encontre

Código:
El tipo bool es una incorporación reciente del lenguaje (1998)

Pero no menciona ninguna fuente. El uso de enteros como booleanos a mi me parece correcto siempre que solo loa manejes como 0 y 1

Voy a abrir un nuevo Tema al respecto para ver ahi los por menores y no desviar mas el Tema.

Cualquier comentario de los datos bool solo aqui:

Tipo de dato bool

Saludos
« Última modificación: 18 Junio 2016, 15:19 pm por AlbertoBSD » En línea

cNoob

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Opinad
« Respuesta #3 en: 18 Junio 2016, 17:50 pm »

A que os referís con que use la clase vector?
En línea

Wannabe programador autodidacta de c++
"Usain Bolt comenzó gateando."
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Opinad
« Respuesta #4 en: 18 Junio 2016, 17:57 pm »

A que os referís con que use la clase vector?

vector es un tipo de objeto de la biblioteca estándar de plantillas que te permite trabajar fácilmente con un array dinámico.En conjunto con otras funciones proporcionadas por la STL(standard template library) te permite hacer una gran variedad de cosas.

Por otra parte, sinceramente primero debes aprender lo básico(evidentemente es lo del principio):

          - Estructuras de control, if - else, do - while, while, for, switch.
          - Funciones. (paso por referencia y valor).
          - Punteros (y entenderlos bien).
          - Objetos (clases y estructuras).
          - Herencia.
          - Polimorfismo y RTTI.
          - Programación Genérica.

Tienes que ir dando pasitos.

Un saludo.
« Última modificación: 18 Junio 2016, 18:01 pm por avesudra » En línea

Regístrate en
cNoob

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Opinad
« Respuesta #5 en: 18 Junio 2016, 19:12 pm »

Wow, muchas gracias por el esquemita de lo que he de ir aprendiendo, lo cierto es que esta un poco hecho un desastre por que el programa originalmente estaba todo en int main y cuando aprendí a hacer funciones lo dividí en cachos. Un saludo! :P
En línea

Wannabe programador autodidacta de c++
"Usain Bolt comenzó gateando."
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hellgast (Killzone) en pixel art by ElSoK Opinad plis
Diseño Gráfico
ElsOk 7 5,685 Último mensaje 12 Enero 2009, 20:36 pm
por Azielito
Opinad sobre la "gráfica"
Hardware
ElGenar0 7 3,190 Último mensaje 6 Abril 2013, 13:32 pm
por Aprendiz-Oscuro
Opinad sobre la gráfica
Hardware
ElGenar0 5 3,480 Último mensaje 21 Abril 2013, 19:31 pm
por Aprendiz-Oscuro
¿Adiós a la seguridad en TOR? Opinad.
Seguridad
asa5 5 3,595 Último mensaje 2 Julio 2013, 17:14 pm
por nym1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines