Vous êtes sur la page 1sur 14

Curso: Lenguaje de Programacin

Profesor: David Allasi B.

Horario: 0342

Semana 2
Enunciado Archivo: lab1-p1.c
Se le solicita crear un programa en C, que permita simular el funcionamiento de una
calculadora simple.
Para desarrollar el programa debe tener en cuenta lo siguiente:
Las operaciones a considerar son: SUMAR, RESTAR, MULTIPLICAR y DIVIDIR.
Deber interactuar con el usuario, tanto para el ingreso de los operandos como
para el ingreso de la operacin a realizar, a travs de un men tal como se
muestra a continuacin en el ejemplo:

(Primer Paso)
Ingrese el primer operando: 5
(Segundo Paso)
Menu de operacin:
---> 1 - SUMAR
---> 2 - RESTAR
---> 3 - MULTIPLICAR
---> 4 - DIVIDIR
Ingrese la opcin: 4
(Tercer Paso)
Ingrese el segundo operando: 3
(Cuarto Paso)
Resultado de 5.00 / 3.00 = 1.67

Nota:

Los datos mostrados en el ejemplo son referenciales, el programa debera funcionar


en general para diferentes datos.

Para el desarrollo del programa deber hacer uso de constantes, formatos de


impresin, los operandos pueden ser decimales y se debe visualizar la impresin del
resultado con un formato de 2 decimales como mximo (ver ejemplo). Deber
considerar adems todas las validaciones que estime convenientes.

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

Semana 3
Enunciado del Archivo: e1-p4.c
Un nmero narcisista es aquel que es igual a la suma de cada uno de sus dgitos elevados a la "n"
potencia (donde "n" es el nmero de cifras del nmero). La metfora de su nombre alude a lo
mucho que parecen "quererse a s mismos" estas cifras. Por ejemplo, el 153 es un nmero
narcisista puesto que 13 + 53 + 33 = 1 + 125 + 27 = 153. Los primeros nmeros narcisistas son: 1,
2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474 y 54748.
Se le solicita desarrollar un programa que dado un nmero natural positivo (n) que se lee por
teclado, deber imprimir luego los primeros n nmeros narcisistas. Se volver a solicitar el
nmero hasta que n sea positivo.
El formato de entrada de datos e impresin ser:
Ingrese la cantidad de los primeros nmeros narcisistas (n): -5
n debe ser positivo!
Ingrese la cantidad de los primeros nmeros narcisistas (n): 17
Los primeros n nmeros narcisistas son: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153,
370, 371, 407, 1634, 8208, 9474 y 54748

NOTA: No se permite el uso de funciones.

Semana 4
Enunciado del Archivo filas.c
Se pide elaborar un programa en C que, dado un valor que corresponde al nmero de
filas, permita imprimir un tringulo de asteriscos, de manera que ambos lados del
tringulo sean simtricos.
El formato de entrada y salida de impresin deber ser como en el ejemplo:
Prueba 1:

Ingrese el nmero de filas: _

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

Semana 5
Enunciado del Archivo admisin.c
En una universidad se acaban de modificar los requisitos de admisin a 4 carreras: Arte,
Teatro, Danza y Msica.
El proceso de admisin contempla una prueba acadmica, la cual incluye matemticas
y verbal, y tambin contempla una prueba de aptitud artstica.
Los nuevos requisitos contemplan lo siguiente:

Para ingresar a Arte debe obtenerse al menos 500 puntos en la prueba


acadmica y al menos 500 puntos en la prueba artstica.
Para ingresar a Teatro debe obtenerse al menos 450 puntos en la prueba
acadmica y al menos 600 puntos en la prueba artstica.
Para ingresar a Msica o Danza debe obtenerse al menos 420 puntos en la
prueba acadmica y al menos 500 puntos en la prueba artstica.
Adems, se sabe que los puntajes mximos posibles a obtener en matemticas, verbal
y la prueba artstica son 500 puntos, 500 puntos y 800 puntos, respectivamente.
Se le solicita crear un programa en C, que permita verificar la condicin de admisin de
un postulante a una de estas 4 carreras, sabiendo el puntaje de su prueba acadmica
(matemticas y verbal) y de su prueba de aptitud artstica.
Para desarrollar el programa debe tener en cuenta lo siguiente:
Deber interactuar con el usuario, ingresando los datos a travs de un men tal
como se muestra a continuacin en el ejemplo:

