Category Archives: Teoría

Obtener numeros aleatorios en C++ (rand, srand)

Es algo muy frecuente, cuando ya dominas todo eso de pedir y almacenar datos, ahora tu profesor te pedirá que tus programas generen números aleatorios para automatizar el proceso de llenar arreglos y todo eso.

Así que lo primero que tenemos que hacer es incluir la librería:
#include<stdlib.h>
Luego inicializar los números aleatorios incluyendo esto:
srand(time(NULL));
*Actualización: No se porqué con algunos IDE’s tira error con la función time. Solo hay que utilizar además la librería time.h:
#include<time.h>
Luego guardar el número aleatorio en alguna parte:
num=rand();

Eso es básicamente. Para ajustar el rango de número aleatorios podemos hacer varias cosas.

Número aleatorios entre 0 y 50:
num=rand()%51;

Número aleatorios entre 1 y 100:
num=1+rand()%(101-1);

Número aleatorios entre 250 y 420:
num=250+rand()%(421-250);

De forma general es:
variable = limite_inferior + rand() % (limite_superior +1 - limite_inferior) ;

Así que un programa que muestre 10 números aleatorios entre 1 y 10 quedaría así:

#include
#include
using namespace std;

int main()
{
    int num,c;
    srand(time(NULL));
    for(c=1;c<=10;c++)
    {
        num=1+rand()%(11-1);
        cout<<num<<" ";
    }
    cin.get();
}
Advertisements

Cómo dejar de usar conio.h

La librería <conio.h>, es propiedad de Borland y sólo sus compiladores pueden usarla. Por lo tanto significa que conio.h, no es una librería estandar.

La librería conio se utiliza más que nada por sus comandos: getch(), clrscr(), gotoxy(), textcolor(), y textbackground(), los cuales usamos para darle mejor presentación a nuestros programas. Pero pensandolo bien, ¿en verdad necesitamos que los programas en consola se vean bien? La verdad es que no, lo que importa es que funcionen.

Aún así, algunas funciones de la librería conio.h se pueden sustituir con funciones estándares, por ejemplo.

  • Para sustituir getch(), solo necesitamos: cin.get(); la cual está en <stdio.h>. Si no funciona entonces tendremos que ponerla dos veces: cin.get();cin.get();, la cuestión es algo complicada de explicar.
  • Para sustituir clrscr(), solo necesitamos escribir system(“cls”); la cual está en <iostream> (es sin .h, se definiría así: #include<iostream>).
  • Gotoxy() es algo vanal, y además se puede sustituir usando n (espacio hacia abajo) y t (espacio hacia la derecha) dentro de un printf();
  • Y la verdad es que cualquiera te agradecerá que no le pongas fondo rosa y letras amarillas a tus programas.

Cómo usar goto en C++

Goto significa ir a y en c++ nos sirve para que mandar al compilador a alguna parte arbitrariamente, es decir nada más porque sí. No se suele usar mucho pero nos puede sacar de algunos apuros.

Su uso es más o menos así:

codigo codigo

  LUGAR: codigo
  mas codigo
  codigo

  goto LUGAR;

codigo

Primero tenemos que definir un marcador, en este caso yo usé LUGAR (recuerden que ‘LUGAR’ no es lo mismo que ‘lugar’) e inmediatamente después poner dos puntos (:). Cuando sea necesario escribiremos goto seguido de nuestro identificador y punto y como (;).

¿Para qué nos podría servir? Pues en el siguiente post veremos un programa que usa goto.

Cómo usar Gotoxy en C++

Gotoxy significa go to (x, y), es decir ir a (x, y), donde (x, y) es una coordenada de nuestra pantalla. Se suele usar antes de un printf, para poner el texto en una cierta parte de la pantalla.

La pantalla de C++, tiene 24 renglones y 80 columnas, por lo que los valores que le pongamos a nuestro gotoxy no deberán pasar de esos valores. gotoxy pantalla

¿Cómo usar gotoxy()?

Su sintáxis es la siguiente:

gotoxy ( columna , renglón ) ;

Así, si queremos que un mensaje salga en la parte inferior de la pantalla, nuestro programa sería el siguiente:

#include<stdio.h>
#include<conio.h>

int main() {
  gotoxy(5,24);printf("Hola mundo");
  getch();
}

¡Qué fácil! ¿no?