Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Arreglos multidimensionales (matrices) en C++

Material de apoyo materia "Programación Avanzada"
by

Lourdes Cahuich

on 17 October 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Arreglos multidimensionales (matrices) en C++

Arreglos multi-dimensionales
Arreglos en C++ (cont.)
Introducción
La organización del arreglo en memoria es igual (una secuencia contigua de elementos), pero la percepción del programador de la organización de los elementos es diferente,
Representación en C++
Esto puede representarse como un arreglo de dos dimensiones de enteros:

int seasonTemp[3][4];

La organización de este arreglo en memoria es de 12 elementos enteros consecutivos.
El programador, sin embargo, puede imaginar tres renglones con cuatro celdas de enteros cada una.
El arreglo puede inicializarse usando un inicializador anidado:

int seasonTemp[3][4] = {
{26, 34, 22, 17},
{24, 32, 19, 13},
{28, 38, 25, 30}
};
De igual manera, los elementos se acceden mediante índices. Se necesita un índice separado por cada dimensión. Por ejemplo, en la tabla anterior, el promedio de temperatura en verano en Sydney (primer renglón, segunda columna) se accede mediante seasonTemp[0][1].
Un arreglo pude tener más de una dimensión (por ejemplo, dos o tres o más alto).
O lo que es lo mismo, podemos representar matrices usando arreglos de varias dimensiones.
Por ejemplo, suponga que deseamos representar un promedio estacional de temperaturas para tres de las principales ciudades australianas.
Debido a que esto está mapeado en memoria como un arreglo de una dimensión de 12 elementos en memoria, es equivalente a:

int seasonTemp[3][4] = {
26, 34, 22, 17, 24, 32, 19, 13, 28, 38, 25, 20
};
Sin embargo se prefiere la inicialización anidada debido a que es más claro y más versátil.
El siguiente arreglo muestra una función para encontrar la mayor temperatura en seasonTemp.

const int renglones = 3;
const int columnas = 4;

int seasonTemp[renglones][columnas]={
{26, 34, 22, 17},
{24, 32, 19, 13},
{28, 38, 25, 30}
};

int MasAltaTemp(int temp[renglones][columnas])
{
int masAlta = 0;

for(register i = 0; i < renglones; ++i)
for (register j = 0; j < columns; ++j)
if (temp[i][j] > masAlta)
masAlta = temp[i][j];
return masAlta;
}
Operaciones básicas con matrices
Aquí se muestra un ejemplo de código en C++ para implementar la multiplicación de matrices.
#inc
lude <iostream>

using namespace std;

int operacion(int[][100], int[][100], int[][100], int, int, int, int);

int main(){
int f, c, r, f1, f2, c1, c2, m1[100][100], m2[100][100], mr[100][100];
f1 = 0; c1 = 0; f2 = 0; c2 = 0;
cout << "Introduce las filas de la matriz 1(1-100):"; cin >> f1;
cout << "Introduce las columnas de la matriz 1(1-100):"; cin >> c1;

for (f = 0; f <= f1; f++){
for (c = 0; c <= c1; c++){
cout << "m1[" << f << "],[" << c << "] = "; cin >> m1[f][c];
}
}

cout << "Introduce las filas de la matriz 2(1-100):"; cin >> f2;
cout << "Introduce las columnas de la matriz 2(1-100):"; cin >> c2;

for (f = 0; f <= f2; f++){
for (c = 0; c <= c2; c++){
cout << "m2[" << f << "],[" << c << "] = "; cin >> m2[f][c];
}
}
for (f = 0; f <= f1; f++){
for (c = 0; c <= c1; c++)
mr[f][c] = 0;
}


r = operacion(m1,m2,mr,f1,f2,c1,c2);
if (r == -1) cout << endl << "No se pudo realizar la operación ya que el tamanio de las materices no es apropiado";
else{
cout << endl;
for (f = 0; f <= f1; f++){
for (c = 0; c <= c2; c++)
cout << " " << mr[f][c];
}
}

cout << endl << "Fin de programa..." << endl;
system("pause");
return 0;
}

int operacion(int m1[][100], int m2[][100], int mr[][100], int f1, int f2, int c1, int c2){
int f, c, cc;
if (c1 == f2) //Sí se pueden multiplicar
{
for (cc = 0; cc <= c2; cc++){
for (f = 0; f <= f1; f++){
for (c = 0; c <= c1; c++)
mr[f][cc] += m1[f][c] * m2[c][cc];
}
}
return 1;
}
else
return -1;

}
Full transcript