Prácticas de C++

Anuncio
Prácticas de C++
Practica Nº 4
Informática II
Fundamentos de Programación
Prof. Dr. Paul Bustamante
Practica Nº4 Programación en C++
Pág. 1
ÍNDICE
ÍNDICE ........................................................................................................................................ 1
1. Introducción...................................................................................................................... 1
1.1
Ejercicio 1: Números capicúas................................................................................... 1
1.2
Ejercicio 2: Producto de vector por matriz................................................................. 1
1.3
Ejercicio 3: Producto de matriz por matriz. ............................................................... 2
1.4
Ejercicio 4: Resolución de un sistema lineal de 2 ecuaciones. .................................. 3
1. Introducción.
El ejercicio 1 es el explicado en clase. No se ha puesto el código para que Ud. trate de
realizarlo solo, según los apuntes tomados en clase En los ejercicios siguientes, si se da el
código, pero, como en otras ocasiones, le recomiendo que no se dedique sólo a escribir el
código y ejecutar los programas, sino que trate de entenderlos.
1.1 Ejercicio 1: Números capicúas.
Este ejercicio consiste en hallar los números capicúas de 3 y 4 cifras. Recordar que un número
es capicúa cuando al leerlo por la izquierda es igual que al leerlo por la derecha, por ejemplo
el 1331. Deben convertir el dato numérico en una cadena de caracteres, para así poder invertir
el número, para lo cual se puede usar la función sprintf, que tiene la siguiente forma:
char tmp[20];
int num;
. . .
sprintf(tmp,”%d”,num);
//convierte el valor de num en una cadena
Esta función se encuentra definida en el fichero stdio.h.
1.2 Ejercicio 2: Producto de vector por matriz.
Para que no deje sin explotar todas las posibilidades de los bucles for, le proponemos este
sencillo programa que multiplica un vector por una matriz (en este orden). La fórmula
utilizada para realizar el producto matricial y = x*A ha sido la siguiente:
n −1
bi = ∑ x j * a ji
j =0
Escriba el siguiente programa y guárdelo como VxMatriz.cpp (no se olvide de crear el
proyecto Ejer2):
// fichero vxmatriz.cpp
#include <iostream.h>
#include <iomanip.h>
void main () {
int
int
int
int
vector[100];
matriz[100][100];
resultado[100];
colV, colM, dato;
cout << "Introduce el numero de columnas del vector: ";
cin >> colV;
cout << "Introduce el numero de columnas de la matriz: ";
cin >> colM;
Informática II – Fundamentos de Programación - Tecnun
Practica Nº4 Programación en C++
Pág. 2
cout << "Introduce valores para el vector: ";
for (int i=0; i<colV; i++)
cin >> vector[i];
for (i=0; i<colV; i++) {
cout << "Introduce valores para la fila " << i << ": ";
for (int j=0; j<colM; j++)
cin >> matriz[i][j];
}
cout << "\nEl vector es: "<<endl;
for (i=0; i<colV; i++)
cout << vector[i] << " ";
cout << "\nLa matriz es: "<<endl;
for (i=0; i<colV; i++) {
for (int j=0; j<colM; j++) {
cout << setw(3) << matriz[i][j] << " ";
}
cout << endl;
}
for (i=0; i<colM; i++) {
dato = 0;
for (int j=0; j<colV; j++) {
dato = dato + vector[j]*matriz[j][i];
}
resultado[i] = dato;
}
cout << "\nEl resultado es: "<< endl;
for (i=0; i<colM; i++)
cout << resultado[i] << " ";
cout << endl;
}
1.3 Ejercicio 3: Producto de matriz por matriz.
Basándose en el producto de vector por matriz anterior, realice un proyecto llamado Ejer3 que
contenga un programa que multiplique dos matrices A y B de cualquier tamaño; llámelo
matxmat.cpp.
Recordemos la fórmula para multiplicar dos matrices:
n
C = A* B
=>
cij = ∑ aik ⋅ bkj
k =1
,donde i = 1...n, j = 1,..., n
Como se puede observar en la fórmula, intervienen 3 índices i,j,k, lo cual se traduce en que
necesitaremos tres bucles for para realizar dicha operación.
Pasos a seguir:
1- Debe crear tres matrices de 10x10 (A, B y C), para tener espacio suficiente para
realizar las operaciones.
2- Pedir por teclado las dimensiones de la matriz A (filas y columnas). Debe
comprobar de no sobrepasar el límite reservado (10 en nuestro caso).
3- Pedir por teclado sólo las columnas de la matriz B, ya que las filas tienen que ser
igual a las columnas de A para la multiplicación. También debe comprobar que no
sea mayor que la memoria reservada.
Informática II – Fundamentos de Programación - Tecnun
Practica Nº4 Programación en C++
Pág. 3
4- Realizar la multiplicación, como en el ejemplo anterior, en sendos bucles for
anidados (en este caso hacen falta 3 bucles for). Ir almacenando el resultado en la
matriz C.
5- Finalmente debe sacar por consola:
a. La matriz A y la matriz B con sus respectivos formatos (usar setw() ).
b. La matriz resultante C, también formateada.
1.4 Ejercicio 4: Resolución de un sistema lineal de 2 ecuaciones.
El ejercicio a realizar en este apartado debe permitir resolver un sistema lineal de 2
ecuaciones del tipo:
a11 X + a12Y = b1
a 21 X + a 22Y = b2
Donde el determinante viene dado por:
det =
a11 a12
a 21 a 22
= a11 a 22 − a 21 a12
Y los valores de las variables vienen dados por las siguientes expresiones:
a11b1
b1 a12
x=
b2 a 22
det
;y =
a 21b2
det
Crear el proyecto Ejer4 y el fichero Ecua2.cpp para escribir el código.
Pasos a seguir para programar este ejercicio:
a. Crear una matriz para albergar los coeficientes a11, a12, etc.
b. Crear un vector para albergar los términos independientes b1 y b2.
c. Pedir los datos al usuario.
d. Realizar los cálculos (verificar que el determinante no es cero).
e. Imprimir la matriz del determinante (con formato), así como su valor.
f. Imprimir la solución (x e y).
En la figura anterior se puede apreciar lo que debe salir por la consola. También cuando el
usuario pide los datos de la matriz y del vector (caracterizado por el ?: en el mensaje).
Informática II – Fundamentos de Programación - Tecnun
Descargar