(Primer Paso)
Menu Carreras:
---> 1 - ARTE
---> 2 - TEATRO
---> 3 - DANZA
---> 4 - MUSICA
Ingrese la opcion: 4
(Segundo Paso)
Ingrese el puntaje en matematicas: 250
Ingrese el puntaje en verbal : 180
Ingrese el puntaje en prueba artistica : 550
(Tercer Paso)
Resultado : Admitido

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

Nota:

Los datos mostrados en el ejemplo son referenciales, el programa debera funcionar


en general para diferentes datos.

Para el desarrollo del programa deber hacer uso de constantes, formatos de


impresin, los puntajes pueden ser decimales y deben tener un formato de 2
decimales como mximo.

Deber considerar adems todas las validaciones que estime convenientes.

Enunciado del Archivo das.c


Se sabe que un ao es bisiesto si es divisible entre 4, excepto si es divisible entre 100
pero no entre 400. Se sabe tambin que los meses de enero, marzo, mayo, julio, agosto,
octubre y diciembre tienen 31 das; abril, junio, septiembre y noviembre 30 das; febrero
tiene 28 o 29 das dependiendo si es ao bisiesto o no.
En base a la informacin dada, desarrolle un programa que calcule la cantidad de das
transcurridos desde el 1er da del ao, utilice para ello solo condiciones if-else.
No olvide validar la fecha ingresada por teclado. A continuacin se muestran algunas
pantallas que se veran si su programa corriera correctamente.
Ingrese una fecha determinada [dd mm aaaa] : 0 12 2011
Fecha invlida, vuelva a ejecutar el programa!
Ingrese una fecha determinada [dd mm aaaa] : 12 13 2011
Fecha invlida, vuelva a ejecutar el programa!
Ingrese una fecha determinada [dd mm aaaa] : 29 2 2011
Fecha invlida, vuelva a ejecutar el programa!
Ingrese una fecha determinada [dd mm aaaa] : 12 12 2012
El nmero de das transcurridos desde el 1er da del ao es: 347
Ingrese una fecha determinada [dd mm aaaa] : 13 1 2012
El nmero de das transcurridos desde el 1er da del ao es: 13

Nota:
Puede utilizar el / para dividir nmeros enteros y % para obtener el residuo de dos
nmeros enteros

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

Enunciado del archivo musical.c


Realizar un programa que sea un juego musical. El juego consiste en emitir un tono
musical de manera aleatoria el cual deber ser adivinado por el usuario, quien tiene 3
oportunidades para adivinar la nota que son.
El formato de entrada de datos y salida de impresin sera de acuerdo con los siguientes
casos:
Caso de acierto
Bienvenido al juego de reconocimiento de tonos

//Se emite el sonido de una nota


Que nota se ha tocado?
DO RE MI FA SOL LA SI
=====================
C

C
FELICITACIONES!!! la nota tocada fue DO
Caso de error
Bienvenido al juego de reconocimiento de tonos

//Se emite el sonido de una nota


Que nota se ha tocado?
DO RE MI FA SOL LA SI
=====================
C

F
No acert, tiene 2 opcion(es) mas

//Se vuelve a emitir el sonido de la nota


G
No acert, tiene 1 opcion(es) mas

//Se vuelve a emitir el sonido de la nota


D
Lo sentimos, se le acabaron las opciones, la nota era LA

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

Nota:
Para generar un nmero aleatorio se recomienda utilizar la funcin rand(), invocando
a la librera <stdlib.h> y para sembrar la semilla a srand(time(NULL)), llamando
a la librera <time.h>
Para emitir un sonido se recomienda utilizar la funcin Beep() de la librera
<windows.h>, que tiene como argumentos la frecuencia fundamental de la nota y la
duracin del tono en milisegundos. Se muestra un ejemplo:
Beep(440,500); //Se escuchar un tono a 440 Hz correspondiente a la nota LA con una
duracin de 0.5 segundos
Tabla de Frecuencias Musicales
DO

