Sei sulla pagina 1di 4

CONTROL DE FUNDAMENTOS DE INFORMATICA - Curso13/14

Nombre:

Grupo de 1
er
curso:

1. (1 punto) Cul es la salida por pantalla del siguiente cdigo?

for (i=1; i<=4; i++)
{
for (j=1; j<=i; j++)
{
if (j==1)
{ printf(" 1"); }

else
{ printf(" 0"); }
}
printf("\n");
}

Solucin:

1
1 0
1 0 0
1 0 0 0




2. (1 puntos) Completa los huecos del siguiente programa para que acabe cuando el usuario
teclee la clave correcta o cuando agote todas las oportunidades de acertarla. Se le dejar
hasta tres oportunidades como mximo para acertar la clave.
Programa:
#include <stdio.h>
#define ClaveP 2013
main()
{ int claveU, cont=0;

do{
printf("Introduce la clave: ");
scanf("%d", &claveU);

cont=cont+1;

if (...claveU!=ClaveP.........)
{
printf("Error!! Clave incorrecta \n");
}
}while(..claveU!=ClaveP.... && cont<3...);

if (...claveU==ClaveP............)
{printf("Acceso permitido \n"); }
else
{ printf("No hay ms opciones \n");}
}



A
3. (2 puntos) Con cada una de las estructuras condicionales (if, if-else, switch) que conoces,
implementa el siguiente problema:
En una empresa hay distintas categoras de empleados, dependiendo de esa categora
cobrarn un determinado sueldo (ver tabla). Se pide que al introducir una categora
determinada nos muestre el sueldo que se debe cobrar, o si la categora no es vlida, dar el
mensaje Categora no vlida.
Categora Sueldo (euros/mes)
1 1500
2 1200
3 1000

#include <stdio.h>
main()
{ int cat;
printf("Introduce la categora (1,2,3) ");
scanf("%d",&cat);

// cdigo con if

if (cat==1)
{printf("Sueldo: 1500 euro\n");}
if (cat==2)
{printf("Sueldo: 1200 euro\n");}
if (cat==3)
{printf("Sueldo: 1000 euro\n");}
if (cat<1 || cat>3)
{printf("Categoria no vlida\n");}

//cdigo con if-else

if (cat==1)
{printf("Sueldo: 1500 euro\n");}
else
{ if (cat==2)
{printf("Sueldo: 1200 euro\n");}
else
{ if (cat==3)
{printf("Sueldo: 1000 euro\n");}
else
{printf("Categoria no vlida\n");}
}
}

//cdigo con switch

switch(cat)
{ case 1: printf("Sueldo: 1500 euro\n");
break;
case 2: printf("Sueldo: 1200 euro\n");
break;
case 3: printf("Sueldo: 1000 euro\n");
break;
default: printf("Categoria no vlida\n");
}
}
4. (3 puntos) Multiplicacin rusa. Realizar un programa que pida dos nmeros enteros y
positivos y devuelva su producto, utilizando para ello el mtodo de la multiplicacin rusa.
Este mtodo consiste en multiplicar sucesivamente por 2 el multiplicando y dividir entre 2
el multiplicador hasta que el multiplicador tome el valor 1. Luego, se suman todos los
multiplicandos correspondientes a los multiplicadores impares.
Dicha suma es el producto de los dos nmeros. La siguiente tabla muestra el clculo
realizado para multiplicar 37 por 12, cuyo resultado final es 12+48+384 = 444

Multiplicador Multiplicando Multiplicador impar Suma
37 12 Si 12
18 24 No
9 48 Si 60
4 96 no
2 192 no
1 384 Si 444
Ejemplo: (en negrita los datos introducidos por el usuario)
Introduce multiplicador: 37
Introduce multiplicando: 12
El resultado de la multiplicacin es 444

#include <stdio.h>
main(){
int x, y, suma;

printf("Dame el multiplicador: ");
scanf("%d", &x);
printf("Dame el multiplicando: ");
scanf("%d", &y);
suma=0;
while (x>=1)
{
if (x%2!=0) //multiplicador impar
{
suma = suma + y; //suma de multiplicandos
}
x = x/2;
y = y* 2;
}
printf("El resultado de la multiplicacin es: %d \n", suma);
}
5. (3 puntos) Realizar un programa que, primero pida un nmero entero y positivo n y despus
pida una secuencia de nmeros cuya entrada finalice cuando el usuario introduzca un 0.
Para cada nmero m introducido en la secuencia el programa deber hacer lo siguiente:
a. Si el nmero es positivo:
- La suma acumulativa de cada uno de los nmeros desde 1 hasta m, mostrando
en pantalla el resultado.
- Contar cuntas de estas sumas da un resultado menor o igual que el nmero
introducido inicialmente n. Mostrando este resultado al finalizar la entrada de
la serie.
b. Si el nmero es negativo, se dar un mensaje de error y se continuar con la lectura
de la secuencia.
Ejemplo: (en negrita los datos introducidos por el usuario)

#include<stdio.h>
main()
{
int n,m,i,cont=0, suma;

printf ("Introduce un nmero");
scanf("%d",&n);
while(n<=0)
{
printf("El nmero tiene que ser entero y positivo.");
printf ("Introduce un nmero");
scanf("%d",&n);
}

printf("Introduce un numero, para finalizar 0: ");
scanf("%d",&m);

while (m!=0)
{
if (m>0)
{
suma=0;
for (i=1;i<=m; i++)
{suma=suma+i;}

printf("La suma acumulativa es %d\n",suma);

if (suma<=n)
{cont++;}
}
else
{printf("El dato tiene que ser positivo, introduce otro\n");}

printf("Introduce un numero, para finalizar 0: ");
scanf("%d",&m);

}
printf("El total de sumas menores o iguales que %d es %d",n,cont);
}

Potrebbero piacerti anche