0% encontró este documento útil (0 votos)
186 vistas9 páginas

Vectores y Matrices - AprendeAProgramar

Este documento introduce los conceptos de vectores y matrices en C++. Explica cómo definir vectores (arrays) de un solo tipo de datos y acceder a sus elementos. Muestra ejemplos de sumar los elementos de un vector de manera manual y usando un bucle for. También presenta ejercicios para practicar el uso de vectores, incluyendo operaciones matemáticas básicas con vectores y algunos conceptos sobre vectores en física. Finalmente, anticipa la noción de tablas bidimensionales.

Cargado por

Tec. Mecatronico
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
186 vistas9 páginas

Vectores y Matrices - AprendeAProgramar

Este documento introduce los conceptos de vectores y matrices en C++. Explica cómo definir vectores (arrays) de un solo tipo de datos y acceder a sus elementos. Muestra ejemplos de sumar los elementos de un vector de manera manual y usando un bucle for. También presenta ejercicios para practicar el uso de vectores, incluyendo operaciones matemáticas básicas con vectores y algunos conceptos sobre vectores en física. Finalmente, anticipa la noción de tablas bidimensionales.

Cargado por

Tec. Mecatronico
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

31/10/2017 5. Vectores y matrices - AprendeAProgramar.

com

Introduccin a C++

Este sitio web usa cookies de terceros para analizar el trfico y personalizar los anuncios. Si no est de
acuerdo, abandone el sitio y no siga navegando por l. Puede saber ms sobre nuestra poltica de
cookies (/cookies.php) (Este aviso se muestra slo una vez en cada visita al sitio web).

Anterior (view.php?id=491) Posterior (view.php?id=493)

5. Vectores y matrices
Curso: Introduccin a C++ (../../course/view.php?id=27)

5. Vectores y matrices
5.1. Definicin de una tabla y acceso a los datos
Una tabla, vector, matriz o array (que algunos autores traducen por arreglo) es un conjunto de elementos,
todos los cuales son del mismo tipo. Estos elementos tendrn todos el mismo nombre, y ocuparn un espacio
contiguo en la memoria.

Por ejemplo, si queremos definir un grupo de 4 nmeros enteros, usaramos

int ejemplo[4];

Podemos acceder a cada uno de los valores individuales indicando su nombre (ejemplo) y el nmero de
elemento que nos interesa, pero con una precaucin: se empieza a numerar desde 0, as que en el caso
anterior tendramos 4 elementos, que seran ejemplo[0], ejemplo[1], ejemplo[2], ejemplo[3].

Como ejemplo, vamos a definir un grupo de 5 nmeros enteros y hallar su suma:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=492 1/9
31/10/2017 5. Vectores y matrices - AprendeAProgramar.com

// Introduccin a C++, Nacho Cabanes


// Ejemplo 05.01:
// Primer ejemplo de tablas

#include <iostream>
using namespace std;

int main()
{
int numero[5]; // Un array de 5 numeros enteros
int suma; // Un entero que guardar la suma

numero[0] = 200; // Les damos valores


numero[1] = 150;
numero[2] = 100;
numero[3] = -50;
numero[4] = 300;
suma = numero[0] + // Y hallamos la suma
numero[1] + numero[2] + numero[3] + numero[4];
cout << "Su suma es " << suma;
/* Nota: esta es la forma ms ineficiente e incmoda...
Ya lo iremos mejorando */

return 0;
}

Ejercicios propuestos:

(5.1.1) Un programa que pida al usuario 4 nmeros, los memorice (utilizando una tabla), calcule su media
aritmtica y despus muestre en pantalla la media y los datos tecleados.
(5.1.2) Un programa que pida al usuario 5 nmeros reales y luego los muestre en el orden contrario al
que se introdujeron.

5.2. Valor inicial de una tabla


Al igual que ocurra con las variables normales, podemos dar valor a los elementos de una tabla al principio
del programa. Ser ms cmodo que dar los valores uno por uno, como hemos hecho antes. Esta vez los
indicaremos todos entre llaves, separados por comas:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=492 2/9
31/10/2017 5. Vectores y matrices - AprendeAProgramar.com

// Introduccin a C++, Nacho Cabanes


// Ejemplo 05.02:
// Segundo ejemplo de tablas

#include <iostream>
using namespace std;