RE

MI

FA

SOL

LA

SI

261

293

329

349

392

440

494

Enunciado del archivo romano.c


Los nmeros romanos se emplean en muchos medios y las reglas para formar un nmero
romano se detalla a continuacin:
La numeracin romana utiliza siete letras maysculas a las que corresponden los
siguientes valores: I= 1, V= 5, X= 10, L= 50, C= 100, D= 500, M=1000. Ejemplo: XVI=16,
LXVI = 66.
Si a la derecha de una cifra en romana se escribe otra igual o menor, el valor de sta se
le suma a la anterior. Ejemplos: VI = 6, XXI = 21, LXVII = 67.
La cifra I colocada delante de la V o la X le resta una unidad; la X, precediendo a
la L o a la C, les resta diez unidades y la C, delante de la D o la M, les resta cien
unidades. Ejemplos: IV = 4, IX = 9, XL = 40, XC = 90, CD = 400, CM = 900. Ojo que no existe
la combinacin IM, IL, IC, ID, XM, XD.
En ningn nmero se puede poner una misma letra ms de tres veces seguidas. Ejemplo:
XIII = 13, XIV = 14, XXXIII = 33, XXXIV = 34.
La L, la V y la D no pueden duplicarse porque las otras letras (X,C,M)
representan su valor duplicado.
Si entre dos cifras cualesquiera existe otra menor, sta restar su valor a la siguiente.
Ejemplos: XIX = 49, LIV = 54, CXXIX = 129.
Se le pide elaborar un programa en C que permita al usuario ingresar un nmero en romano,
carcter por carcter, se ingresara 0 cuando quiera terminar el ingreso del nmero y permita
mostrar su representacin en notacin decimal.
No se debe usar cadena de caracteres para formar el nmero romano. La representacin en
decimal se deber mostrar al final del ingreso de todos los caracteres del nmero romano.
Solo tenga en consideracin las reglas definidas lneas arriba.

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

Enunciado del archivo tarjetas.c


Un banco contrata a una persona para que digite, uno por uno, los nmeros de las
tarjetas que han sido retenidas en sus cajeros en esta ltima semana. A esta persona
se le entregan todas las tarjetas, en forma fsica, para que pase los 16 dgitos de todas
las tarjetas a un archivo de textos. Luego, estos sern procesados para su bloqueo. Sin
embargo, no se confa en que haya podido realizar un buen trabajo, por lo tanto se
procede a realizar la verificacin de cada uno de los 16 dgitos de todas las tarjetas
presentes en el archivo. Para esto utiliza el algoritmo de Luhn, que permite verificar si
los dgitos de una tarjeta son vlidos, y consiste en realizar los siguientes pasos:
Debe leer todos los caracteres de la tarjeta y, de acuerdo a su posicin, debe establecer
un valor de dgito, que luego ser sumado y ste ser el valor a verificar.

Para los dgitos de las posiciones impares: se multiplicar el valor del dgito por
2 y, en caso mayor o igual a 10, se restar 9.

Para los dgitos de las posiciones pares: se tomar el mismo valor del dgito.

Entonces, una tarjeta ser vlida si el resultado de la suma es mltiplo de 10.


Posicin

10 11 12 13 14 15 16

Tarjeta

Valor de dgito

10

16

10

Valor a sumar

Suma

Por ejemplo:

60

En este caso la suma de los valores de dgitos es 60, mltiplo de 10, por lo que es una
tarjeta VISA vlida.
Adems, se solicita determinar cul es el emisor de la tarjeta retenida, para lo que se
tienen las siguientes reglas:

Si la primera cifra es 3 es American Express


Si la primera cifra es 4 es VISA
Si la primera cifra es 5 es MasterCard
Si la primera cifra es 6 es Discover

