18 de Noviembre de 2008 , Escrito por: aabilio
Realizar un programa que lea de teclado 15 claves enteras y las almacene en un vector. Una clave será un número entero.
El programa, al realizar la lectura de las claves deberá garantizar:
- que todas ellas se encuentran en el rango 1000 a 7000.
- que el usuario no teclea claves repetidas.
En caso contrario, se solicitaría de nuevo el tecleo de la clave. No es necesario volver a solicitar todas las claves introducidas hasta ese momento, sino sólo la última recibida que no supera las validaciones.
Posteriormente deberá mostrar ordenadas las claves introducidas, pero sin modificar el vector de claves. Para ello, se deberá utilizar un vector de punteros que apunten a cada una de las claves.
Ayuda.
La forma de rellenar el vector de punteros es comprobar de una en una, comenzando por la clave 1000 y hasta la 7000, si la clave se encuentra en el vector de claves, y si así fuera, obtenemos la dirección del elemento del vector de claves y la incluimos en el primer puntero libre del vector de punteros. Esto nos obliga a llevar un segundo índice sobre el vector de punteros que nos vaya determinando el siguiente puntero libre.
Finalmente, recorreremos el vector de punteros y presentaremos el elemento al que apunta cada uno de ellos. Así, las claves aparecerán en pantalla en orden.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
| //Ejercicio propuesto: guión 7 nº7
//Abilio Almeida Eiroa
#include <stdio.h>
#define DIMAX 15
#define LINUX 1
#define WINDOWS 0
#define EQUIPO LINUX //---------------->>> Cambiar por tu plataforma!!!
#if (EQUIPO == LINUX)
#include <stdlib.h>
#define BORRA_PANTALLA system("clear")
#define PARAR printf("\nPresiona una tecla para continuar...");fflush(stdin);getchar()
#elif (EQUIPO == WINDOWS)
#include <stdlib.h>
#define PARAR system("pause")
#define BORRA_PANTALLA system("cls")
#endif
int main() {
int i, b, vector[DIMAX];
int *punt[DIMAX];
//Lleno el vector de 0:
for (i=0; i<DIMAX; i++) {
vector[i] = 0;
}
//Pido valores para el vector:
printf("LLena el Vector:\n");
for (i=0; i<DIMAX; i++) {
printf("Vector[%d]: ", i+1);
scanf("%d", &vector[i]);
if (vector[i] < 1000 || vector[i] > 7000) {
printf("Debe estar entre 1000 y 7000\n");
i--;
continue;
}
for (b=0; b<DIMAX; b++) {
if (i == b)
continue;
if (vector[i] == vector[b]) {
printf("La clave %d ya está introducida, por favor introduce otra\n", vector[i]);
i--;
break;
}
}
}
//Llenar el vector de punteros:
int a=0;
for (i=1000; i<=7000; i++) {
for (b=0; b<DIMAX; b++) {
if (i == vector[b]) {
punt[a] = &vector[b];
a++;
break;
}
}
}
//Mostrar el vector original:
printf("\n\n");
printf("Este es el vector origunal:\n");
printf("===========================\n");
for (i=0; i<DIMAX; i++) {
printf("%d ", vector[i]);
}
//Mostrar el vector ordenado:
printf("\n\n");
printf("Y este es el vector ordenado utilizando punteros:\n");
printf("=================================================\n");
for (i=0; i<DIMAX; i++) {
printf("%d ", *punt[i]);
}
PARAR;
return 0;
} |
Laboratorio Programación, Sin categoría
Comprtelo
10 de Noviembre de 2008 , Escrito por: aabilio
En esta sección voy a ir subiendo todos los ejercicios que vaya haciendo de la asignatura de “Laboratorio de Programación” de la Universidad de Salamanca (en mi caso del grupo A1, el de Angélica).
Si queréis podéis descargar todos los archivos de los ejercicios que se han hecho hasta ahora en http://linfox.es/docs/C y los próximos los iré poniendo también ahí para la descarga (también comprimiré la totalidad por si queréis bajarlos todos juntos).
Y nada, este es el último ejercicio propuesto en la plataforma:
Ejercicio propuesto: guión 6A nº12
Realizar un programa que sume dos matrices bidimensionales de números reales.
El programa primeramente solicitará el número de filas y de columnas de las matrices a sumar, y posteriormente solicitará por pantalla los elementos correspondientes de las dos matrices. El programa deberá permitir trabajar con matrices de hasta 30 x 30 elementos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
| //Ejercicio propuesto: guión 6A nº012
//Abilio Almeida Eiroa
#include <stdio.h>
#define FIL 30
#define COL 30
#define LINUX 1
#define WINDOWS 0
#define EQUIPO WINDOWS //---------------->>> Cambiar por tu plataforma!!!
#if (EQUIPO == LINUX)
#include <stdlib.h>
#define BORRA_PANTALLA system("clear")
#define PARAR printf("\nPresiona una tecla para continuar...");fflush(stdin);getchar()
#elif (EQUIPO == WINDOWS)
#include <stdlib.h>
#define PARAR system("pause")
#define BORRA_PANTALLA system("cls")
#endif
int main() {
int i, b, filas, columnas;
float suma[FIL][COL], tabla1[FIL][COL], tabla2[FIL][COL];
//Carga un tabla e indica el elmento máximo y su posición, y el mínimo sin posición..
printf("Introduce el número de filas a introducir: ");
scanf("%d", &filas);
printf("Introduce el número de columnas: ");
scanf("%d", &columnas);
printf("Carga la primera tabla:\n");
//Cargar tabla:
for(i=0; i<filas; i++) {
for(b=0; b<columnas; b++) {
printf("Tabla[%d][%d]: ", i+1, b+1);
scanf("%f", &tabla1[i][b]);
}
}
printf("Carga la segunda tabla:\n");
//Cargar tabla:
for(i=0; i<filas; i++) {
for(b=0; b<columnas; b++) {
printf("Tabla[%d][%d]: ", i+1, b+1);
scanf("%f", &tabla2[i][b]);
}
}
//Sumar las tablas:
for(i=0; i<filas; i++) {
for(b=0; b<columnas; b++) {
suma[i][b] = tabla1[i][b] + tabla2[i][b];
}
}
PARAR;
BORRA_PANTALLA;
printf("\n\n");
printf("Resultados:\n");
printf("===========\n");
printf("La primera tabla introducida es:\n");
for(i=0; i<filas; i++) {
for(b=0; b<columnas; b++) {
printf("%10.2f", tabla1[i][b]);
}
printf("\n");
}
printf("La segunda tabla introducida es:\n");
for(i=0; i<filas; i++) {
for(b=0; b<columnas; b++) {
printf("%10.2f", tabla2[i][b]);
}
printf("\n");
}
printf("La suma de las dos anteriores es:\n");
for(i=0; i<filas; i++) {
for(b=0; b<columnas; b++) {
printf("%10.2f", suma[i][b]);
}
printf("\n");
}
PARAR;
return 0;
} |
Laboratorio Programación
Comprtelo
Comentarios recientes