Está en la página 1de 19

UNIDAD I:

ARREGLOS

ARREGLOS, MATRICES Y VECTORES.


Arreglos?

Es una estructura de Datos Esttica.


Los datos que almacena son de un mismo tipo.
Se declaran con un tipo y un identificador.
Emplea ndices o subndices para identificar las posiciones.
Tipos de Arreglos

Arreglo Unidimensional (vector): Es un arreglo que


almacena un conjunto finito y ordenado de elementos.
Cada elemento posee un ndice que designa la posicin
que este ocupa en el vector.

Las operaciones de lecturas y recorrido se efectan


empleando un ciclo (for, while, do while) o indicando la
posicin correspondiente en los corchetes que le
acompaan: V[0]=5; (se le asigna al primer valor del
vector la cantidad de 5).

Declaracin de un Vector:
Tipo_de_Dato Nomb_Vector [Num_de_datos]
Ej: int V[50];
Donde:
Tipo_de_Dato : Tipos de datos manejado (int, float, char, etc)
Nomb_Vector : es el nombre que se desea emplear para el vector
Num_Fila : nmero correspondiente a la cantidad de datos (es entero)

1. Porque el uso de un Vector?


2. Como insertar datos en un Vector?
3. Como leer datos en un Vector?

Ejemplo 1:
Cree un programa que permita introducir la nota de 10 alumnos
cualquiera, borrar la pantalla y luego mostrarlas nuevamente por pantalla.
#include<iostream>
using namespace std;
int main()
{
int i, notas[10];
cout <<"Introduzca la nota de 10 alumnos cualquiera:\n";
for (i=0;i<10;i++)
{
cout <<"\nNota "<<i+1<<": ";
cin >>notas[i];
}
system("cls");
cout <<"Las 10 notas de los alumnos son:\n";
for (i=0;i<10;i++)
{
cout <<"\nNota "<<i+1<<": "<<notas[i];
}
cout <<"\n\n";
system("Pause");
return 0;
}

Ejemplo 2:
Cree un programa que permita introducir la nota de n alumnos, calcule el promedio, borre la
pantalla y luego mostrar por pantalla las notas y el promedio.
#include <iostream>
using namespace std;
int main()
{
int n, i, total, notas[n] ;
float promedio;
total=0, promedio=0;
cout <<"Indique la cantidad de Alumnos de Computacion: ";
cin >>n;
for (i=0;i<n;++i)
{
cout <<"Int. la nota" <<i+1 <<": ";
cin >> notas[i];
total=total+notas[i];
}
system("cls");
cout <<"Las notas de los alumnos son:\n";
for (i=0;i<n;++i)
{
cout <<"\nNota "<<i+1<<": "<<notas[i];
}
promedio=total/n;
cout << "\n\nEl promedio es: " <<promedio <<"\n";
system("PAUSE");
return 0;
}

Ejercicios:
1. Realice un programa que permita introducir n cantidad de
temperaturas, calcule la media e indique cuantas temperaturas
son mayores o iguales a la media.
2. Realice un programa que permita introducir 5 numeros cualquiera
y luego introducir el numero de la posicion del numero que desea
imprimir por pantalla.

Arreglo Bidimensional (Matriz): Es un vector de vectores,


por ello almacena elementos de un mismo tipo y se especifican
dos ndices -[filas][columnas]- para identificar los mismos.

Declaracin de una Matriz:


Tipo_de_Dato Nomb_Matriz [Num_Fila][Num_Colum]
Ej: int M[50][50];
Donde:
Tipo_de_Dato : Tipos de datos manejado (int, float, char, etc)
Nomb_Matriz : es el nombre que se desea emplear para la matriz
Num_Fila : nmero correspondiente a las filas (es entero)
Num_Colum : nmero correspondiente a las columnas (es entero)

Inicializacin: Una matriz o arreglo bidimensional se puede


