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