int main()
{
int numero[5] = // Un array de 5 nmeros enteros
{200, 150, 100, -50, 300};
int suma; // Un entero que guardar la suma

suma = numero[0] + // Y hallamos la suma


numero[1] + numero[2] + numero[3] + numero[4];
cout << "Su suma es " << suma;
/* Nota: esta forma es algo menos engorrosa, pero todava no */
/* est bien hecho. Lo seguiremos mejorando */

return 0;
}

Ejercicios propuestos:

(5.2.1) Un programa que almacene en una tabla el nmero de das que tiene cada mes (supondremos
que es un ao no bisiesto), pida al usuario que le indique un mes (1=enero, 12=diciembre) y muestre en
pantalla el nmero de das que tiene ese mes.
(5.2.2) Un programa que almacene en una tabla el nmero de das que tiene cada mes (ao no bisiesto),
pida al usuario que le indique un mes (ej. 2 para febrero) y un da (ej. el da 15) y diga qu nmero de da
es dentro del ao (por ejemplo, el 15 de febrero sera el da nmero 46, el 31 de diciembre sera el da
365).

5.3. Recorriendo los elementos de una tabla


Es de esperar que exista una forma ms cmoda de acceder a varios elementos de un array, sin tener siempre
que repetirlos todos, como hemos hecho en

suma = numero[0] + numero[1] + numero[2] + numero[3] + numero[4];

El truco consistir en emplear cualquiera de las estructuras repetitivas que ya hemos visto (while, do..while,
for). Lo ms habitual, ya que sabemos cuntos elementos tiene un array, es usar un "for" para contar, as:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=492 3/9
31/10/2017 5. Vectores y matrices - AprendeAProgramar.com

// Introduccin a C++, Nacho Cabanes


// Ejemplo 05.03:
// Tercer ejemplo de tablas (for)

#include <iostream>
using namespace std;

int main()
{
int numero[5] = // Un array de 5 nmeros enteros
{200, 150, 100, -50, 300};
int suma; // Un entero que guardar la suma
int i; // Para recorrer el array

suma = 0; // Valor inicial


for (i=0; i<=4; i++) // Y hallamos la suma
suma += numero[i];

cout << "Su suma es " << suma;


return 0;
}

En este caso, que slo sumbamos 5 nmeros, no hemos escrito mucho menos, pero si trabajsemos con 100,
500 o 1000 nmeros, la ganancia en comodidad s que est clara.

Ejercicios propuestos:

(5.3.1) A partir del programa propuesto en 5.2.2, que almacenaba en una tabla el nmero de das que
tiene cada mes, crear otro que pida al usuario que le indique la fecha, detallando el da (1 al 31) y el mes
(1=enero, 12=diciembre), como respuesta muestre en pantalla el nmero de das que quedan hasta final
de ao.
(5.3.2) Crear un programa que pida al usuario 10 nmeros enteros y luego los muestre en orden inverso
(del ltimo al primero), usando "for".
(5.3.3) Crear un programa que pida al usuario 10 nmeros reales, calcule su media y luego muestre los
que estn por encima de la media.
(5.3.4) Un programa que pida al usuario 10 nmeros enteros y calcule (y muestre) cul es el mayor de
ellos.