Se solicita un reporte de las tarjetas, el nombre del emisor y si es o no una tarjeta vlida.
Ejemplo:
Formato de Datos de ingreso:
Nmero de tarjeta
(Fin de datos con *)
4551038049343051

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

4213550336226328
4557880174081376
5634010085413016
4213550321714429
4634010085413016
4634010085413015
*
Reporte:
4551038049343051
Emisor de Tarjeta: VISA
OK: Tarjeta vlida
4213550336226328
Emisor de Tarjeta: VISA
OK: Tarjeta vlida
4557880174081376
Emisor de Tarjeta: VISA
OK: Tarjeta vlida
5634010085413016
Emisor de Tarjeta: MasterCard
ERROR: Tarjeta invlida
4213550321714429
Emisor de Tarjeta: VISA
OK: Tarjeta vlida
4634010085413016
Emisor de Tarjeta: VISA
OK: Tarjeta vlida
4634010085413015
Emisor de Tarjeta: VISA
ERROR: Tarjeta invlida

Semana 6
Enunciado del archivo: laberinto.c (recuerden que esta solucin est incompleta)
El juego de recorrido es un juego tradicional, el cual consiste en que los jugadores van de casilla
en casilla por turnos, avanzando de acuerdo al nmero que saquen al tirar los dados y en cada
casilla pueden existir actividades que los hagan avanzar o retroceder casillas, todo esto se repite
hasta que uno llegue a la meta.
Vamos a realizar una adaptacin de este juego y para ello vamos a necesitar un tablero de 5x7,
el cual va a ser simulado por medio de un arreglo bidimensional de enteros. El juego tendr 2

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

jugadores los cuales iniciarn en los extremos del tablero y ganar aquel que llegue al final
primero.
Las opciones del juego son:
1.- Crear Tablero.- En esta opcin se debe inicializar el tablero de 5x7 para lo cual deben generar
para cada elemento del arreglo un nmero aleatorio (positivos o negativos) entre -5 y 5. Ojo los
nmeros aleatorios dado como ejemplos de clase son para nmeros positivos, asuma que
genera nmeros aleatorios intercalados (positivo y negativo).
2.- Jugar.- En esta opcin se inicia el juego, se deben realizar turnos de juego, para ello inicia el
jugador A y luego el jugador B y as se van turnando. Por cada turno se debe simular el lance de
un dado, para ello deben generar un nmero aleatorio entre 1 y 6. De acuerdo al nmero que
obtuvieron, el jugador avanza un nmero de casillas igual al nmero que se ha generado
aleatoriamente. Al llegar a la casilla que se avanz se obtiene el elemento que se encuentra esa
casilla y de acuerdo al valor de dicho elemento se avanza (nmero positivo) o se retrocede
(nmero negativo) tantas casillas como el valor del elemento obtenido. Esta accin se repite
hasta que el jugador caiga en una casilla que contenga un elemento de valor 0. Ah acaba su
turno y se prosigue con el siguiente jugador. El juego termina cuando uno de los 2 jugadores
llega a la meta. Al finalizar cada jugada se debe pintar el tablero con las posiciones del jugador
A y B para ir viendo su desplazamiento.
Inicio

Fin
Se le pide elaborar un programa en C que permita simular el juego en mencin para ello al inicio
mostrar un men con 2 opciones.
Bienvenido al juego de recorrido
***************************
Ingese (1) Crea tablero
(2) Jugar
Ingrese opcin: 1
Tablero Creado
Ingrese opcin: 2
Turno Jugador A.
El dado gener el nmero 3

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

El tablero queda as.


