Curso de Programación en C/Prog107

De WikiCabal
Ir a la navegación Ir a la búsqueda

Prog107

 1 //Archivo Prog107a.c
 2 static unsigned long int Siguiente = 1;  /* La semilla  */
 3 
 4 int rand1( void )
 5 {
 6   Siguiente = Siguiente * 1103515245 + 12345;
 7 
 8   return (unsigned int) (Siguiente/65536) % 32768;
 9 }
10 
11 void srand1(unsigned int Semilla)
12 {
13   Siguiente = Semilla;
14 }
15 
16 // Archivo Prog107b.c
17 #include <stdio.h>
18 
19 extern void srand1( unsigned int x );
20 extern int rand1( void );
21 
22 int main( void )
23 {
24   int Contar;
25   unsigned Semilla;
26 
27   printf( "Ingressa una semilla (entero positivo): " );
28 
29   while( scanf( "%u", &Semilla ) == 1 )
30   {
31     srand1( Semilla );
32 
33     for( Contar = 0; Contar < 5; Contar++ )
34       printf( "%hd\n", rand1() );
35 
36     printf("Ingressa una semilla (entero positivo o q a terminar): ");
37   }
38 
39   printf( "Listo\n" );
40 
41   return 0;
42 }

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