Sunteți pe pagina 1din 4

Ejercicios Resueltos de Repaso de Fundamentos de Programacin 3

er
Parcial - 2 Trimestre 1A del C.F.G.S. de A.S.I. Pgina 1 de 4


1.- Escribe el cdigo fuente de un programa en lenguaje C llamado valor.c que:

1. Pida al usuario 2 nmeros enteros cualesquiera. NOTA: Puede que el usuario los introduzca desordenados.
2. Obtenga un nmero aleatorio comprendido entre esos 2 nmeros introducidos a travs de una funcin llamada
obtener_numero_aleatorio. Esta funcin recibe como parmetros 2 nmeros enteros, los ordena (identifica cul
es el mayor y cul es el menor), y devuelve un nmero entero aleatorio comprendido entre ellos.
3. Desde la funcin principal se recoger el resultado devuelto por la funcin obtener_numero_aleatorio y se
mostrar en pantalla el mensaje Un nmero aleatorio sera: seguido del nmero devuelto por dicha funcin.


Ejemplo de ejecucin:

I nt r oduzca un nmer o ent er o: 9
I nt r oduzca ot r o nmer o ent er o: 4
Un nmer o al eat or i o ser a: 7

SOLUCIN:
/* valor.c: Programa en C que pide 2 numeros enteros, obtiene un numero
aleatorio comprendido entre ellos y muestra dicho numero en pantalla.
Usara la funcion obtener_numero_aleatorio para obtener dicho numero, la
cual ordena los 2 numeros enteros que toma como parametros y devuelve el
numero entero aleatorio comprendido entre ellos. */

#include<stdio.h> // printf, gets
#include<stdlib.h> // randomize, random, atoi
#include<time.h> // Lo usa randomize

int obtener_numero_aleatorio(int n1, int n2);

int main(){
char cadena[10];
int numero1, numero2;

printf("Introduzca un numero entero: ");
gets(cadena);
numero1=atoi(cadena);
printf("Introduzca otro numero entero: ");
gets(cadena);
numero2=atoi(cadena);

printf("Un numero aleatorio seria: %i\n",
obtener_numero_aleatorio(numero1,numero2));
return(0);
}
int obtener_numero_aleatorio(int n1, int n2){
int resultado;
randomize();
if(n1<n2)
resultado=n1+random(n2-n1+1); //n1 es el minimo y n2 el maximo
else
resultado=n2+random(n1-n2+1); //n2 es el minimo y n1 el maximo
return(resultado);
}


Ejercicios Resueltos de Repaso de Fundamentos de Programacin 3
er
Parcial - 2 Trimestre 1A del C.F.G.S. de A.S.I. Pgina 2 de 4

2.- Escribe el cdigo fuente de un programa en lenguaje C llamado clientes.c que:

1. Almacena los datos de 2 clientes de una empresa.
a. De cada cliente, se necesita almacenar su nombre, su deuda en euros (dato numrico) y su telfono
(dato numrico).
2. Tras guardar los datos de los 2 clientes, se mostrarn sus datos en pantalla en orden, primero el que tiene menor
deuda y despus el que tiene mayor deuda, para ello:
a. Primero se identificar cul es el que tiene menor deuda desde la funcin principal del programa, y se
mostrarn sus datos mediante una funcin llamada mostrar_datos que recibir como parmetro un
cliente y mostrar sus datos (esta funcin no devolver nada). Despus volver a llamarse desde la
funcin principal a la funcin mostrar_datos pasndole como parmetro al segundo cliente para que
tambin muestre sus datos.
b. La funcin mostrar_datos debe mostrar la cantidad en euros con tan slo 2 decimales.


Ejemplo de ejecucin:

I nt r oduzca nombr e: Felipe Lpez Ruiz
I nt r oduzca deuda: 120.25
I nt r oduzca t el f ono: 659123033
I nt r oduzca nombr e: Antonio Soles Molino
I nt r oduzca deuda: 105.10
I nt r oduzca t el f ono: 955971233
Dat os del cl i ent e: Ant oni o Sol es Mol i no, 105. 10, 955971233
Dat os del cl i ent e: Fel i pe Lpez Rui z, 120. 25, 659123033

SOLUCIN:
/* clientes.c: Programa en C que almacena los datos de 2 clientes, y luego
los muestra en pantalla a traves de la funcion mostrar_datos, la cual, toma
como parametro un cliente y simplemente muestra sus datos.
De cada cliente debe guardarse: su nombre, su deuda en euros y su telefono.
Los clientes se ordenaran por deuda de menor a mayor en la funcion principal
de forma que primero se muestren los datos del cliente con menor deuda. */

