Sei sulla pagina 1di 12

Jorge Mullor Buitrago,

j.mullor@alu.ucam.edu
(48697958n);
Jorge Borreguero Beltran
j.borreguero@alu.ucam.edu
Programacin 1
(48610701v)

Boletn 2
Curso 2014-2015
Convocatoria: febrero

1) Analiza los siguientes programas e identifica los posibles errores


que sintaxis que
contengan.

a)
if x = 25.0
y = x;
printf(Como x == 25.0, se guarda este valor en y);
else
y = z;
El error recae en que al usar la funcin if, no se ha establecido la condicin
entre parntesis.
b)
if (x < y < z)
printf(%d < %d < %d \n, x, y, z);
El error recae en que la condicin que se le da a if no es vlida, tendra que
ser sustituida por if(x<y && y<z)

c)
if (! x >= 0 & y >= 0 )
printf(Los valores x, y son negativos !! \n");
El uso de la primeras comillas de printf es incorrecto ya que tendran que
ser igual que las que aparecen en el final de la funcin. Tambin es
incorrecto el uso del carcter ! ya que indica negacin, por lo que no se
corresponde con el printf asociado a la funcin if.

2) Realiza un programa en C que calcule el precio de la


factura del agua, teniendo en cuenta que:
a) Se cobra un mnimo de 10 por el derecho a la
distribucin. Este mnimo incluye un coste de 10 m3.
b) Cada m3 adicional hasta los 50 tiene un coste de 0,50 ,
pero si el consumo es superior a 50 m3 el precio de cada m3
(incluidos los 10 primeros) es de 0,75 .
c) Si el titular de la factura es una empresa, se le aplica un
impuesto del 27%.

d) Si el titular de la factura es un particular, se le aplica un


impuesto del 23%.
e) Si el titular de la factura es un pensionista, se le aplica un
descuento del 12%.
#include <stdio.h>
#include <stdlib.h>
#define iemp 0.27f
#define ipar 0.23f
#define ipen 0.12f
int main()
{
int a,c;
float b;
int impuesto;
printf("Si es una empresa ponga 1, si es un particular ponga 2 y si es
pensionista ponga 3 \n");
scanf("%d",&c);
if (c=1){
printf("Introduzca los metros cubicos que va a consumir\n");
scanf("%d",&a);
if (a<=10){
b=10;
printf("Vas a pagar %.2f \n",b+iemp);
}else b=10+c;
if (a<=50){
(b=0.5);
printf("vas a pagar %.2f \n", 10+b*(a-10)+iemp);
}else a>50; b=0.75;
printf("vas a pagar %.2f \n",10+b*(a-10)+iemp);
}
else
if (c=2){
printf("Introduzca los metros cubicos que va a consumir \n");
scanf("%d",&a);
if (a<=10){

b=10;
printf("Vas a pagar %.2f \n",b+ipar);
}else b=10+c;
if (a<=50){
(b=0.5);
printf("vas a pagar %.2f \n", 10+b*(a-10)+ipar);
}else a>50; b=0.75;
printf("vas a pagar %.2f \n",10+b*(a-10)+ipar);
}
else
if (c=3){
printf("Introduzca los metros cubicos que va a consumir \n");
scanf("%d",&a);
if (a<=10){
b=10;
printf("Vas a pagar %.2f \n",b+ipen);
}else b=10+c;
if (a<=50){
(b=0.5);
printf("vas a pagar %.2f \n", 10+b*(a-10)+ipen);
}else a>50; b=0.75;
printf("vas a pagar %.2f \n",10+b*(a-10)+ipen);
}
return 0;
}

3) Hacer un programa que recoja por teclado el da y el mes


de nacimiento y que devuelva el signo zodiacal que le
corresponde. Haz uso de los dos tipos de sentencias
selectivas Estudiadas (if y switch).

