Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ARREGLOS
UNIDIMENSIONALES Y
BIDIMENSIONALES
I Qu son arreglos unidimensionales?
Un arreglo de una dimensin (unidimensional) (vector o array) es un tipo de datos
estructurado compuesto de un nmero de elementos finitos y elementos del mismo tipo.
I Cmo se declara un arreglo unidimensional?
F Para declarar un arreglo se debe tener en cuenta:
tipo nombre[tamao];
Tipo
: Algn tipo de datos (int.float,char,....)
Nombre : Nombre que damos al arreglo
Tamao : Nmero de elementos del arreglo
El AB del C - Alvarez/Ceballos/Alvarez 73
Sin embargo, es ms conveniente usar una cadena literal, que es una secuencia de
caracteres encerrada entre comillas dobles.
char cadena[10] = "Lenguaje";
El AB del C - Alvarez/Ceballos/Alvarez 74
El AB del C - Alvarez/Ceballos/Alvarez 75
El AB del C - Alvarez/Ceballos/Alvarez 76
#define DIM 3
/* DEFINICION DE FUNCIONES */
void leer_vector(int vec[ ])
{
for(int i=0;i<DIM;i++)
{
printf("Vector[%d] = ",i+1);
scanf("%d",&vec[i]);
}
}
int elemento_max(int vec[ ])
{
int mayor,i;
mayor = vec[0];
i=1;
while(i<DIM)
{
if(vec[i] > mayor)
mayor = vec[i];
i++;
}
return mayor;
}
void main(void)
{
int mayor, vector[DIM];
clrscr();
leer_vector(vector);
mayor = elemento_max(vector);
printf("Elemento maximo contenido en el array = %d",mayor);
getch();
}
4. /* Encontrar la media aritmtica de un vector de nmeros reales.*/
#include <stdio.h>
#include <conio.h>
El AB del C - Alvarez/Ceballos/Alvarez 77
#define DIM 3
/* DEFINICION DE FUNCIONES */
void leer_vector(float vec[ ])
{
for(int i=0;i<DIM;i++)
{
printf("Vector[%d] = ",i+1);
scanf("%f",&vec[i]);
}
}
float suma_elementos(float vec[ ])
{
float sum=0;
for(int i=0;i<DIM;i++)
sum = sum + vec[i];
return sum;
}
void main(void)
{
float suma, vector[DIM];
clrscr();
leer_vector(vector);
suma = suma_elementos(vector);
printf("La media es = %.2f",suma/DIM);
getch();
}
5. /* Leer una lnea de texto en minscula y escribirla en mayscula*/
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#define TAMANO 8
void main()
{
clrscr();
El AB del C - Alvarez/Ceballos/Alvarez 78
char letra[TAMANO];
int cont;
for(cont=0; cont<TAMANO; cont++)
letra[cont] = getchar();
for(cont=0; cont<TAMANO;cont++)
printf("%c",toupper(letra[cont]));
getch();
}
6. /* Calcular la varianza de los valores de un arreglo de nmeros enteros.*/
#include <stdio.h>
#include <conio.h>
#define DIM 3
/* DEFINICION DE FUNCIONES */
void leer_vector(int vec[ ])
{
for(int i=0;i<DIM;i++)
{
printf("Vector[%d] = ",i+1);
scanf("%d",&vec[i]);
}
}
int suma_elementos(int vec[ ])
{
int sum=0;
for(int i=0;i<DIM;i++)
sum = sum + vec[i];
return sum;
}
void main(void)
{
int suma, vector[DIM];
float med, sum=0;
clrscr();
leer_vector(vector);
suma = suma_elementos(vector);
med = (float) suma/DIM; /* valor medio en el array */
El AB del C - Alvarez/Ceballos/Alvarez 79
for(int i=0;i<DIM;i++)
sum = sum + ((vector[i]-med)*(vector[i]-med));
/* calcula la suma de cada elemento del array - el valor medio */
printf("La varianza es = %f ",sum/DIM);
getch();
}
: TALLER 2
1. /* Leer dos vectores de nmeros enteros e imprimir su producto escalar*/
#include <stdio.h>
#include <conio.h>
#define TAM 50
/* DEFINICION DE FUNCIONES */
void leer_vector(float vec[ ],int dimension)
{
for(int i=0;i<dimension;i++)
{
printf("Vector[%d] = ",i+1);
scanf("%f",&vec[i]);
}
}
void producto_punto(float vec1[ ], float vec2[ ], int dimension)
{
float suma=0;
/* multiplica componente a componente y lo suma en el acumulador */
for(int i=0;i<dimension;i++)
suma = suma + vec1[i]*vec2[i];
printf("Producto Punto = %.2f ",suma);
}
void main(void)
{
float vector1[TAM];
float vector2[TAM];
int dim;
clrscr();
printf("Producto Punto\n");
printf("Entre dimensin de los vectores: ");
El AB del C - Alvarez/Ceballos/Alvarez 80
scanf("%d",&dim);
printf("Entre primer vector\n");
leer_vector(vector1,dim);
printf("Entre segundo vector\n");
leer_vector(vector2,dim);
producto_punto(vector1,vector2,dim);
getch();
}
2. /* Leer un vector de nmeros enteros e imprimir su norma.*/
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define TAM 50
/* DEFINICION DE FUNCIONES */
void leer_vector(float vec[ ],int dimension)
{
for(int i=0;i<dimension;i++)
{
printf("Vector[%d] = ",i+1);
scanf("%f",&vec[i]);
}
}
void norma(float vec[ ], int dimension)
{
float suma=0;
/* raz cuadrada del producto punto */
for(int i=0;i<dimension;i++)
suma = suma + vec[i]*vec[i];
printf("Norma = %.2f ",sqrt(suma));
}
void main(void)
{
float vector[TAM];
int dim;
clrscr();
printf("Norma\n");
El AB del C - Alvarez/Ceballos/Alvarez 81
Columnas
I Cmo se declara un arreglo bidimensional?
F La forma de declarar un arreglo bidimensional es similar a la declaracin de los
arreglos de una dimensin, exceptuando que aqu se manejan dos subndices, uno para
las filas y otro para las columnas.
Para declarar un arreglo se debe tener en cuenta:
Tipo
:Algn tipo de datos
Nombre
:Nombre que damos al arreglo
Tamao1 y Tamao2
:Expresiones enteras positivas que indican el
nmero de elementos del arreglo asociado con cada ndice.
Tipo nombre[tamao1][tamao2];
El AB del C - Alvarez/Ceballos/Alvarez 82
vector[0][1]=2
vector[1][1]=5
vector[2][1]=8
vector[0][2]=3
vector[1][2]=6
vector[2][2]=9
El AB del C - Alvarez/Ceballos/Alvarez 83
El AB del C - Alvarez/Ceballos/Alvarez 84
lee_matriz(filas,col,matriz1);
printf("Primera Matriz\n");
imp_matriz(filas,col,matriz1);
printf("\n");
lee_matriz(filas,col,matriz2);
printf("\n");
printf("Segunda Matriz\n");
imp_matriz(filas,col,matriz2);
suma_matriz(filas,col,matriz1,matriz2,matriz3);
printf("\n\n");
printf("La suma de las dos matrices es:\n");
imp_matriz(filas,col,matriz3);
getch();
}
2. /* Multiplicar una matriz por un escalar */
#include <stdio.h>
#include <conio.h>
/* DEFINICION DE FUNCIONES */
void lee_matriz(int m,int n, int matriz[10][10])
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
printf("x[%d,%d]=",i+1,j+1);
scanf("%d",&matriz[i][j]);
}
}
void imp_matriz(int m,int n, int matriz[10][10])
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%4d",matriz[i][j]);
printf("\n");
}
}
El AB del C - Alvarez/Ceballos/Alvarez 85
El AB del C - Alvarez/Ceballos/Alvarez 86
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
printf("x[%d,%d]=",i+1,j+1);
scanf("%d",&matriz[i][j]);
}
}
void imp_matriz(int m,int n, int matriz[10][10])
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%4d",matriz[i][j]);
printf("\n");
}
}
void invertir_vector(int n,int vector[])
{
/* invierte un vector de nmeros enteros */
int i,j;
int vector2[20];
j=n-1;
for(i=0;i<n;i++)
{
vector2[j]=vector[i];
j--;
}
for(i=0;i<n;i++)
vector[i]=vector2[i];
}
void invertir_matriz(int dim1,int dim2,int matriz[10][10])
{
int i,j,k=0,m=0;
int vec[50];
for(int l=0;l<dim1*dim2;l++)
vec[l]=0;
for(i=0;i<dim1;i++)
El AB del C - Alvarez/Ceballos/Alvarez 87
for(j=0;j<dim2;j++)
{
/* paso de los elementos de la matriz al vector en orden */
vec[k]=matriz[i][j];
k++;
}
invertir_vector(dim1*dim2,vec); /* invierte los elementos */
m=0;
for(i=0;i<dim1;i++)
for(j=0;j<dim2;j++)
{
/* asignacin de valores del vector ya invertido
a la matriz original
*/
matriz[i][j]=vec[m];
m++;
}
}
void main()
{
int matriz[10][10];
int fil,col;
clrscr();
printf("\n");
printf("Invertir matriz\n");
printf("Entre dimensiones de la matriz\n");
printf("Filas: ");
scanf("%d",&fil);
printf("Columnas: ");
scanf("%d",&col);
lee_matriz(fil,col,matriz);
imp_matriz(fil,col,matriz);
invertir_matriz(fil,col,matriz);
printf("Matriz invertida\n");
imp_matriz(fil,col,matriz);
getch();
}