ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Algoritmos


Enviado por   •  5 de Marzo de 2013  •  33.054 Palabras (133 Páginas)  •  471 Visitas

Página 1 de 133

Ejercicios y prácticas resuletas sobre

PROGRAMACIÓN AVANZADA EN C

Copyright (c) 2008 Víctor Sánchez Sánchez.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

---

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

La documentación y los programas quedan licenciados bajo las licencias GFDL y GPL.

Versión 1.0 (301108)

Autor: Víctor Sánchez2

Web: www.victorsanchez2.com

Correo: victorsanchez2@gmail.com

Jabber: victorsanchez2@jabberes.org

Se recomienda utilizar el compilador gcc y el sistema operativo GNU/Linux. En la carrera vais a tener que utilizarlo infinidad de veces, así que mejor comenzar ahora. Es el mejor compilador que existe y está arropado por la infinidad de programas de gran calidad del mundo GNU/Linux. Para la carrera podéis utilizar Anjuta para editar los programas y el DDD para corregir vuestros bugs.

PRÁCTICA 1:

El objetivo de esta práctica es afianzar ciertos conceptos básicos de la programación en lenguaje C:

• Bucles y tablas.

• Entrada y salida de datos.

• Paso de argumentos a un programa.

• Manejo de archivos.

• Funciones.

• Uso de memoria dinámica.

EJERCICIOS

1.

Escribir un programa (es decir una función main) que pida por teclado una serie de números enteros, los almacene en una tabla estática y posteriormente escriba por pantalla todos los números introducidos indicando además cual es el mayor y el menor. Lo primero que debe hacer el programa es preguntar al usuario cuantos números se van a introducir y comprobar que dicha cantidad es menor que la dimensión de la tabla. Para dicha dimensión debe definirse una constante (por ejemplo MAX_DIMENSION) a la cual se puede asignar un valor razonable (por ejemplo, 100).

Funciones C a utilizar:

• scanf: para leer números introducidos por el teclado.

• printf: para imprimir por pantalla.

Ejemplo de ejecución: lo que se vería por pantalla debe ser algo así como

Introduce la cantidad de números:

3

Introduce los números:

5

7

2

Los números introducidos son:

5

7

2

El mayor es el 7.

El menor es el 2.

/*********************************************************

* Autor: Victor Sanchez2

* Web: http://www.victorsanchez2.com

* Correo: victorsanchez2@gmail.com

*

**********************************************************/

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define OK 1

#define ERR -10001

#define MAX_DIM 100

int enteros[MAX_DIM]; /* Array para guardar los enteros */

int num_total;

int lectura(void);

int sacarpantalla(int max, int min, int num_total);

int calcular(int *max, int *min, int total);

int es_digito(char caracter[]);

int main()

{

int menor; /* Numero menor */

int mayor; /* Numero mayor */

if (lectura() == ERR)

{

printf("Error al leer el numero de terminos.\n");

return ERR;

}

if (calcular(&mayor, &menor, num_total) == ERR)

{

printf("Error al intentar calcular el mayor y el menor");

return ERR;

}

if (sacarpantalla(mayor, menor, num_total) == ERR)

{

printf("Error al mostrar por pantalla.\n");

return ERR;

}

return OK;

}

/*********************************************************

* Funcion: int lectura(int *total)

*

* IN: Toma una variable tipo int.

* OUT: Devuelve OK si se ha leido correctamente, ERR si hay algun fallo.

* MAKE: Obtiene los numeros que introduce el usuario y los guarda

* en un array de enteros

**********************************************************/

int lectura(void)

{

int continuar = OK;

int n;

char numeros[MAX_DIM];

for (n = 0; n < (int) strlen(numeros); n++)

numeros[n] = '0';

printf("\nCuantos numeros va a introducir? --> ");

do {

gets(numeros);

continuar = OK;

if ((num_total = es_digito(numeros)) == ERR)

continuar = ERR;

if (num_total <= 0)

{

printf("Debe introducir un numero positivo.\n");

continuar = ERR;

}

} while (continuar != OK);

printf("\nIntroduzca los numeros: \n");

for (n = 0; n < num_total; n++)

{

gets(numeros);

if ((enteros[n] = es_digito(numeros)) == ERR)

{

printf("Error al leer el numero, por favor repita introduccion.\n");

n--;

}

}

return OK;

}

/*********************************************************

* Funcion: int calcular(int *max, int *min, int num_total)

*

* IN: *max y *min que acumulan el numero mayor y menor. num_total

* acumula la cantidad de numeros que se van a introducir.

* OUT: OK si se ha realizado correctamente o ERR si hay fallos.

* MAKE: Encuentra el minimo y el maximo de los numeros introducidos

...

Descargar como (para miembros actualizados) txt (207 Kb)
Leer 132 páginas más »
Disponible sólo en Clubensayos.com