#include<stdio.h> // printf, gets
#include<stdlib.h> // atof, atol

struct tipocliente{
char nombre[50];
float deuda;
long telefono;
};
void mostrar_datos(struct tipocliente datos);

int main(){
char cadena[10];
struct tipocliente cliente1, cliente2;

printf("Introduzca nombre: ");
gets(cliente1.nombre);
printf("Introduzca deuda: ");
gets(cadena);
cliente1.deuda=atof(cadena);
printf("Introduzca telefono: ");
gets(cadena);
cliente1.telefono=atol(cadena);

printf("Introduzca nombre: ");
gets(cliente2.nombre);
printf("Introduzca deuda: ");
Ejercicios Resueltos de Repaso de Fundamentos de Programacin 3
er
Parcial - 2 Trimestre 1A del C.F.G.S. de A.S.I. Pgina 3 de 4

gets(cadena);
cliente2.deuda=atof(cadena);
printf("Introduzca telefono: ");
gets(cadena);
cliente2.telefono=atol(cadena);

if(cliente1.deuda <= cliente2.deuda){
mostrar_datos(cliente1);
mostrar_datos(cliente2);
}
else{
mostrar_datos(cliente2);
mostrar_datos(cliente1);
}
return(0);
}
void mostrar_datos(struct tipocliente datos){
printf("Datos del cliente: %s, %.2f, %li\n",
datos.nombre, datos.deuda, datos.telefono);
}

3.- Escribe el cdigo fuente de un programa en lenguaje C llamado tabla.c que:

1. Recibe como parmetro obligatorio desde la lnea de comandos un nmero entero comprendido entre 1 y 10.
a) Si no se recibe un nico parmetro, se mostrar el mensaje Error: parmetros incorrectos., se
mostrar en pantalla la sintaxis correcta para la ejecucin del programa, y saldr del programa
devolviendo un cdigo de error.
b) Si se recibe como parmetro un nmero entero que no est entre el 1 y el 10, por ejemplo el 11, mostrar
el mensaje El parmetro esperado debe estar entre 1 y 10., y saldr del programa devolviendo otro
cdigo de error.
2. Si el parmetro recibido est entre el 1 y el 10, mostrar la tabla de multiplicar de ese nmero entero,
empezando por el 1 y terminando por el 10. En la tabla mostrada, los valores deben estar bien alineados.


Ejemplo de ejecucin (ejecutando el programa desde el Smbolo del Sistema):

C: \ t c\ bi n> tabla 14 hola
Er r or : par met r os i ncor r ect os.
Si nt axi s: t abl a numer o
C: \ t c\ bi n> tabla 11
El par met r o esper ado debe est ar ent r e 1 y 10.
C: \ t c\ bi n> tabla 5
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50
C: \ t c\ bi n> tabla 10
10 x 1 = 10
10 x 2 = 20
10 x 3 = 30
10 x 4 = 40
10 x 5 = 50
10 x 6 = 60
10 x 7 = 70
Ejercicios Resueltos de Repaso de Fundamentos de Programacin 3
er
Parcial - 2 Trimestre 1A del C.F.G.S. de A.S.I. Pgina 4 de 4

10 x 8 = 80
10 x 9 = 90
10 x 10 = 100
C: \ t c\ bi n> _


SOLUCIN:
/* tabla.c: Programa en C que recibe un parametro obligatorio desde la
linea de comandos que es un numero entero comprendido entre el 1 y el 10.
Y mostrara la tabla de multiplicar de ese numero entero desde el 1 hasta
el 10.
Si no se recibe un unico parametro: mostrara "Error: parametros incorrectos",
mostrara la sintaxis del programa, y terminara el programa devolviendo un
codigo de error.
Si se recibe un parametro que no esta comprendido entre el 1 y el 10,
mostrara el mensaje "El parametro esperado debe estar entre 1 y 10",
y terminara el programa devolviendo otro codigo error. */

#include<stdio.h> // printf
#include<stdlib.h> // atoi

int main(int argc, char *argv[]){
int i, numero;

if(argc!=2){
printf("Error: parametros incorrectos.\n");
printf("Sintaxis: tabla numero\n");
return (1);
}
else{
numero=atoi(argv[1]);
if (numero<1 || numero>10){
printf("El parametro esperado debe estar entre 1 y 10.\n");
return(2);
}
else{
for(i=1;i<=10;i++)
printf("%2i x %2i = %3i\n",
numero, i, numero*i);
return(0);
}
}
}

S-ar putea să vă placă și