inicializar de este modo:
int matriz[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
Creando en memoria una matriz igual a:

123
456
789

Tambin se puede inicializar de la siguiente forma:


int matriz[3][3] = {0}; Y quedara:
000
000
000

Insercin de Elementos en una Matriz: Por lo general se emplean dos


ciclos, uno para hacer el recorrido por las filas y otro para recorrer las
columnas.
cout << "\nIntroduzca los valores de la primera matriz: ";
for(i=0;i<f;++i)
{
for(j=0;j<c;++j)
{
cout << "\n A[" << i+1 << "][" <<j+1<< "]:";
cin >> a[i][j];
}
}
Se puede especificar directamente la posicin y asignarle un valor:
a[2][2] = 15.78;

Recorrido de una Matriz: Para hacer el recorrido se emplean ciclos.


La cantidad de los mismos dependern de lo que se desee, es decir,
recorrer una fila, una columna o toda la matriz.
cout << "\nIntroduzca los valores del orden de la matriz: ";
for(i=0;i<f;++i)
{
for(j=0;j<n;++j)
{
if(M[i][j]<0)
{
c++; //nmeros negativos en la matriz
}
}
}

En este ejemplo se da un
recorrido dentro de cada
elemento de la matriz,
verificando uno por uno si
son valores negativos.
Ntese la presencia de un
contador dentro de la
condicin.

cout << "\n Valores de la Matriz: \n";


for(i=0;i<n;++i)
{
cout << "\n";
for(j=0;j<n;++j)
{
cout << M[i][j] << " ";
}
}

Tambin es posible dibujar


la estructura de la matriz en
pantalla: el for externo
dibuja fila a fila mientras el
interno dibuja las columnas.
El operador \n baja una
lnea en cada cambio de
fila.

EJEMPLOS

Ejemplo 1: Cree un programa que calcule el determinante de una matriz


cuadrada de dimensin 2. Imprima la matriz en pantalla junto con su
determinante.

#include <iostream>
using namespace std;
int main()
{
int i,j;
float M[2][2], det;
cout << "Introduzca los valores del orden de la
matriz: ";
for(i=0;i<2;++i)
{
for(j=0;j<2;++j)
{
cout << "\n M[" << i+1 << "][" <<j+1<< "]:";
cin >> M[i][j];
}
}
det=M[0][0]*M[1][1]-M[0][1]*M[1][0];
cout << "\n Valores de la Matriz: \n";
for(i=0;i<2;++i)
{
cout << "\n\t";
for(j=0;j<2;++j)
{
cout << M[i][j] << " ";
}
}
cout << "\n El Determinante es: " << det << "\n";
system("pause");
}

NOTA: el ejercicio anterior tambin se puede realizar definiendo un valor constante usando el
comando: #define.
#define Es una directiva del preprocesador de C que sirve para definir constantes literales o macros .
Este se encarga no de compilar, sino de realizar modificaciones en el texto del cdigo fuente, como
reemplazar un smbolo definido con #define por un texto.
Macro es una especie de frmula para la sustitucin de texto dentro del fichero fuente, y puede usar,
opcionalmente parmetros.
Ejemplo:
#define suma(a,b) ((a)+(b))
Los parntesis en el cuerpo de la macro son necesarios para que funcione correctamente en todos
los casos, lo veremos mucho mejor con otro ejemplo:
#include <iostream>
using namespace std;
#define mult1(a,b) a*b
#define mult2(a,b) ((a)*(b))
int main() {
// En este caso ambas macros funcionan bien:
cout << mult1(4,5) << endl;
cout << mult2(4,5) << endl;
// En este caso la primera macro no funciona, por qu?:
cout << mult1(2+2,2+3) << endl;
cout << mult2(2+2,2+3) << endl; return 0;
}

El ejemplo 2 hecho
anteriormente quedara
as:
Ventaja principal: En caso de
realizar una matriz con otra
dimension solo se coloca el
nuevo valor que corresponde
en el #define

#include <iostream>
using namespace std;
#define rango 2
int main()
{
int i,j;
float M[rango][rango], det;
cout << "Introduzca los valores del orden de la matriz: ";
for(i=0;i<rango;++i)
{
for(j=0;j<rango;++j)
{
cout << "\n M[" << i+1 << "][" <<j+1<< "]:";
cin >> M[i][j];
}
}
det=M[0][0]*M[1][1]-M[0][1]*M[1][0];
cout << "\n Valores de la Matriz: \n";
for(i=0;i<rango;++i)
{
cout << "\n\t";
for(j=0;j<rango;++j)
{
cout << M[i][j] << " ";
}
}
cout << "\n El Determinante es: " << det << "\n";
system("pause");
}

Ejemplo 2: Cree un programa que lea una matriz cuadrada de dimensin n;


calcule y visualice la suma de la diagonal principal.

#include <iostream>
using namespace std;
#define rango 100
int main()
{
int i, j, n;
float M[rango][rango], s=0;
cout << "Dimensin de la matriz: ";
cin >> n;
cout << "\nIntroduzca los valores de la matriz: ";
for(i=0;i<n;++i)
{
for(j=0;j<n;++j)
{
cout << "\n M[" << i+1 << "][" <<j+1<< "]:";
cin >> M[i][j];
if(i==j)
{
s+=M[i][j];
}
}
}

cout << "\n Valores de la Matriz: \n";


for(i=0;i<n;++i)
{
cout << "\n\t";
for(j=0;j<n;++j)
{
cout << M[i][j] << " ";
}
}
cout << "\n La suma de la diagonal
principal es: " << s << "\n";
system("pause");
}

También podría gustarte