Está en la página 1de 12

Ministerio de Educación Superior

Universidad de Guantánamo
Facultad de Ingenieria y ciencias Técnicas
Clase encuentro No.1 .2 Tipos de datos estructurados
Profesor: Ing. Yenis Moro Durán. Instructor

Tema no.3 Estructuras para el manejo de la memoria interna

CONTENIDOS

3 .1. Tipo de datos estructurados.

3.1. Vectores

3.1.1. Consulta

3.1.2 Asignación

3.1.3. Ejemplos

3.3. Arreglos multidimensionales. Matrices.

3.3.1. Consulta

3.3.2 Asignación

3.4. Ejemplo 1. Cálculo de la matriz traspuesta.

Ejemplo 2. Cómo recorrer una matriz.

3.5. Procesos algebraicos. Suma de matrices. Multiplicación de matrices.


¿Qué ocurriría si tuviésemos que contar las apariciones de los cien primeros números enteros?
¿Deberíamos declarar cien contadores y escribir cien construcciones if para cada caso? La
respuesta, como era de esperar, se halla en el uso de vectores. Veámoslo en el siguiente
programa:

#include <stdio.h>

#define MAX 100

void main ()

int i, num, cont[MAX];

for (i= 0; i< MAX; i++)

cont[i] = 0;

cin>>num;

while (num != -1) {

if ((num >= 0) && (num <= MAX))

cont[num]++;

cin>>num ; }

for (i= 0; i< MAX; i++)

cout<< "Contador ", <<i<< cont[i];

}
Veamos finalmente otro ejemplo en el que se muestra cómo normalizar un vector de números
reales. La normalización consiste en dividir todos los elementos del vector por la raíz cuadrada
de la suma de sus cuadrados. Destaca el uso de la constante MAX para definir el número de
elementos del vector y de la función sqrt para el cálculo de raíces cuadradas.

#include <math.h>

#include <stdio.h>

#define MAX 10

void main()

float vector[MAX], modulo; int i;

/* Lectura del vector. */

for (i= 0; i< MAX; i++)

cin>>vector[i];

/* Calcular módulo. */

modulo = 0.0;

for (i= 0; i< MAX; i++)

modulo = modulo + (vector[i] * vector[i]);

modulo = sqrt(modulo);

/* Normalizar */

for (i= 0; i< MAX; i++) vector[i] /= modulo;

/* Escritura del vector. */

for (i= 0; i< MAX; i++ )

cout<< vector[i];

3.3. Arreglos multidimensionales. Matrices.


Obsérvese que para recorrer todos los elementos de una matriz es necesario el empleo de dos
bucles anidados que controlen los ´ índices de filas y columnas (siempre entre 0 y el número de
filas o columnas menos 1). En este ejemplo todos los recorridos se realizan “por filas”, es decir,
que primero se visitan todos los elementos de una fila, luego los de la siguiente, etc.
Finalmente, cabe comentar que para el recorrido de tablas multidimensionales será necesario
el empleo de tantos bucles como dimensiones tenga la tabla.

3.4. Ejemplo 2. ¿Cómo recorrer una matriz?

Suponga que desea almacenar una tabla de las notas de 2 alumnos en tres asignaturas. Para
ello utilizaremos una matriz 2X3, lo que sería una matriz MxN, donde 2 representa a las filas y
3 a las columnas.
Int main(){

int nota[2][3]; // declaramos la matriz MxN

// a continuación recorremos la matriz para ir almacenando las notas: note que se utiliza un
ciclo for anidado. Dado que el primero por cada fila recorre cada columna.

for(int i=0; i<=2; i++){

for(int j=0; j<=3; j++){

cin>> nota[i][j]

// ahora volveremos a recorrer la matriz, pero esta vez para mostrar las notas.

for(int i=0; i<=2; i++){

for(int j=0; j<=3; j++){

cout<< nota[i][j]

3.5. Procesos algebraicos. Suma de matrices. Multiplicación de matrices.

Suponga que ya almacenó las notas de dos alumnos de tres asignaturas.

4 5 4
2 3 5
Donde la primera fila corresponde a las notas del alumno1 y la segunda fila a las notas del
alumno dos. Se desea hallar el promedio de las notas del alumno 1 y 2.

int main() {

int nota[2][3]={{4,5,4}, {2,3,5}}, suma[2]={0}; float promedio[2]={0}; int j,i, alumno;


//// promedio del ALUMNO 1.

cout<< "entra el numero del alumno al que le desea calcular el promedio" <<endl;

cin>> alumno;

while(alumno!=-1){

if(alumno>10){ cout<< "ingrese un numero correcto"<< endl;}

else {

for(i=0; i<=3-1; i++){

suma[alumno]=suma[alumno]+nota[alumno][i]; }

promedio[alumno]=suma[alumno]/3;}

cout<< "entra el número del alumno al que le desea calcular el promedio, -1 para
terminar" <<endl;

cin>> alumno;

cout<<"entra el promedio del alumno número que desea conocer el


promedio : " << endl;

cin>>alumno;

cout << "el promedio del alumno es" << promedio[alumno]<< endl;

system("pause");

return 0; } // fin de main


Ejemplo: 2

El siguiente ejemplo muestra el empleo de una tabla multidimensional. Concretamente, el


programa utiliza una tabla de 3 dimensiones para almacenar 1000 n´umeros aleatorios. Para
generar números aleatorios se usa la función rand de la librería estándar stdlib.h. Tambi´en se
ha usado la función getchar (stdio.h), que interrumpe el programa y espera a que el usuario
presione una tecla

#include <stdio.h>

#include <stdlib.h>

#define DIM 10

void main()

int tabla_random [DIM][DIM][DIM], a, b, c;

for (a= 0; a< DIM; a++)

for (b= 0; b< DIM; b++)

for (c= 0; c< DIM; c++)

tabla_random[a][b][c] = rand();

/* Muestra series de DIM en DIM elementos. */

for (a= 0; a< DIM; a++)

for (b= 0; b < DIM; b++)

for (c= 0; c < DIM; c++)

Cout<< tabla_random[a][b][c] ;

printf( "nnPulse ENTER para seguir" ); getchar();

Cout<< “Pulse enter para seguir”;

getchar();

También podría gustarte