Está en la página 1de 4

Recopilación de algunos ejercicios de lenguaje de programacion

Para todos los ejercicios realice un programa utilizando el Lenguaje de Programación C,


que permita dar solución a cada requerimiento planteado. El estudiante deberá construir el
código utilizando el prototipo de la función en el caso en que se especifique. NOTA: No
deberá cambiar ni el nombre que se le ha dado a cada función ni el conjunto de parámetros
que la definen.

1. INTRODUCCIÓN
Los ejercicios de esta sección corresponden a ejercicios que el estudiante debe ser capaz de
realizar en las primeras semanas de iniciación del curso (programas iniciales).
Para esto el estudiante debe conocer: los operadores básicos en el Lenguaje, estructuras de
control anidadas y la utilización de funciones.

1) Dados dos números enteros, determine:


a. ¿cuál es el máximo? int maximo (int x, int y);
b. ¿cuál es el mínimo? int minimo (int x, int y);

2) Se desea calcular el resultado final de una base x elevada a un cierta potencia y.


Escriba un programa que muestre por pantalla el resultado.
void potencia (int x, int y);

3) Determine las raíces reales de una ecuación cuadrática. Los coeficientes de la


ecuación serán leídos por pantalla.
void raicesCuadra( float a, float b, float c);

4) Calcular la media aritmética de las notas pertenecientes a n materias de un curso.


Existen m cursos. Para cada curso deberá indicar la media obtenida.
void leerNotasCurso(float notas[]);

float Media_Materias_Curso(float notas[]);

5) Escriba un programa que determine si un número entero leído por teclado, es:
a. par: int esPar(int x);
b. primo: int esPrimo(int x);

6) Dado un número (leido por teclado), que representa los segundos que ha invertido
una persona en hacer un exámen, determinar cuantas horas, minutos y segundos ha
invertido. Imprima el resultado por pantalla.
void tiempo(int seg);

7) Dado un número entero leído por pantalla, muestre cada uno de los dígitos del
número en orden inverso. Ej: Si el número es 324, se debe mostrar 4, 2, 3.
void Digit (int num);
¿Qué modificaciones tendría que hacer en la función para que pudiese obtener los
digitos del número en otra base distinta al decimal?
8) Implementar una función, que devuelva el dígito N-ésimo de un número num,
teniendo en cuenta que el dígito de posición 0 es el dígito mas a la derecha del
número (el menos significativo en valor posicional). La función devolverá -1 si el
número no tiene el digito que se pide.
int digitPos(int pos, int num);

2. VECTORES
En esta sección se presentan los ejercicios de vectores separados en dos bloques: vectores
(números) o cadenas (caracteres).
Para esto el estudiante debe conocer: declaración y tipos de vectores, manejo de vectores
mediante una variable índice de tipo entera, paso de vectores a funciones, lectura de
cadenas y tratamiento de cadenas.

2.1. Ejercicios de Vectores de Enteros.

- Básicos:
1) Realizad un programa que lea una serie de números enteros con valores
comprendidos entre 0 y 1000, hasta que nos introduzcan un número entero que no
esté comprendido entre esos valores. El programa debe escribir después, los valores
entre 0 y 1000 que el usuario había introducido. Utilizad un vector.
Ejemplo de funcionamiento:
Dame la serie con valores entre 0 y 1000
(valor fuera de rango para parar de leer)
0
30
555
1000
-1
Valores entre 0 y 1000 son:
0
30
555
1000

2) Realizad un programa que lea una serie de números enteros con valores
comprendidos entre 0 y 1000 y entre -1000 y -1, hasta que nos introduzcan un
número entero que no esté comprendido entre esos valores. El programa debe
escribir después, los valores entre -1000 y 1000 que el usuario había introducido.
Utilizad un vector más grande.

3) Lo mismo que el Problema 2 pero indicando además, cuantas veces el usuario dijo
cada valor (frecuencia).
4) Leer n números enteros por teclado, adicionalmente leer dos números. Determinar si
los dos números forman parte de la secuencia de números inicial leídas. La
secuencia de números finaliza en -1.
5) Conocida una secuencia de números enteros positivos finalizada en -1 (fin de
secuencia), desarrolle un programa que determine:
a. ¿Cuántos de esos números son pares?
b. ¿Cuál es el valor del número máximo?
c. ¿Cuál es el valor del número mínimo?

- Funciones:
· Los vectores serán declarados con una longitud máxima nmax=50 (elementos).
· Las funciones siguientes pueden, por lo genenral, utilizar dichos vectores parcialmente,
debiendo pasar como parámetro una longitud num<=nmax.
· Nótese que el interés por el cual algunos enteros se pasan por referencia (con punteros)
es el de modificar su valor puesto que el vector se modifica (longitud, elementos, etc.).

6) Leer m elementos de un vector por teclado. Deberá considerar que no podrá superar
el máximo de elementos de vector (num).
void leer(int vect[], int num);

7) Leer elementos de un vector hasta encontrar el número entero a (secuencias con


marca). Deberá retornar el número de elementos que ha leído sin contar el entero a.
No podemos leer más de nmax enteros.
int leerMarca(int vect[]);

8) Dado un elemento y dado un vector de enteros, realice una función que devuelva el
número de apariciones del elemento en el vector.
int veces(int valor, int vect[], int num);

9) Invertir los elementos del vector sin utilizar otro vector. Por ejemplo, el vector
formado por los enteros: 1 2 3, debe quedar 3 2 1.
void invertirOrden(int vect[], int num);

10) Buscar el elemento máximo de un vector. Además se desea saber la posición que
éste elemento ocupa en el vector. En caso de que exista más de un máximo,
quedarse con el último encontrado. ¿Qué modificaciones tendría que hacer para
quedarse con el primero?.
int buscar(int *pos, int vect[], int num);

11) Insertar un elemento considerando que el vector está ordenado ascendentemente.


(Inserción en orden). LO HE RESUELTO EN CLASE IO-7.doc
int insertarOrden(int elem, int vec[]t, int *num, int *pos);

12) Insertar elementos en un vector desordenado. LO HE RESUELTO EN CLASE IO-


7.doc
int insertarDesorden(int elem, int vect[], int *num);

13) Eliminar un elemento dado del vector. (Buscar, luego eliminar).


void eliminar(int* elem, int vect[], int *num);

14) ¿Qué modificaciones tendría que hacer en los ejercicios 8, 9, 10, 11, 12 y 13
suponiendo que los vectores acaban con la marca del número entero a (p.ej.: a=-1),
en vez de conocer el número exacto de elementos que contienen (num).
3. MATRICES
15) Declare una matriz de número reales de tamaño DIMxDIM (DIM constante con
valor 25). Escribir las siguientes funciones:
a. Función Traspuesta: Dada una matriz devolver su traspuesta.
void traspuesta(float mat[], float matras[]);
b. Función Simetrica: Dada una matriz indica si la matriz es simétrica (1) o si
no lo es (0).
int simetrica(float mat[]);
c. Funcion Suma: Dadas dos matrices, calcular la suma de éstas.
void sumaMat(float mat1[],float mat2[], res[]);
d. Funcion Resta: Dadas dos matrices, calcular la resta de éstas. Piensa esta
respuesta utilizando el procedimiento de suma de matrices, definido
anteriormente.
e. Función Multiplica: Dadas dos matrices, devuelve el producto de ellas.
void multiMat(float mat1[],float mat2[], res[]);