Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Puntoinfinito en 25 Agosto 2012, 11:49 am



Título: Error en definir variables o uso de cin?
Publicado por: Puntoinfinito en 25 Agosto 2012, 11:49 am
A ver, ahora ya estoy bastante metido en la programación C++, y no me puedo creer que no sepa sacar la solución de este error. Teóricamente tendría que estar bien, pero prácticamente no sale tan bien. Solo me marca error en la 8 linea, dice que la variable "max" tiene error.

No se cual, porque metiéndonos en código podemos apreciar como la variable "max " es int y no const (modificable) . Las librerías también están bien... no se que sera.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. unsigned short int num, max;
  5.  
  6. int main()
  7. {
  8.    cin >> max;
  9.    num = rand() % max;
  10.    cout << "\n " << num;
  11.    cin.sync();
  12.    cin.get();
  13.    return 0;
  14. }

Gracias por adelantado cracks;)


Título: Re: Error en definir variables o uso de cin?
Publicado por: BlackZeroX en 25 Agosto 2012, 11:59 am
podría ser un conflicto...

http://www.cplusplus.com/reference/algorithm/max/

Dulces Lunas!¡.


Título: Re: Error en definir variables o uso de cin?
Publicado por: Puntoinfinito en 25 Agosto 2012, 12:05 pm
Ostras...
¡¡¡Se me olvido pensar en las palabras clave!!!
Ahora ya sale todo correctamente, madre mía, error de no fijarse bien.
Muchas gracias y saludos:)


Título: Re: Error en definir variables o uso de cin?
Publicado por: rir3760 en 27 Agosto 2012, 15:45 pm
Tal vez sea un conflicto pero no debería, algunos puntos en relación con el programa:

1) No debe existir un conflicto con la función "max" ya que no incluyes el encabezado <algorithm>.

2) El compilador debería reportar la llamada a "rand" ya que no se tiene acceso a su prototipo (este se encuentra en <cstdlib>).

3) No llamar a "srand" tiene el mismo efecto que "srand(1)". En otras palabras el resultado sera el mismo cada vez que se ejecute el programa.

Así debería funcionar:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include <cstdlib>
  7. using std::rand;
  8.  
  9. int main()
  10. {
  11.   unsigned short int num, max;
  12.  
  13.   cin >> max;
  14.   num = rand() % max;
  15.   cout << num << endl;
  16.  
  17.   cin.sync();
  18.   cin.get();
  19.  
  20.   return 0;
  21. }

Pero sigo pensando que es algo relacionado con el compilador (o la forma en que se ejecuta este).

Un saludo