OOOOOAO
OOOOOOO
OOOOOOO
OOOOOOO
OOOOOOO
Turno Jugador B
El dado gener el nmero 5
El tablero queda as.
OOOOOAO
OBOOOOO
OOOOOOO
OOOOOOO
OOOOOOO
Se puede observar que en la jugada del jugador A que le tocaba avanzar 3 casillas al final avanzo
5, esto debido a que en la casilla 3 puede existir un nmero 2, el cual le da la posibilidad de
avanzar 2 casillas ms y en la casilla 5 existe un nmero 0 el cual le permite quedarse en esa
casilla.
Lo mismo paso con el jugador B el cual avanzo 5 casillas producto del lance del dado, sin embargo
en esa casilla debe existir algn nmero que genero una combinacin que le permiti llegar a la
casilla que se visualiza donde encontr un nmero 0 el cual le permiti quedarse en esa casilla.
Tenga en cuenta que para la impresin los O representan las casillas del tablero donde no se
encuentran posicionados los jugadores y en las casillas donde estn los jugadores se debe pintar
su letra respectiva. Para la imagen mostrada por ejemplo, el jugador B le est ganando al jugador
A. Esta impresin del tablero la deben realizar al finalizar cada turno.
Ojo debe validar que antes de jugar, se debe haber creado el tablero, en caso ingrese primero
la opcin 2 de jugar y no haya generado el tablero previamente se deber mostrar un mensaje
de error El tablero no ha sido creado.

Enunciado del archivo: vampiros.c


Un nmero vampiro es aquel que se obtiene a partir del producto de dos nmeros obtenidos a
partir de sus dgitos. Por ejemplo: 2187 = 27 x 81.
Se le solicita desarrollar un programa que dado un nmero natural positivo (n) que se lee por
teclado, deber mostrar un mensaje indicando si el nmero es vampiro o no. Se volver a
solicitar el nmero hasta que n sea positivo.
El formato de entrada de datos e impresin ser:
Ingrese un nmero natural positivo(n): 241

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

El nmero 241 NO es vampiro!


Ingrese un nmero natural positivo(n): 2187
El nmero 2187 S es vampiro!

NOTA: No se permite el uso de funciones.

Semana 7
Enunciado del archivo: ahorcado_preliminar.c (recuerde que aqu solo hicimos la
primera opcin de cargar palabras.)
El ahorcado es un juego donde el objetivo es adivinar una palabra o frase relacionado a un tema.
Para esta pregunta solo se deber adivinar palabras, el nmero de palabras a cargar es 3 y el
nmero mximo de caracteres por palabra es 15. El tema referente a las palabras a ingresar es
Cursos de EEGGCC.
El usuario solo puede equivocarse 3 veces como mximo en el juego, en caso se equivoque ms
de 3 veces perder y en caso logr adivinar toda la palabra antes de las 3 equivocaciones entonces
ganar.
El juego empieza con un men de 3 opciones: (1) Cargar palabras del juego, (2) Jugar y (3) Salir.
Cuando termine de jugar, as gane o pierda, se volver a mostrar las opciones del men y en caso
el usuario ya no desee jugar ms deber seleccionar la opcin 3 de salir, solo cuando el usuario
seleccione esta opcin el programa terminar su ejecucin.

CONTINA

Cuando inicia el juego se muestra el men de la siguiente manera:


Bienvenido al juego del ahorcado
Las opciones son:
(1) Cargar palabras para el juego
(2) Jugar
(3) Salir
Ingrese opcin:

Al inicio del juego no existen palabras por adivinar por lo que la primera opcin del men a
ejecutar es la opcin 1: Cargar palabras para el juego. En caso empiece a Jugar sin haber ejecutado
antes la carga de palabras para el juego le mostrar el siguiente mensaje:
No puede Jugar sin antes cargar las palabras para el juego.
Ingrese opcin:

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

Cuando ingrese la opcin 1, el usuario ingresar las palabras a cargar para el juego, de la siguiente
manera:
Ingrese palabra 1: MB
Ingrese palabra 2: IC
Ingrese palabra 3: CAL1
Palabras cargadas, ya puede empezar a jugar:

Luego de cargar las palabras a utilizar en el juego, ya puede ejecutar la opcin 2 que es Jugar,
cuando eso ocurra se le mostrar al usuario el siguiente mensaje:
Bienvenido al juego del ahorcado
Las opciones son:
(1) Cargar palabras para el juego
(2) Jugar
(3) Salir
Ingrese opcin: 2

El tema relacionado es Cursos de EEGGCC

La palabra a adivinar es:


_ _ _ _
Ingrese carcter a adivinar: C