#include <stdio.h>
#include <stdlib.h>
int main()
{ int dia, mes;

printf("indique el dia y mes de nacimiento \n");


scanf("%d %d",&dia,&mes);
if((mes==1 && dia<=21) || (mes==2 && dia<=19))
printf("enhorabuena eres acuario");
else if((mes==2 && dia>=20) || (mes==3 && dia<=20))
printf("enhorabuena eres piscis");
else if((mes==3 && dia>=21) || (mes==4 && dia<=20))
printf("enhorabuena eres aries");
else if((mes==4 && dia>=21) || (mes==5 && dia<=21))
printf("enhorabuena eres tauro");
else if((mes==5 && dia>=22) || (mes==6 && dia<=21))
printf("enhorabuena eres geminis");
else if((mes==6 && dia>=22) || (mes==7 && dia<=22))
printf("enhorabuena eres cancer");
else if((mes==7 && dia>=22) || (mes==8 && dia<=22))
printf("enhorabuena eres leo");
else if((mes==8 && dia>=23) || (mes==9 && dia<=22))
printf("enhorabuena eres virgo");
else if((mes==9 && dia>=23) || (mes==10 && dia<=22))
printf("enhorabuena eres libra");
else if((mes==10 && dia>=23) || (mes==11 && dia<=21))
printf("enhorabuena eres escorpio");
else if((mes==11 && dia>=22) || (mes==12 && dia<=21))
printf("enhorabuena eres sagitario");
else if((mes==12 && dia>=22) || (mes==1 && dia<=21))
printf("enhorabuena eres capricornio");
return 0;
}

4) Analiza el siguiente programa.


float dividendo, divisor;
dividendo = 0;
divisor=3.0;
if (divisor != 0)
if (dividendo != 0)
printf("Cociente = %5.3f\n", dividendo/divisor);
else

printf("Error: El divisor es 0!\n");


Si ejecutamos el programa, qu salida produce? Si
inicializamos la variable divisor a 0, qu salida produce el
programa? Modifica el programa conveniente para que se
comporte correctamente. Justifica los cambios que
introduzcas.
Tal cual est el programa la salida que produce es :Error: el divisor es 0!.
Si se inicializa el valor del divisor a 0 el programa no ejecutara nada ya que
para esa condicin no se le ha indicado nada al programa.
Para que el programa funcionase correctamente habra que realizar una
serie de cambios en el cdigo quedando dicho programa de la siguiente
manera:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float dividendo, divisor;
dividendo = 0;
divisor=3.0;
if (divisor != 0 ){
printf("Cociente = %5.3f\n", dividendo/divisor);}
else
printf("Error: El divisor es 0!\n");
return 0;
}

5) Una empresa de prevencin de riesgos laborales ofrece un


servicio de revisin de salud de los trabajadores para las
empresas murcianas. En funcin del nmero de trabajadores
de una empresa, son necesarios enviar distintos mdicos y
enfermeras,
#include <stdio.h>
#include <stdlib.h>
int main(){
int t,m,e;
printf("introduzca el numero de trabajdores\n");
scanf("%d",&t);

if(t<=50){
m=1,e=2;}
else if (t>=51 && 100>=t){
m=2,e=3;}
else if (t>=101 && 175>=t){
m=3,e=4;}
else if (t>=176 && 250>=t){
m=4,e=6;}
else if (t>=251 && 400>=t){
m=6,e=8;}
else if (t>400){
m=8,e=12;}
printf("son necesarios %d medicos y %d enfermeros",m,e);
return 0;

6) Analiza los siguientes programas y evala el


funcionamiento en cada caso. Realiza el seguimiento de la
ejecucin y explica el valor que devuelve en cada caso. Nota:
estos programas hacen uso de un tipo de expresiones en C
llamados expresiones condicionales. Consulta la bibliografa
de la asignatura para estudiar su
funcionamiento y uso.

a)

int i, j, k;
i = 1;
j = 2;
k = i > j ? i : j;
printf (k vale %d\n, k);
k = (i >= 0 ? i : 0) + j;
printf (Ahora k vale %d\n, k);

En el primer printf el valor de k ser el de j, ya que la estructura


condicional expuesta indica que si se cumple la condicin el valor
ser i, y si no ser j.
En el segundo printf el valor de k ser el valor de i mas el valor de j
debido a la utilizacin de los parntesis por lo que valdra 3
b)

int i, j, k;
i = 1;
j = 2;
printf(Valor que se imprime: %d \n, i > j = i: j);
El valor que imprimir en este caso sera el de j ya que i es menor que j.

