Bolet´ın de ejercicios de la asignatura de INFORM´ATICA

Anuncio
Boletı́n de ejercicios de la asignatura de INFORMÁTICA
para la realización de las prácticas de laboratorio
Escuela Técnica Superior de Ingenierı́a Geodésica, Cartográfica y
Topográfica (UPV)
Pedro Alonso Jordá
Fernando Garcı́a Granada
Miguel Vicente Ripollés
{palonso,fgarcia,mvicente}@dsic.upv.es
Curso 2003-2004
Índice
1. Ejercicios del Tema 2: Elementos básicos de un programa
2
2. Ejercicios del Tema 3: Entrada y salida en C
2
3. Ejercicios del Tema 4: Expresiones
4
4. Ejercicios del Tema 5: Estructuras de Control
6
5. Ejercicios del Tema 6: Descomposición Mudular
11
6. Ejercicios del Tema 7: Vectores
12
1
2
1.
Ejercicios del Tema 3: Entrada y salida en C
2
Ejercicios del Tema 2: Elementos básicos de un programa
Ejercicio 2.1. Declarar la variable a como real de 32 bits, la variable b como real de 64 bits, la variable
c como entera sin signo, la variable d como entero largo y la variable e como carácter.
Ejercicio 2.2. Dadas dos variables a y b reales de 64 bits realizar un programa en C que intercambie
sus valores. Realizar la traza.
Ejercicio 2.3. Realizar un programa en C que, dadas tres variables a, b y c enteras o reales, intercambie
entre sı́ sus valores del modo siguiente: b tome el valor de a, c tome el valor de a y a tome el valor
de c sin utilizar variables auxiliares. Realizar la traza para comprobarlo.
Ejercicio 2.4. Escribir una declaración apropiada para cada una de las siguientes situaciones:
1. dos punteros cuyos objetos sean las variables enteras i y j,
2. un puntero a una variable real y otro a una en doble precisión.
Ejercicio 2.5. ¿Cuáles son los valores de a, b y c después de la ejecución del siguiente programa?
Realizar una traza.
main() {
int a;
char b;
float c;
a = 0;
b = ’J’;
c = 1.12;
}
2.
Ejercicios del Tema 3: Entrada y salida en C
Ejercicio 3.1. ¿Qué imprimirá el siguiente programa?
void main() {
int a=3, b=4;
a==b;
printf ("%d", a);
}
Ejercicio 3.2. ¿Qué imprimirá el siguiente programa?
void main () {
int a=3, b=4, c=5;
a=b==c;
printf ("%d %d %d", a,b,c);
}
Ejercicio 3.3. ¿Qué imprimirá el siguiente programa?
void main() {
int a=1, b=2, c=3;
printf ("%d", a+b==c);
}
Boletı́n de ejercicios de INFORMÁTICA
2
Ejercicios del Tema 3: Entrada y salida en C
3
Ejercicio 3.4. ¿Qué imprimirá el siguiente programa?
void main() {
int a=53, b=47, c;
c = a&&b;
printf ("%d", a+b==c);
}
Ejercicio 3.5. ¿Cuál es la salida del siguiente programa?
void main() {
int a=1;
int b=2;
int c;
c = (a==b) && (a==1);
printf ("%d\n", c);
c = (a=b) && (a==1);
printf ("%d\n", c);
}
Ejercicio 3.6. Implementar un programa que calcule la temperatura en grados centı́grados a partir de
la temperatura en grados Fahrenheit. La fórmula es la siguiente: C = 5/9(F + 32).
Ejercicio 3.7. Implementar un programa que pida dos números al usuario, x e y y, a partir de éstos,
calcule:
a) x + y
b) (x + y)x
c) xx + yy
Ejercicio 3.8. Implementar un programa que pida 3 datos de tipo real y visualice cuántos datos ha
leı́do y cuáles son, además de su suma.
Ejercicio 3.9. Implementar un programa que pida 3 datos de tipo carácter y visualice cuántos datos
ha leı́do y cuáles son.
Ejercicio 3.10. Implementar un programa que calcule los intereses producidos y el capital total acumulado de una cantidad c, invertida a un interés r (en tanto por cien) durante t dı́as. La fórmula
utilizada para el cálculo de intereses es:
I=
c×r×t
.
360 × 100
Ejercicio 3.11. Implementar un programa que calcule el volumen de una esfera, que viene dado por la
fórmula:
4
v = pr3 .
3
Ejercicio 3.12. Implementar un programa que evalúe el polinomio:
3x5 − 5x3 + 2x − 7 .
Boletı́n de ejercicios de INFORMÁTICA
3
Ejercicios del Tema 4: Expresiones
4
Ejercicio 3.13. Implementar un programa que evalúe el polinomio ax5 − bx3 + cx − d donde a, b, c y
d son coeficientes introducidos por el usuario.
Ejercicio 3.14. Implementar un programa que visualice la frase Mais val donar que mendicar tot dia
de la siguiente forma:
Mais
val
donar
que
mendicar
tot
dia
Ejercicio 3.15. Implementar un programa que realice las siguientes acciones:
1. escriba una variable long int en un ancho de 5 caracteres ajustado a la izquierda, y
2. escriba una variable real sin notación exponencial, con 3 decimales en un ancho de 7 caracteres
y justificado a la derecha.
Ejercicio 3.16. Implementar un programa que lea dos números, calcule e imprima su suma, resta,
producto y división.
Ejercicio 3.17. Implementar un programa que visualice el siguiente menú por pantalla:
El
1.
2.
3.
4.
5.
6.
programa permite:
Listar los elementos del fichero
Ordenar los elementos del fichero
A~
nadir elementos al fichero
Borrar elementos del fichero
Consultar el fichero
Modificar elementos del fichero
Ejercicio 3.18. Implementar un programa que calcule el salario neto de un trabajador en función del
número de horas trabajadas, precio de la hora de trabajo considerando unos descuentos fijos al
sueldo en concepto de impuestos de un 20 %.
sueldo bruto = no horas × precio hora
100 − descuentos fijos
sueldo neto = sueldo bruto ×
100
3.
Ejercicios del Tema 4: Expresiones
Ejercicio 4.1. Calcular el resultado de las siguientes expresiones:
int p, q, r;
p=12;
q=3;
r=2;
1. p%q
2. p/q
3. p%q/r
Boletı́n de ejercicios de INFORMÁTICA
3
Ejercicios del Tema 4: Expresiones
5
4. p/q%r
Ejercicio 4.2. Evalúa las siguientes expresiones:
1. 3.5/0.7/0.5
2. ’a’!=’A’&&7
3. 3+2&&5
4. 11||9%4
5. ’M’!=’m’
6. ’M’>=’m’
Ejercicio 4.3. Indica si los valores de e y f son iguales en el siguiente programa:
void main() {
int a=2, b=3, c=6, d=1, e, f;
e = a*b==c*d;
f = a*(b==c)*d;
}
Ejercicio 4.4. Si a y b se declaran de la siguiente forma: int a=1, b=2; ¿Cuál será el resultado de
las siguientes instrucciones?
1. a = a+(b==3);
2. a = a+b==3;
Ejercicio 4.5. Evaluar las siguientes expresiones:
1. ((3+2)*2-15)/2*5
2. 5-2>4 && !(0.5==0.5)
Ejercicio 4.6. Evaluar las expresiones siguientes, dadas las siguientes variables y constantes:
X=1 Y=4 Z=10
PI=3.14 E=2.7
1. 2*X+0.5*Y-1/5*Z
2. X-Y+Z+PI+E+2.576689
3. -3*X+2*Y-1/2*Z
4. 2*Y*Y-6*Y+12
5. PI*X*X>Y || 2*PI*X<=Z
6. (2*Y)-6*Y+12
7. E*(X-1)/(X*Z)/(X/Z)
8. (Y*2*X-6*(Z/10))/2
9. X>3 && Y==4 || X+Y<=Z
10. X>3 && (Y==4 || X+Y<=Z)
11. (-X+(Z*Z-4*X+Y))/2/X
Boletı́n de ejercicios de INFORMÁTICA
4
4.
Ejercicios del Tema 5: Estructuras de Control
6
Ejercicios del Tema 5: Estructuras de Control
Ejercicio 5.1. Implementar un programa en C que dados tres números enteros calcule el máximo y el
mı́nimo.
Ejercicio 5.2. Implementar un programa en C que permita resolver el siguiente problema: determinar
la cantidad total a pagar por una llamada telefónica, teniendo en cuenta lo siguiente:
toda llamada que sea menor o igual de 5 pasos tiene un coste de 10 euros,
cada paso adicional a partir de los 5 primeros cuesta 5 euros.
Ejercicio 5.3. ¿Qué se visualiza en los siguientes programas?
main () {
int i;
i=0;
while (i<6) {
printf ("El valor de i es %d \n", i);
i=i+1;
}
}
main () {
int i;
i=0;
while (i<6) {
i=i+1;
printf ("El valor de i es %d \n", i);
}
}
Ejercicio 5.4. Implementar un programa en C que lea un número entero correspondiente a un mes del
año, validando la corrección del mismo. El programa debe solicitar un nuevo número si el valor
introducido no está en el intervalo [1, 12].
Ejercicio 5.5. Escribir un programa en C para calcular el cociente y resto de la división entera de dos
números enteros, utilizando para ello la operación de resta o sustracción.
Ejercicio 5.6. Escribir un programa en C para determinar si un número entero es primo o no.
Ejercicio 5.7. Escribir un programa en C para calcular la suma de los N primeros números enteros.
Ejercicio 5.8. Realizar un programa en C para calcular, independientemente, la suma de los números
pares e impares comprendidos entre 1 y 200.
Ejercicio 5.9. Escribir un programa en C que lea una serie de números positivos y distintos de 0 y
obtenga el mayor de ellos. Introducir un número negativo para detectar el final de la serie numérica.
Ejercicio 5.10. Escribir un programa en C para calcular y visualizar la suma y el producto de los
números pares comprendidos entre 20 y 400, ambos inclusive.
Boletı́n de ejercicios de INFORMÁTICA
4
Ejercicios del Tema 5: Estructuras de Control
7
Ejercicio 5.11. Escribir un programa en C para calcular la suma de los cuadrados de los 100 primeros
números naturales.
Ejercicio 5.12. Escribir un programa en C que determine, en un conjunto de 100 números naturales:
¿Cuántos son menores de 15?
¿Cuántos son mayores de 50?
¿Cuántos están comprendidos entre 25 y 45?
Ejercicio 5.3. Implementar un programa en C que lea 100 números enteros y calcule la media de los
números positivos y la de los negativos.
Ejercicio 5.14. Implementar un programa en C que, dados dos números enteros, devuelva si uno es
divisor del otro. (Hay que detectar cual es el más pequeño; no se puede utilizar la operación de
división ni de resto; se suponen que los dos números son > 0). La salida del algoritmo debe ser del
tipo:
xxx [no] es divisor de yyy
Ejercicio 5.15. Se dispone de una lista de 100 objetos ordenados por orden creciente de precio. Sabiendo que cada objeto es 50 euros más caro que el anterior, y que el primer objeto cuesta X euros
determinar el precio total a pagar por los 100 objetos.
Ejercicio 5.16. Se dispone de una lista de N aviones numerados desde 1 a N y M aeropuertos numerados del 1 al M . Cada avión sólo puede aterrizar en un aeropuerto cuyo número sea igual al del
avión o múltiplo de éste. Determinar en qué aeropuertos puede aterrizar cada avión.
Ejercicio 5.17. El siguiente programa en C lee un número N y devuelve un número M . Describir en
dos lı́neas cuál es la relación que existe entre N y M y poner un ejemplo de un dato de entrada y
otro de salida. Realizar una traza para N = 2341.
main () {
int A, B, D, N, M=0, i=0, j, k;
printf ("Introduce un numero entero: ");
scanf ("%d", &N);
A=N;
while ((A/10) != 0) {
A=A/10;
i=i+1;
}
B=N;
for (j=i; j>= 0; j--) {
D=1;
for (k=0; k<j; k++ ) D=D*10;
M=M+(B%10)*D;
B=B/10;
}
printf (" El resultado es %d", M);
}
Boletı́n de ejercicios de INFORMÁTICA
4
Ejercicios del Tema 5: Estructuras de Control
8
Ejercicio 5.18. Escribir un programa en C que lea las calificaciones de los alumnos de una determinada
asignatura hasta que el usuario introduzca una calificación negativa, y al final escriba el número
de aprobados, el número de suspendidos, y la calificación media.
Ejercicio 5.19. Implementar un programa en C que, dado un número entero N mayor que cero, calcule
los múltiplos de 3 que hay entre 3 y N y, para cada múltiplo, calcule los divisores del mismo.
Ejemplo: para N = 10 el resultado será
múltiplo=3 divisores del 3 = {1,3}
múltiplo=6 divisores del 6 = {1,2,3,6}
múltiplo=9 divisores del 9 = {1,3,9}
Ejercicio 5.20. Escribir un programa en C que dado un número entero N 1, devuelva otro número
entero N 2 que sea el resultado de eliminar la primera y última cifra de N 1. (Nota: Si N 1 tiene 2
cifras o una sola, entonces N 2 deberá ser 0) Ejemplos: N1=42635 N2=263 N1=23 N2=0
Ejercicio 5.21. Se dispone de un conjunto de N alumnos y para cada uno de ellos las calificaciones
correspondientes a 7 asignaturas (numeradas del 1 al 7). Implementar un programa en C para
calcular el tanto por ciento de aprobados de cada asignatura.
Ejercicio 5.22. Una persona dispone de una cantidad de X euros que quiere repartir a un conjunto
de personas. A cada persona le da una cantidad de dinero proporcional a la edad de la misma;
ası́ por ejemplo, si una persona tiene 17 años recibirá 1.700 euros y si tiene 32 años, recibirá 3.200
euros. El problema consiste en hacer un programa que devuelva el número de personas que podrán
recibir una cantidad de dinero.
Nota: Cuando la cantidad de dinero ya no es suficiente para dársela a una persona, se supone que
no existen más personas y que, por tanto, el algoritmo finaliza.
Ejercicio 5.23. Se dispone de un conjunto de N familias, cada una de las cuales tiene un número de
hijos. Escribir un programa en C capaz de averiguar la media de edad de los hijos de todas las
familias.
Ejercicio 5.24. Un número se dice que es capicúa si leı́do de derecha a izquierda da el mismo resultado
que leı́do de izquierda a derecha. Por ejemplo, los números 22, 343, 5665 o 12321 son capicúas.
Implementar un programa en C que lea desde teclado un número entero mayor de 9 y devuelva si
el número es capicúa o no.
Ejercicio 5.25. Un autobús hace un recorrido por una ciudad desde un punto inicial donde suben N
pasajeros hasta un punto final donde descienden todos. El autobús realiza X paradas intermedias.
Se sabe que en la primera parada se suben 10 personas, y en las siguientes paradas suben siempre
10 personas más que en la parada anterior. Además, en cada una de las paradas desciende el 5 %
de la gente del autobús (sin contar los que suben en dicha parada). ¿Cuántas personas llegarán
hasta el final del trayecto?
Ejercicio 5.26. Una agencia de viajes lanza una oferta de 10 viajes para el verano del 2002. La agencia
desea poner en marcha sólo aquellos viajes en los que el número de personas menores de 10 años
no supere el 10 % de la gente apuntada a dicho viaje. Realizar un programa en C que, para cada
viaje, lea las edades de las personas inscritas en ese viaje (no se puede preguntar a priori el número
de personas inscritas en el viaje) y determine si se pone en marcha o no, escribiendo el resultado
en pantalla.
Boletı́n de ejercicios de INFORMÁTICA
4
Ejercicios del Tema 5: Estructuras de Control
9
Ejercicio 5.27. Un número entero se puede descomponer en una suma de números primos. Por ejemplo
el número 8 se puede poner como 7+1, el número 9 como 7+2, el número 6 como 5+1 y un número
primo se descompone únicamente en sı́ mismo. Escribe un programa en C que devuelva los números
primos en los que se puede descomponer un número entero.
Nota: Algunos números como el número 9 también se podrı́a descomponer como 3+3+3 o 5+3+1,
pero el algoritmo debe usar siempre los números primos mayores posibles y el menor número de
ellos.
Ejercicio 5.28. Dada una serie de N números enteros de 2 o más cifras introducidos desde teclado,
escribir un programa que devuelva cuántos de los números contienen un 0 en alguna de sus cifras.
Ej: 30, 303, 3003, 1031.
Ejercicio 5.29. En una gran área metropolitana el ayuntamiento ha decidido imponer una serie de
restricciones al uso de vehı́culos para paliar los problemas de la contaminación. De este modo,
los vehı́culos con matrı́cula par sólo podrán circular los dı́as pares del año y los vehı́culos con
matrı́cula impar los dı́as impares del año. Sabiendo que una persona tiene un coche de matrı́cula
par y que sólo lo emplea los domingos, se pide un programa que devuelva cuántos y qué dı́as del
año podrá utilizar el coche. Para ello, se conoce la siguiente información:
el primer domingo del año es el 4 de Enero,
los meses impares tienen 31 dı́as y los pares 30 dı́as (se considera el mes de Febrero como un
mes par de 30 dı́as).
Ejercicio 5.30. Implementar un programa en C que calcule el máximo, el mı́nimo y la media de
una lista indefinida de números enteros positivos introducidos desde el teclado. En el caso de
introducir un número negativo dicho número deberá ser rechazado indicando el motivo (a través
de la pantalla) por el que ha sido rechazado (”es negativo”).
Ejercicio 5.31. Implementar un programa en C que lea un número entero N , tal que:
1. verifique que N > 0,
2. dibuje un cuadrado de lado N como el de los ejemplos que aparecen a continuación:
N=1
*
N=2
**
**
N=3
***
* *
***
N=4
****
* *
* *
****
N=5
*****
*
*
*
*
*
*
*****
Ejercicio 5.32. Escribir un programa en C que, dado un número N , genere la siguiente secuencia de
números:
N=1
N=2
N=3
N=4
N=5
1
1,
1,
2
1,
2,
1,
2,
3
2
2, 3
2, 3, 4
3
2, 3, 4, 5
3, 4
Boletı́n de ejercicios de INFORMÁTICA
4
Ejercicios del Tema 5: Estructuras de Control
10
Ejercicio 5.33. Dado un número entero N > 0, escribir un programa que devuelva el siguiente resultado:
2 veces el número N ,
3 veces el número N − 1,
4 veces el número N − 2,
5 veces el número N − 3,
...
N + 1 veces el número 1.
Ejemplo: para N = 5, el programa debe escribir la siguiente secuencia de números: 5, 5, 4, 4, 4, 3,
3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1.
Ejercicio 5.34. Dado un número entero N > 0, escribir un programa que devuelva el siguiente resultado:
N veces el número N ,
N − 1 veces el número N − 1,
N − 2 veces el número N − 2,
...
1 vez el número 1.
Ejercicio 5.35. Dado un número N , escribir un programa en C que genere todos los números pares
múltiplos de 7 que hay entre 1 y N .
Ejercicio 5.36. Escribir un programa que genere la secuencia de números: 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2,
3, 4, 5, . . . , 1, 2, 3, . . .
Ejercicio 5.37. Escribir un programa en C que sea equivalente al siguiente fragmento de programa:
scanf ("%d", &a);
switch (a) {
case 2:
case 5:
case 8:
case 11: printf (’A’);
break;
case 3:
case 6:
case 9:
case 12: printf (’B’);
break;
case 4:
case 7:
case 10:
case 13: printf (’C’);
break;
}
Ejercicio 5.38. Dado el siguiente programa en C:
Boletı́n de ejercicios de INFORMÁTICA
5
Ejercicios del Tema 6: Descomposición Mudular
11
main () {
int a,b,i,aux,resultado;
printf ("Introduce dos numeros enteros ");
scanf ("%d%d", &a, &b);
if (a > b) {
aux=a;
a=b;
b=aux;
}
resultado=1;
for (i=a+1; i<=b; i=i+1) {
resultado=resultado*i;
}
printf ("El resultado es: %d \n", resultado);
}
responder a las siguientes cuestiones:
¿Cuál serı́a el resultado del programa si los datos introducidos fuesen 3 y 6?. Demostrarlo
con una traza.
¿Y si los datos introducidos fuesen 7 y 7 ?. No se pide traza.
¿El resultado del programa depende del orden en que son introducidos los datos?. Responder
SI o NO y explicar brevemente por qué.
Expresar con una fórmula qué cálculo hace este programa cuando a <= b.
5.
Ejercicios del Tema 6: Descomposición Mudular
Ejercicio 6.1. Escribir un programa en C que realice el cálculo del área y la longitud de una circunferencia en función del radio leı́do desde teclado. Escribir dos funciones distintas, una para el cálculo
del área y otra para la longitud.
Area = π × r2
Circunf erencia = 2 × π × r
Ejercicio 6.2. Escribir un programa en C que lea un carácter desde teclado y determine si se trata de
uno de los dı́gitos del 0 al 9. Escribir el programa de tal forma que sirva para leer varios caracteres
diferentes desde teclado.
Ejercicio 6.3. Escribir un programa en C que calcule el máximo común divisor de más de 2 números
basado en una función mcd (máximo común divisor de 2 números). Utilizar el algoritmo de Euclides
para implementar la función mcd.
Ejercicio 6.4. En una empresa hay 5 secciones diferentes (s1, s2, . . . , s5) cada una de las cuales tiene un
número indeterminado de trabajadores. Realizar un programa en C que solicite el número de horas
trabajadas para cada trabajador (el máximo número admisible de horas trabajadas será de 50 h.;
en caso de introducir un número mayor debe ser rechazado e introducido de nuevo indicándose el
motivo). Con esta información se debe calcular la nómina de cada trabajador teniendo en cuenta
las siguientes consideraciones:
Las 30 primeras horas se pagan a 1000 pts/hora.
Boletı́n de ejercicios de INFORMÁTICA
6
Ejercicios del Tema 7: Vectores
12
Las siguientes 10 horas se pagan a 1500 pts/hora.
Las restantes 10 horas se pagan a 2000 pts/hora.
Sobre el sueldo resultante se aplican los siguientes impuestos:
• Hasta las primeras 30000 pts. un 10 %.
• Al resto del sueldo un 15 %.
Para cada trabajador se deberá imprimir el sueldo bruto, los impuestos y el sueldo neto. Además,
debe decirse qué sección ha pagado más impuestos, ası́ como la que más horas ha trabajado.
Ejercicio 6.5. Escribir un programa en C que lea del teclado un carácter y un número entero n y
escriba en pantalla dicho carácter las veces que indique el número leı́do. El número deberá cumplir
0 < n < 80.
Ejercicio 6.6. Escribir un programa en C que lea dos números mayores que cero, tal que el primero
sea menor o igual que el segundo, e imprima por pantalla las tablas de multiplicar, del 1 al 10, de
los números comprendidos entre los dos dados (incluidos ellos mismos).
Ejercicio 6.7. (Tiro parabólico) Escribir un programa en C que vaya indicando por pantalla la posición X e Y de un móvil que se dispara con un ángulo ang sobre la horizontal y a una velocidad
inicial V0 , sabiendo que en cada instante:
X
= V0 × cos(ang) × t ,
Y
= V0 × sin(ang) × t −
1
× g × t2 ,
2
siendo g = 9,8.
Ejercicio 6.8. Escribir un programa en C que lea un conjunto de números enteros desde teclado hasta
que se introduzca un cero y calcule con funciones:
el máximo y mı́nimo de dicho conjunto de datos,
el número de negativos y positivos introducidos,
el sumatorio y la media de dichos números.
Ejercicio 6.9. Escribir un programa en C que calcule X n , tal que X es un número real y n un número
entero. Escribir el programa sin utilizar la función de librerı́a pow.
6.
Ejercicios del Tema 7: Vectores
Ejercicio 7.1. El algoritmo de la cubeta permite ordenar eficientemente un vector de números enteros
cuyos valores estén comprendidos entre 1 y un valor máximo N . Para ello, se dispone de un vector
auxiliar de rango N (cuyas componentes se supone que ocupan las posiciones 1 a N ). El algoritmo
consiste en recorrer los elementos del vector a ordenar utilizando la componente i-ésima del vector
auxiliar para contar el número de veces que el valor i aparece en el vector a ordenar. Una vez hecho
esto basta recorrer el vector auxiliar mostrando por pantalla la posición de cada componente tantas
veces como indique el valor de dicha componente.
Ejemplo: Se dispone de un vector auxiliar de N = 5 componentes:
Vector a ordenar: 2 5 1 4 2 1 2
Vector auxiliar resultante: 2 3 0 1 1
Boletı́n de ejercicios de INFORMÁTICA
6
Ejercicios del Tema 7: Vectores
13
El valor 1 aparece dos veces en el vector a ordenar y por tanto la componente en la posición 1 del
vector auxiliar resultante vale 2; el valor 2 aparece tres veces en el vector a ordenar y por tanto
la componente en la posición 2 del vector auxiliar resultante vale 3; el valor 3 no aparece en el
vector a ordenar y, consecuentemente, el valor en la tercera posición del vector auxiliar es 0; y
ası́ sucesivamente.
Escribir un programa en C para implementar dicho algoritmo.
Ejercicio 7.2. Escribir un programa en C que lea una serie de números enteros positivos hasta que
el usuario introduzca un número entero negativo y los almacene en un vector. Posteriormente, el
programa tiene que reorganizar los números introducidos en el vector de manera que los números
impares ocupen las primeras posiciones del mismo y los números pares ocupen las siguientes. Por
último, el programa debe imprimir por pantalla los elementos del vector resultante.
Por ejemplo:
Dada la entrada 1 4 2 5 7 2, una salida válida es 1 5 7 4 2 2.
Dada la entrada 9 6 4 1 7, una salida válida es 9 1 7 6 4.
El orden de los números impares entre sı́ es indiferente, ası́ como el de los números pares. El
programa debe reorganizar los datos sobre el mismo vector en que se leen, sin emplear un vector
auxiliar adicional.
Ejercicio 7.3. Escribir un programa en C que lea las marcas de 100 participantes en una carrera de
maratón, calcule la media, determine cuantos corredores están por encima de la media y cuántos
por debajo, y calcule la desviación (cuadrado de la diferencia) de cada corredor con respecto a la
media.
Ejercicio 7.4. Dado un vector de N caracteres que contiene una frase, averiguar cuántas palabras
contiene dicha frase, sabiendo que cada palabra está separada por un sólo blanco. Asumir que el
vector ya tiene almacenada la frase correspondiente.
Ejercicio 7.5. Escribir un programa en C que lea un número entero x > 0 que no sea múltiplo de 10
y, posteriormente, genere un vector de enteros donde se introduzcan cada una de las cifras del
número x, de modo que el dı́gito más significativo se almacene en el primer elemento del vector,
el siguiente en el segundo elemento del vector etc., tal como se indica en el ejemplo.
x = 5143
Vector → 5 1 4 3 0 0 0
Nota1: No se puede leer el número de cifras de x.
Nota2: Declarar el vector con un rango fijo N e inicializarlo previamente a cero. Después de
introducir cada una de las cifras del número, el resto de los elementos del vector se quedan a
0.
Nota3: Sólo se puede utilizar un vector.
Ejercicio 7.6. En una carrera de maratón hay 100 corredores con dorsales numerados del 1 al 100. Se
sabe que los dorsales acabados en 1 pertenecen al equipo 1, los terminados en 2 al equipo 2, . . . , y
los dorsales terminados en 0 pertenecen al equipo 10. Sabiendo que cada corredor tiene su marca
personal de tiempo para la maratón, y que el programa va leyendo las marcas de cada uno de los
corredores (dorsal 1, dorsal 2, . . . ), se pide imprimir el tiempo total de cada equipo.
Ejercicio 7.7. Un vector de N caracteres contiene el nombre completo de una persona, estando éste
formado por uno o varios nombres y dos apellidos. Se pide un programa en C que devuelva en
Boletı́n de ejercicios de INFORMÁTICA
6
Ejercicios del Tema 7: Vectores
14
otro vector los apellidos de dicha persona y las iniciales de su(s) nombre(s) tal y como se indica a
continuación:
El vector original contiene:
Jose Luis Garcia Pont
(relleno a blancos hasta N ).
Se debe obtener otro vector que contenga:
Garcia Pont, J.L.
Nota 1: Una persona puede tener uno o más nombres.
Nota 2: Asumir que no existen nombres ni apellidos del tipo ”de . . . ” de las . . . , ”de la . . . ”.
Ejercicio 7.8. Dados dos vectores de números enteros v1 y v2 de dimensiones N y M respectivamente,
cuyos elementos se encuentran en orden creciente, hacer un programa en C que almacene en otro
vector el conjunto de elementos resultante de ordenar en orden creciente todos los elementos de
los dos vectores originales (la dimension del vector resultante será N + M ).
Nota: Suponer que todos los elementos de los vectores v1 y v2 contienen un valor, es decir, existen
N números enteros en el vector v1 y M números enteros en el vector v2 .
Ejercicio 7.9. Dado un vector de N caracteres (letras y blancos), escribir un programa en C que
sustituya en el mismo vector los caracteres ”ny” que encuentre por una ’ñ’.
Ejercicio 7.10 Un palı́ndromo es una palabra o secuencia de palabras que se lee igual de izquierda a
derecha que de derecha a izquierda. Ejemplos de palı́ndromos son: ”anilina”, ”reconocer”, ”dabale
arroz a la zorra el abad”, etc. Se pide un programa en C que, dado un vector de rango N que
contiene un conjunto de caracteres, determine si la frase almacenada en el vector es o no un
palı́ndromo. No se puede utilizar un vector auxiliar.
Nota: Se asume que el vector de caracteres se compone de una o más palabras (en letras minúsculas) y blancos. Los blancos servirán de separadores entre palabras (uno o más blancos entre
cada par de palabras) y para completar los N caracteres del vector.
Boletı́n de ejercicios de INFORMÁTICA
Descargar