La palabra a adivinar es:


C _ _ _
Ingrese carcter a adivinar: H
El carcter no se encuentra en la palabra, solo puede equivocarse 2 veces ms

La palabra a adivinar es:


C _ _ _
Ingrese carcter a adivinar: A

La palabra a adivinar es:


C A _ _
Ingrese carcter a adivinar: M
El carcter no se encuentra en la palabra, solo puede equivocarse 1 vez ms

La palabra a adivinar es:


C A _ _

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

Ingrese carcter a adivinar: J


El carcter no se encuentra en la palabra, ya no puede equivocarse.

La palabra a adivinar es:


C A _ _
Ingrese carcter a adivinar: Y
El carcter no se encuentra en la palabra.
Ud. Perdi.

Para seleccionar cul de las 3 palabras cargadas se utilizar en el juego, se deber elegirCONTINA
aleatoriamente una de ellas utilizando la funcin rand() para ello deber utilizar las libreras
<stdlib.h> y <time.h>. Por ejemplo si deseo generar un nmero aleatorio entre 0 y 10 el cdigo
seria:
srand( time(NULL));
aleatorio = rand()%11;

Tenga en cuenta que de acuerdo con el tamao de la palabra elegida para el juego, se mostrar el
smbolo _ por cada letra o nmero que no haya sido an descubierta.
Se le pide a Ud. desarrollar un programa en C que permita ejecutar el juego de acuerdo a lo
indicado en la pregunta. Deber tener en cuenta todas las validaciones indicadas y seguir la lgica
descrita del juego, por ningn motivo se podr alterar la forma de juego.

Enunciado del archivo: capicuaArreglo.c


Un nmero es capica si se cumple que al leerlo de izquierda a derecha es igual que
leerlo de derecha a izquierda:
Por ejemplo:
56988965 es capica
458896 no es capica
Realice un programa en C que indique si un nmero ingresado al sistema es capica o
no. El formato de entrada de datos e impresin ser por ejemplo:
Ingrese el nmero:

56988965

El nmero 56988965 s es capica


Ingrese el nmero:

6988965

El nmero 6988965 no es capica

NOTA: Solo utilice las funciones printf, scanf y system, para todo los dems deber de
usar arreglos, estructuras de control y/o condiciones.

Enunciado del archivo: ordenarPalabra.c

Curso: Lenguaje de Programacin


Profesor: David Allasi B.

Horario: 0342

Desarrolle un programa que permita ordenar palabras de modo descendente. Para ello,
se lee la cantidad de palabras y luego se ingresan las palabras acorde a dicha cantidad.
Para finalmente mostrar las palabras ordenadas descendentemente. Asuma que las
palabras siempre se ingresan en minscula.
Al comparar las palabras, se comparan los caracteres de izquierda a derecha de cada
palabra, es decir, si hubiera coincidencia en el primer caracter se comparan los
segundos caracteres, y as sucesivamente. Si al comparar dos palabras, una est
contenida en la otra, la de menor tamao es considerada menor.
El formato de entrada de datos e impresin ser por ejemplo:
Ingrese la cantidad de palabras: 3
Palabra 1: iracundo
Palabra 2: ironia
Palabra 3: ira

Las palabras ordenadas descendentemente son:


ironia
iracundo
ira

NOTA: Solo utilice las funciones printf, scanf y system, para todo los dems deber de
usar arreglos, estructuras de control y/o condiciones.

Enunciado del archivo: repetidos.c


Se le pide elaborar un programa C que permita verificar si un nmero contiene dgitos repetidos,
y en caso de ser as, se debe mostrar al menos uno de los dgitos repetidos.

Semana 8
Enunciado del archivo: pupi.c
Se le pide elaborar un programa C que permita simular el juego del PUPILETRAS, para lo cual
ingresa una palabra a buscar y debe indicar si la palabra existe dentro del pupiletras y en qu
posicin inicia y en qu posicin termina. Ojo, recuerde que en un pupiletra la palabra se puede
buscar tanto de manera horizontal, vertical y diagonal.

Vous aimerez peut-être aussi