7) Realiza una aplicacin que solicite al usuario el nmero de


valores numricos que desea introducir por teclado. A
continuacin el programa recoger todos valores (asumir
valores enteros) del usuario. Finalmente, el programa
devolver los siguientes datos:
a) Nmero ms grande
b) Nmero ms pequeo
c) La media de los valores
d) Cantidad de nmeros pares
e) Cantidad de nmeros impartes
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main()
{ int numero,menor,n,i,mayor,a,b,c,d;
float media,e;
mayor=0;
menor=INT_MAX;
printf("cuantos numeros quieres introducir?");
scanf("%d",&numero);
printf("introduzca los %d numeros\n",numero);
e=0;
c=0;
d=0;
if(numero!=0){
for(i=1;i<=numero;i++){

scanf("%d",&n);
a=n;
b=n;
if(n>mayor)

/**< mayor */

mayor=n;
if(a<menor)

/**< menor */

menor=a;
if(b%2==0)

/**< par */

c=c+1;
else

/**< impar */

d=d+1;
e=e+n;
}
media=e/(numero);

/**< media */

}
if(numero==0){
mayor=0;
menor=0;
c=0;
d=0;
media=0;
}
printf("%d es el mayor \n%d es el menor \n",mayor,menor);
printf("hay %d numeros pares \n",c);
printf("hay %d numeros impares\n",d);
printf("la media es %0.3f",media);
return 0;
}

8) Desarrolla un programa en C que reciba un nmero entero


N por teclado, y que calcule
el resultado de la siguiente serie: 1 22 33 44 ... NN
Desarrolla dos versiones de este programa. Una versin
deber hacer uso de la sentencia while estudiada en clase. La
otra versin deber emplear una variante denominada dowhile (investiga en la bibliografa asociada el significado y uso
de
esta sentencia).
Parte 1(while)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()

{
int n,suma,i;
suma=0;
printf("escribe un numero entero\n");
scanf("%d",&n);
while (n>1){
for(i=1;i<=n;i++)
suma = pow(i,i)+pow(i-1,i-1);
break;
}
if(n==1)
suma=1;
printf("la suma es %d",suma );
return 0;
}

Parte 2 (do-while)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n,suma,i;
suma=0;
printf("escribe un numero entero\n");
scanf("%d",&n);
do{
for(i=1;i<=n;i++)
suma = pow(i,i)+pow(i-1,i-1);
break;
} while(n>1);

if(n==1)
suma=1;
printf("la suma es %d",suma );
return 0;
}

9) Desarrolla un programa en C que reciba un entero positivo


N y que devuelva la sucesin de ULAM, la cual se llama as en
honor del matemtico S. Ulam.
Clculo de la sucesin de ULAM
1. Inicia con cualquier entero positivo N.
2. 2. Si el nmero es par, divdelo entre 2. Si es impar,
multiplcalo por 3 y agrgale 1.
3. 3. Obtn sucesivamente nmeros enteros repitiendo el
proceso.
4. 4. El proceso finaliza cuando se obtenga el nmero 1.

#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i;
printf("introduca un numero positivo mayor que 1\n");
scanf("%d",&n);
printf("la sucesion de ULAM es:\n");
while(n!=1){
if(n%2==0)
n=n/2;
else
n=(n*3)+1;
printf("%d ",n);
}
return 0;
}

10) Desarrolla un programa en C que reciba por teclado del


usuario un nmero en coma
flotante X en el intervalo [0,1], y que calcule el valor
aproximado del seno de dicho
nmero sin(x) por medio de la siguiente serie:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{ double seno,signo,dividendo,factorial;
float x;
int n,j,i;
printf("indique el valor del seno que quiere calcular entre 0 y 1\n");
scanf("%f",&x);
n=15;
seno=0;
for(i=0;i<=n;i++){
dividendo=1;
for(j=0;j < 2*i+1;j++)
dividendo=dividendo*x;
factorial=1;
for(j=1;j <= 2*i+1;j++)
factorial= factorial*j;
if(i%2==0)
signo=1;
else
signo=-1;
seno=seno + (dividendo/factorial)*signo;
}
printf("seno de %0.5f = %0.5f\n",x,seno);
return 0;
}

Potrebbero piacerti anche