En fsica se usan mucho los "vectores", para representar magnitudes que no se pueden expresar slo con un
nmero. Por ejemplo, para una temperatura basta con decir cosas como "tengo 39 grados", pero para una
fuerza no basta con decir que es de 200 N, sino que tambin es importante en qu direccin (y sentido) se
aplica esa fuerza: no tendr el mismo efecto si se aplica en el centro de un cuerpo o en un extremo, ni si
comprime que si estira. Un vector se suele representar a partir de sus "componentes", que son las
coordenadas de su extremo (suponiendo que comienza en el punto (0,0). Un vector en el plano tendr dos
componentes (x,y) y un vector en el espacio tendr 3 componentes (x,y,z).como un conjunto de varias
coordenadas. As, un programa que pida al usuario las coordenadas de 2 vectores en el espacio y halle su
vector suma sera:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=492 4/9
31/10/2017 5. Vectores y matrices - AprendeAProgramar.com

// Introduccin a C++, Nacho Cabanes


// Ejemplo 05.04:
// Vectores, primer contacto

#include <iostream>
using namespace std;

int main()
{
float vector1[3];
float vector2[3];
float vectorSuma[3];
int i;

// Pedimos los datos del primer vector


for (i=0; i<3; i++)
{
cout << "Introduce la componente " << i
<< " del primer vector: ";
cin >> vector1[i];
}

// Pedimos los datos del segundo vector


for (i=0; i<3; i++)
{
cout << "Introduce la componente " << i
<< " del segundo vector: ";
cin >> vector2[i];
}

// Calculamos la suma
for (i=0; i<3; i++)
vectorSuma[i] = vector1[i] + vector2[i];

// Y mostramos el resultado
cout << "El vector suma es ";
for (i=0; i<3; i++)
cout << vectorSuma[i] << " ";

return 0;
}

No veremos ms detalles sobre vectores, porque este no es un curso de fsica. Pero s propondemos algunos
ejercicios para que pueda aplicar sus conocimientos quien ya ha estudiado con anterioridad lo que es un
vector...

Ejercicios propuestos sobre vectores:

(5.3.5) Un programa que pida al usuario los datos de dos vectores en el plano (2 coordenadas) y calcule
su diferencia.
(5.3.6) Un programa que pida al usuario las componentes de dos vectores en el espacio (3 coordenadas)
y calcule su producto escalar.
(5.3.7) Un programa que pida al usuario las componentes de dos vectores en el espacio y calcule su
producto vectorial.
(5.3.8) Un programa que pida al usuario dos vectores en el plano (2 coordenadas) y diga si son
linealmente dependientes (sus componentes son proporcionales).

http://www.aprendeaprogramar.com/mod/resource/view.php?id=492 5/9
31/10/2017 5. Vectores y matrices - AprendeAProgramar.com

5.4. Tablas bidimensionales


Podemos declarar tablas de dos o ms dimensiones. Por ejemplo, si queremos guardar datos de dos grupos
de alumnos, cada uno de los cuales tiene 20 alumnos, tenemos dos opciones:

Podemos usar int datosAlumnos[40] y entonces debemos recordar que los 20 primeros datos
corresponden realmente a un grupo de alumnos y los 20 siguientes a otro grupo.
O bien podemos emplear int datosAlumnos[2][20] y entonces sabemos que los datos de la forma
datosAlumnos[0][i] son los del primer grupo, y los datosAlumnos[1][i] son los del segundo.

En cualquier caso, si queremos indicar valores iniciales, lo haremos entre llaves, igual que si fuera una tabla de
una nica dimensin. Vamos a verlo con un ejemplo de su uso:

// Introduccin a C++, Nacho Cabanes


// Ejemplo 05.05:
// Array de dos dimensiones

#include <iostream>
using namespace std;

int main()
{
int notas[2][10] =
{
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
{11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }
};

cout << "La nota del tercer alumno del grupo 1 es "
<< notas[0][2];

return 0;
}

Este tipo de tablas son las que se usan tambin para guardar matrices, cuando hay que resolver problemas
matemticos ms complejos. Por ejemplo, un programa que pida al usuario los datos de dos matrices de 3x3 y
luego muestre su suma podra ser as:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=492 6/9
31/10/2017 5. Vectores y matrices - AprendeAProgramar.com

// Introduccin a C++, Nacho Cabanes


// Ejemplo 05.06
// Matrices, primer contacto

#include <iostream>
using namespace std;

int main()
{
float matriz[2][3][3];
float matrizSuma[3][3];
int m, fila, columna;

// Pedimos los datos de las dos matrices


for (m=0; m<2; m++)
for (fila=0; fila<3; fila++)
for (columna=0; columna<3; columna++)
{
cout << "En la matriz " << m+1
<< ", dime el dato de la fila " << fila+1
<< " y la columna " << columna+1 << ": ";
cin >> matriz[m][fila][columna];
}

// Calculamos la suma
for (fila=0; fila<3; fila++)
for (columna=0; columna<3; columna++)
matrizSuma[fila][columna] = matriz[0][fila][columna]
+ matriz[1][fila][columna];

// Y mostramos el resultado (puede salir un poco descolocado)


cout << "La matriz suma es " << endl;
for (fila=0; fila<3; fila++)
{
for (columna=0; columna<3; columna++)
cout << matrizSuma[fila][columna] << " ";
cout << endl;
}

return 0;
}

Cuidado: no podemos dar por sentado que los datos de un array tengan valor inicial 0, sino que pueden
contener "basura" (lo que hubiera en cada posicin de memoria anteriormente), de modo que este programa es
incorrecto y puee mostrar resultados incorrectos:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=492 7/9
31/10/2017 5. Vectores y matrices - AprendeAProgramar.com

// Introduccin a C++, Nacho Cabanes


// Ejemplo 05.06b:
// Matrices, lgica errnea (sin dar valor inicial)

#include <iostream>
using namespace std;

int main()
{
float matriz[2][3][3];
float matrizSuma[3][3];
int m, fila, columna;

// Pedimos los datos de las dos matrices


for (m=0; m<2; m++)
for (fila=0; fila<3; fila++)
for (columna=0; columna<3; columna++)
{
cout << "En la matriz " << m+1
<< ", dime el dato de la fila " << fila+1
<< " y la columna " << columna+1 << ": ";
cin >> matriz[m][fila][columna];
}

// Calculamos la suma
for (m=0; m<2; m++)
for (fila=0; fila<3; fila++)
for (columna=0; columna<3; columna++)
matrizSuma[fila][columna] += matriz[m][fila][columna];
// La lnea anterior es errnea: estamos dando por sentado
// que la matriz suma contiene ceros, y quiz no sea as

// Y mostramos el resultado (puede salir un poco descolocado)


cout << "La suma es ";
for (fila=0; fila<3; fila++)
{
for (columna=0; columna<3; columna++)
cout << matrizSuma[fila][columna] << " ";
cout << endl;
}

return 0;
}

Ejercicios propuestos sobre matrices:

(5.4.1) Un programa pida datos al usuario los datos de una matriz de 2x2 y muestra su traspuesta (el
resultado de intercambiar filas por columnas).
(5.4.2) Un programa que pida al usuario los datos de una matriz de 3x3, y muestre su determinante.
(5.4.3) Un programa que pida al usuario los datos de una matriz de 3x3, y calcule y muestre su matriz
adjunta.
(5.4.4) Un programa que pida al usuario los datos de una matriz de 3x3, y calcule y muestre su matriz
inversa.
(5.4.5) Un programa que pida al usuario los datos de dos matrices de 2x2, y calcule y muestre su
producto.

http://www.aprendeaprogramar.com/mod/resource/view.php?id=492 8/9
31/10/2017 5. Vectores y matrices - AprendeAProgramar.com
(5.4.6) Un programa que use una matriz de 3x4 para resolver un sistema de 3 ecuaciones con 3
incgnitas usando el mtodo de Gauss (hacer ceros por debajo de la diagonal principal para luego
aplicar sustitucin regresiva).

5.5. Arrays indeterminados.


Si damos un valor inicial a un array, no ser necesario que indiquemos su tamao, porque el compilador lo
puede saber contando cuantos valores hemos detallado, as:

// Introduccin a C++, Nacho Cabanes


// Ejemplo 05.07:
// Arrays en los que no se indica el tamao

#include <iostream>
using namespace std;

int main()
{
int diasMes[] = // Das de cada mes
{31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31};

cout << "Los das de noviembre son: " << diasMes[10];


return 0;
}

Ejercicios propuestos:

(5.5.1) Un programa que, a partir de los datos prefijados de los das de cada mes, diga qu meses tienen
30 das. Se deber mostrar el nmero de cada mes, pero empezando a contar desde 1 (abril ser el mes
4).

Actualizado el: 01-09-2013 23:57

Anterior (view.php?id=491) Posterior (view.php?id=493)


6 90

Buscar...

En los foros
30-10-2017 20:58 Consulta a 3 tablas [SQL] (../../mod/forum/discuss.php?d=3152)
30-10-2017 19:56 Como puedo convertir esto en una funcion [Python] (../../mod/forum/discuss.php?d=3140)
30-10-2017 19:36 Vehiculos de Braitenberg [Python] (../../mod/forum/discuss.php?d=3133)
30-10-2017 01:46 Ayudenme en este codigo [C++] (../../mod/forum/discuss.php?d=3132)
29-10-2017 23:46 referencia a objeto no establecida como instancia de un objeto c# AYUUUUDAAAA [C#]
(../../mod/forum/discuss.php?d=3131)
(Anteriores...) (../../novedadesForos.php)

AprendeAProgramar.com
Cursos gratuitos de programacion de ordenadores, en espaol
Por qu? (../../porque.php)
Preguntas frecuentes (../../preguntasFrecuentes.php)

(https://twitter.com/AprendeAProg) (https://plus.google.com/+aprendeaprogramar/posts)

http://www.aprendeaprogramar.com/mod/resource/view.php?id=492 9/9

También podría gustarte