Laboratorio Número 2: Entrada salida básica

Anuncio
Laboratorio Número 2:
Entrada salida básica
Andrés Felipe Barco Santa
3 de febrero de 2011
1.
Organizar el Ambiente
Cree una carpeta con el nombre laboratorio2. Abra su editor de texto preferido e ingrese
el siguiente codigo:
Nomre del archibo “principal.c”
1 #include <s t d i o . h>
2 #include ” segundo . h”
3 #define MENSAJE ” Este programa descompone un ” \
4
”numero de 3 c i f r a s i n g r e s a d o d e s d e l a t e r m i n a l . ”
5
6 /∗ El metodo main ; l o s argumentos de e n t r a d a en argv . ∗/
7 int main ( int argc , char∗ argv [ ] ) {
8
9
i f ( argc < 2){
10
p r i n t f ( ” Por f a v o r i n g r e s e un numero de 3 c i f r a s . . . \ nabortando . . . \ n” ) ;
11
return 1 ;
12
}
13
int n ;
14
n = a t o i ( argv [ 1 ] ) ;
15
// f s c a n f ( s t d i n ,” %d”,&n ) ;
16
int u = u n i d a d e s ( n ) ;
17
int d = d e c e n a s ( n ) ;
18
int c = c e n t e n a s ( n ) ;
19
p r i n t f ( ” Hola %s \n” ,MENSAJE) ;
20
p r i n t f ( ” Las u n i d a d e s son %d\n” , u ) ;
21
p r i n t f ( ” Las d e c e n a s son %d\n” , d ) ;
22
p r i n t f ( ” Las c e n t e n a s son %d\n” , c ) ;
23
24
return 0 ;
25 }
1
Nombre del archivo “segundo.h”
1
2
3
4
5
6
7
8
9
10
/∗ P r o t o t i p o de f u n c i o n e s ∗/
/∗ Retorna e l p r i m e r d i g i t o ( u n i d a d e s )
d e l numero i n g r e s a d o ∗/
int u n i d a d e s ( int ) ;
/∗ Retorna e l segundo d i g i t o ( d e c e n a s )
d e l numero i n g r e s a d o ∗/
int d e c e n a s ( int ) ;
/∗ Retorna e l u l t i m o d i g i t o ( c e n t e n a s )
d e l numero i n g r e s a d o ∗/
int c e n t e n a s ( int ) ;
Nombre del archivo “segundo.c”
1 // I n c l u y o a r c h i v o de c a b e c e r a s .
2 #include ” segundo . h”
3
4 int u n i d a d e s ( int n ) {
5
int u = n % 1 0 ;
6
return u ;
7 }
8
9 int d e c e n a s ( int n ) {
10
int d = ( n / 1 0 ) % 1 0 ;
11
return d ;
12 }
13
14 int c e n t e n a s ( int n ) {
15
int c = n / 1 0 0 ;
16
return c ;
17 }
A continuación abra una terminal de comandos de linux e ingrese al directorio laboratorio2 (tal vez deba moverse a travez de una jerarquia de carpetas). Una vez en la carpeta
ejecute el siguiente comando “gcc principal.c segundo.c -o introduccion.bin”. El resultado
de este comando lo puede ver listando los elementos de la carpeta, en donde se ha creado
un nuevo fichero llamado “introduccion.bin”. Este es nuestro programa ejecutable. Ingrese
el siguiente comando para ejecutar el programa “./introduccion.bin 473”.
2
2.
Un problema sencillo
El juego Punto y Fama1 consiste en adivinar un número oculto de n cifras (n >= 2)
por medio de algunas pistas (punto o fama). Cuando el usuario dice un número de tres
cifras el sistema debe indicar una o más de las siguientes posibilidades:
Si el número dicho por el usuario es igual al número oculto, el sistema deberı́a notificar
que ganó y el numero de oportunidades.
Si número dicho por el usuario no tiene ninguna cifra del número oculto, el sistema
deberı́a notificar que no sacó nada.
Si el número dicho por el usuario tiene una o más cifras que el número oculto pero
no se encuentran en el orden exacto, el sistema deberı́a notificar que sacó una o más
famas.
Si el número dicho por el usuario tiene una o máss cifras que el número oculto y
se encuentran en el orden exacto, el sistema deberı́a notificar que sacó uno o más
puntos.
Un ejemplo es el siguiente:
Supongan que el número que deben adivinar (oculto) es el 385
649 No le dió a ningún número
028 1 fama
283 1 punto y 1 fama
Y ası́ sucesivamente, la idea es que el usuario, a partir de las pistas que da el sistema
debe llegar a adivinar el número.
Nota: cuando el sistema notifica un punto o una fama, no debe decir qué número es.
Además, dentro de las reglas se tiene que el número escogido como oculto debe ser un
número de 3 cifras y no puede tener números repetidos. Adicional a esto, el número que
ingresa el usuario tampoco debe tener números repetidos. Investigue como obtener numeros
aleatorios en el lenguaje estudiado. Recuerde que debe entregar el código fuente en una
carpeta comprimida llamada laboratorio2.tar.gz, a más tardar el miércoles 9 de febrero a
las 6pm usando el sistema moodle.
1
Ejercicio planteado y formulado por Vı́ctor Alfonso Rivera. Departamento de Ciencias e Ingenierı́a de
la Computacion PUJ-Cali.
3
Descargar