Curso de Programación en C/Prog107

De WikiCabal
Saltar a: navegación, buscar

Prog107

//Archivo Prog107a.c
static unsigned long int Siguiente = 1;  /* La semilla  */

int rand1( void )
{
  Siguiente = Siguiente * 1103515245 + 12345;

  return (unsigned int) (Siguiente/65536) % 32768;
}

void srand1(unsigned int Semilla)
{
  Siguiente = Semilla;
}

// Archivo Prog107b.c
#include <stdio.h>

extern void srand1( unsigned int x );
extern int rand1( void );

int main( void )
{
  int Contar;
  unsigned Semilla;

  printf( "Ingressa una semilla (entero positivo): " );

  while( scanf( "%u", &Semilla ) == 1 )
  {
    srand1( Semilla );

    for( Contar = 0; Contar < 5; Contar++ )
      printf( "%hd\n", rand1() );

    printf("Ingressa una semilla (entero positivo o q a terminar): ");
  }

  printf( "Listo\n" );

  return 0;
}

Resultado

 
[rrc@llawyr CClase]$ gcc -Wall -o Prog107 Prog107a.c Prog107b.c 
[rrc@llawyr CClase]$ ./Prog107
Ingressa una semilla (entero positivo): 4
1817
24166
10491
3711
15407
Ingressa una semilla (entero positivo o q a terminar): 4
1817
24166
10491
3711
15407
Ingressa una semilla (entero positivo o q a terminar): 7
19564
9806
10868
22674
32531
Ingressa una semilla (entero positivo o q a terminar): 3
17747
7107
10365
8312
20622
Ingressa una semilla (entero positivo o q a terminar): q
Listo
[rrc@llawyr CClase]$ 

Explicación