U5 Arreglo
Arreglos:
U5MatrizUno
En el siguiente programa se va a declarar un arreglo bidimensional o mas bien conocido como matriz.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int mat1 [2][3]={1,2,3,4,5,6};//[renglones][columnas]
int r,c;
for(r=0;r<2;r++)//recorre los renglones para las posiciones de 0 a 3
{
for(c=0;c<3;c++)//recorre las columnas para posiciones 0 a 3
{
printf("%i\t",mat1[r][c]);//imprime los datos de las respectivas posiciones
}
printf("\n");
}
}
U5MatrizDos
En el siguiente programa se observa que las matrices también pueden tener caracteres, ademas que se explicar de una forma mas visual como es la cuestión de las posiciones de los datos dentro del arreglo.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char mat1[3][3]={'A','B','C','D','E','F','G','H','I'};//pueden ser datos de tipo caracter
int r,c;//variables auxiliares para la imprecion
for(r=0;r<3;r++)//recorre las posiciones de los renglones de 0 a 2
{
for(c=0;c<3;c++)//recorre ls columnas de 0 a 2
{
printf("%i,%i %c \t ",r,c,mat1[r][c]);//imprime la posicion y el dato
}
printf("\n");
}
}
U5MatrizPracticaUno
En el siguiente programa se declara la matriz identidad y se suma con otra igual.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a [3][3];
int re [3][3];
int id [3][3];
int id2 [4][4];
int r,c,i;
//matriz identidad
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
if(r==c)
id[r][c]=1;
else
id[r][c]=0;
}
}
//sumar dos matrices identidad
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
re[r][c]=id[r][c]+id[r][c];
}
}
//imprimir
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
printf("%d",re[r][c]);
}
printf("\n");
}
}
U5MatrizIdentidadConFunciones
El siguiente programa por medio de las funciones es posibles imprimir cualquier matriz identidad sin importar su tamaño.
#include <stdio.h>
#include <stdlib.h>
int matid(int ren,int col)
{
int id [ren][col];
int r,c;
//matriz identidad
for(r=0;r<ren;r++)
{
for(c=0;c<col;c++)
{
if(r==c)
id[r][c]=1;
else
id[r][c]=0;
}
}
//imprimir
for(r=0;r<ren;r++)
{
for(c=0;c<col;c++)
{
printf("%d",id[r][c]);
}
printf("\n");
}
}
main()
{ int renglon;
int columna;
printf("dame renglon\n");
scanf("%d",&renglon);
printf("dame columna\n");
scanf("%d",&columna);
matid(renglon,columna);
}
U5MultiplicacionDeMatrices
En el siguiente programa se multiplican 2 matrices cuadradas de 3x3, utilizando estructurs de control en su principal forma de for.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[3][3]={1,2,0,2,-1,-1,3,2,3};
int b[3][3]={2,1,1,-1,1,3,1,2,4};
int re[3][3];
int r;
int c;
printf("matriz a\n");
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
printf("%d",a[r][c]);
}
printf("\n");
}
printf("matriz b\n");
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
printf("%d",b[r][c]);
}
printf("\n");
}
//multiplicacion
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
re[r][c]=(a[r][0]*b[0][c])+(a[r][1]*b[1][c])+(a[r][2]*b[2][c]);
}
}
printf("multiplicacion de a*b\n");
//imprime el resultado de la multiplicacion
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
printf("%d",re[r][c]);
}
printf("\n");
}
}
Concepto de programación análogo a los conceptos matemáticos de vector, matriz y tensor,
existen arreglos unidimensionales, que se pueden interpretar como vectores columna, arreglos bidimencionales conocidos como matrices, y también existen los arreglos multidimensionales, son aquellos arreglos que manejan la tercera dimensión.
U5ArregloUno
A continuación se mostraran tres formas para declarar un vector e imprimir sus datos.
#include <stdio.h>
#include <stdlib.h>
int main()
{ ////Primer caso para declarar un vector
/*float y[3]; //utilizaremos variables flotantes
y[0]=7; //asignacion de valor a la posicion
y[1]=0.5;
y[2]=-2.7183;
printf("%f posicion 0 \n",y[0]); //se imprime uno en uno los valores
printf("%f posicion 1 \n",y[1]);
printf("%f posicion 2 \n",y[2]);*/
////Segundo caso para declarar un vector
/*int x[3];//vector de tamaño tres
int a;
x[0]=1; ///en la posicion cero valdra 1
x[1]=2;
x[2]=3;//en la posicion 2 valdra 3
for(a=0;a<3;a++) //estructura de control para imprimir los valores que tomo el vector
{
printf("%d\n",x[a]);
}*/
////Tercer caso para declarar un arreglo
int a;
int x[3]={1,2,3};//vector con tamaño tres y dentro de {} se declaran sus valores
for(a=0;a<3;a++)//para imprimir las posiciones del vector
{
printf("%d\n",x[a]);//se imprimen las posiciones del vector con su respectivo valor
}
}
U2ArregloDos
En el siguiente programa se muestra como se auto asignan los valores de las posiciones y como el usuario asigna los valores con la estructura de control for.
#include <stdio.h>
#include <stdlib.h>
int main()
{ //de esta forma con una estructura de control al vector se le asigna los valores de 1 a 5
/*int y[5];
int b;
for(b=0;b<5;b++)
{
y[b]=b+1;
printf("%d\n",y[b]);
} */
//pedir los datos al usuario
int y[5];
int b;//indice
for(b=0;b<5;b++)
{
printf("dame el numero %d\n",b);
scanf("%i",&y[b]);
}
for(b=0;b<5;b++)
{
printf("%d valor guardado \n",y[b]);
}
}
U5VectorUno
En este programa se declaran 2 vectores con sus respectivos valores y se realiza la resta de estos dos vectores mediante una estructura de control.
#include <stdio.h>
#include <stdlib.h>
int main()
{ //restaremos vector b - vector a
int a[5]={1,2,3,4,5}; //declaracion del vector a con tamaño 5
int b[5]={6,7,8,9,10}; //declaracion del vector b con tamaño 5
int r[5]; //aqui asignaremos la resta de los anteriores vectores
int i;
for(i=0;i<5;i++) //i tomara el valor de la posicion dentro del vector de 0 a 4
{
//printf("vector a: %i vector b: %i\n",a[i],b[i]); para carroborar que los datos esten bien asignados
r[i]=b[i]-a[i]; //se hace la resta de los valores dependiendo de su posicion y esta la define i
printf("vector b: %i - vector a: %i = %i\n",b[i],a[i],r[i]); //se imprime el resultado
}
}
U5VectorDos
En este programa se iniciaran dos vectores, y el usuario le asignara sus valores, para despues realizar la resta, todo es mediante la estructura for.
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a[5]; //vectores declarados
float b[5]; //es importante la mascara float ya que no se sabe si el usuario nos dara numeros decimales
float r[5];
int i;
printf("VALORES PARA PRIMER ARREGLO\n");
for(i=0;i<5;i++) //asignacion de valor de la posicion 0 a 4
{
printf("dame el dato a %i\n",i);
scanf("%f",&a[i]); //captura del dato
}
printf("VALORES PARA SEGUNDO ARREGLO\n");
for(i=0;i<5;i++)
{
printf("dame el dato b %i \n",i);
scanf("%f",&b[i]); //captura del dato
}
/*for(i=0;i<5;i++) //con esta estructura podemos corroborar los datos asignados
{
printf("lo guardadp en a %i es %d \n",i,a[i]);
printf("lo guardadp en b %i es %d \n",i,b[i]);
}*/
//Resta de los vectores a-b
for(i=0;i<5;i++) //se resta los datos de la posicion 0 a 4
{
r[i]=a[i]-b[i]; //se asignan los valores del resultado al vector r
}
for(i=0;i<5;i++)
{
printf("valor de %.2f - valor de %.2f = %.2f\n",a[i],b[i],r[i]); //imprecion de la resta
//printf("%.2f\n",r[i]);
}
}
U5VectorTres
El siguiente programa determina la longitud de un vector que no sabemos su tamaño
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char carrera[]="programacion estructurada";//vector con caracteres sin conocer su tamaño
int i,v;
v=strlen(carrera);//con esta funcion de la libreria string.h se puede saver el nuero de la cadena
printf("longitud %i\n",v);
for(i=0;i<v;i++)//con esta estrucutura se impriira cada caracter en su respectiva posicion
{
printf("valor de cadena en posicion: %i es : %c\n",i,carrera[i]);
}
}
U5Vectorcuatro
Ejemplo de ciertas funciones que se pueden hacer con vectores
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n;
printf("ingrese tamaño del vector: \n");
scanf("%d",&n);
float x[n], temp;
//escribe datos en el arreglo
for(i=0;i<n;i++)
{
printf("elemento %d: \n",i);
scanf("%g",&x[i]);
}
//intercambia elementos del arreglo
for(i=0;i<n/2;i++)
{
temp=x[i];
x[i]=x[n-i-1];
x[n-i-1]=temp;
}
//imprime los elementos del vector
for(i=0;i<n;i++)
printf("%g\t",x[i]);
}
U5VectorUno
En este programa se declaran 2 vectores con sus respectivos valores y se realiza la resta de estos dos vectores mediante una estructura de control.
#include <stdio.h>
#include <stdlib.h>
int main()
{ //restaremos vector b - vector a
int a[5]={1,2,3,4,5}; //declaracion del vector a con tamaño 5
int b[5]={6,7,8,9,10}; //declaracion del vector b con tamaño 5
int r[5]; //aqui asignaremos la resta de los anteriores vectores
int i;
for(i=0;i<5;i++) //i tomara el valor de la posicion dentro del vector de 0 a 4
{
//printf("vector a: %i vector b: %i\n",a[i],b[i]); para carroborar que los datos esten bien asignados
r[i]=b[i]-a[i]; //se hace la resta de los valores dependiendo de su posicion y esta la define i
printf("vector b: %i - vector a: %i = %i\n",b[i],a[i],r[i]); //se imprime el resultado
}
}
U5VectorDos
En este programa se iniciaran dos vectores, y el usuario le asignara sus valores, para despues realizar la resta, todo es mediante la estructura for.
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a[5]; //vectores declarados
float b[5]; //es importante la mascara float ya que no se sabe si el usuario nos dara numeros decimales
float r[5];
int i;
printf("VALORES PARA PRIMER ARREGLO\n");
for(i=0;i<5;i++) //asignacion de valor de la posicion 0 a 4
{
printf("dame el dato a %i\n",i);
scanf("%f",&a[i]); //captura del dato
}
printf("VALORES PARA SEGUNDO ARREGLO\n");
for(i=0;i<5;i++)
{
printf("dame el dato b %i \n",i);
scanf("%f",&b[i]); //captura del dato
}
/*for(i=0;i<5;i++) //con esta estructura podemos corroborar los datos asignados
{
printf("lo guardadp en a %i es %d \n",i,a[i]);
printf("lo guardadp en b %i es %d \n",i,b[i]);
}*/
//Resta de los vectores a-b
for(i=0;i<5;i++) //se resta los datos de la posicion 0 a 4
{
r[i]=a[i]-b[i]; //se asignan los valores del resultado al vector r
}
for(i=0;i<5;i++)
{
printf("valor de %.2f - valor de %.2f = %.2f\n",a[i],b[i],r[i]); //imprecion de la resta
//printf("%.2f\n",r[i]);
}
}
U5VectorTres
El siguiente programa determina la longitud de un vector que no sabemos su tamaño
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char carrera[]="programacion estructurada";//vector con caracteres sin conocer su tamaño
int i,v;
v=strlen(carrera);//con esta funcion de la libreria string.h se puede saver el nuero de la cadena
printf("longitud %i\n",v);
for(i=0;i<v;i++)//con esta estrucutura se impriira cada caracter en su respectiva posicion
{
printf("valor de cadena en posicion: %i es : %c\n",i,carrera[i]);
}
}
U5Vectorcuatro
Ejemplo de ciertas funciones que se pueden hacer con vectores
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n;
printf("ingrese tamaño del vector: \n");
scanf("%d",&n);
float x[n], temp;
//escribe datos en el arreglo
for(i=0;i<n;i++)
{
printf("elemento %d: \n",i);
scanf("%g",&x[i]);
}
//intercambia elementos del arreglo
for(i=0;i<n/2;i++)
{
temp=x[i];
x[i]=x[n-i-1];
x[n-i-1]=temp;
}
//imprime los elementos del vector
for(i=0;i<n;i++)
printf("%g\t",x[i]);
}
U5VectorCinco
El siguiente programa es igual al anterior pero en este caso se utilizan funciones
#include<stdio.h>
//declaracion de la funcion intercmbia
void intercambia(float *a,float *b);
main()
{
int i,n;
printf("ingrese tamaño del vector: \n");
scanf("%d",&n);
float x[n];
//escribe datos en el arreglo
for (i=0;i<n;i++)
{
printf("elemento %d: \n",i);
scanf("%g",&x[i]);
}
//intercambia elementos del arreglo
for (i=0;i<n/2;i++)
{
intercambia(&x[i],&x[n-i-1]);
}
//imprime los elementos del vector
for (i=0;i<n;i++)
{
printf("%g\t",x[i]);
}
}
void intercambia(float *a,float *b)
{
float temp;
temp=*a;
*a=*b;
*b=temp;
}
U5MatrizUno
En el siguiente programa se va a declarar un arreglo bidimensional o mas bien conocido como matriz.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int mat1 [2][3]={1,2,3,4,5,6};//[renglones][columnas]
int r,c;
for(r=0;r<2;r++)//recorre los renglones para las posiciones de 0 a 3
{
for(c=0;c<3;c++)//recorre las columnas para posiciones 0 a 3
{
printf("%i\t",mat1[r][c]);//imprime los datos de las respectivas posiciones
}
printf("\n");
}
}
U5MatrizDos
En el siguiente programa se observa que las matrices también pueden tener caracteres, ademas que se explicar de una forma mas visual como es la cuestión de las posiciones de los datos dentro del arreglo.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char mat1[3][3]={'A','B','C','D','E','F','G','H','I'};//pueden ser datos de tipo caracter
int r,c;//variables auxiliares para la imprecion
for(r=0;r<3;r++)//recorre las posiciones de los renglones de 0 a 2
{
for(c=0;c<3;c++)//recorre ls columnas de 0 a 2
{
printf("%i,%i %c \t ",r,c,mat1[r][c]);//imprime la posicion y el dato
}
printf("\n");
}
}
U5MatrizPracticaUno
En el siguiente programa se declara la matriz identidad y se suma con otra igual.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a [3][3];
int re [3][3];
int id [3][3];
int id2 [4][4];
int r,c,i;
//matriz identidad
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
if(r==c)
id[r][c]=1;
else
id[r][c]=0;
}
}
//sumar dos matrices identidad
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
re[r][c]=id[r][c]+id[r][c];
}
}
//imprimir
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
printf("%d",re[r][c]);
}
printf("\n");
}
}
U5MatrizIdentidadConFunciones
El siguiente programa por medio de las funciones es posibles imprimir cualquier matriz identidad sin importar su tamaño.
#include <stdio.h>
#include <stdlib.h>
int matid(int ren,int col)
{
int id [ren][col];
int r,c;
//matriz identidad
for(r=0;r<ren;r++)
{
for(c=0;c<col;c++)
{
if(r==c)
id[r][c]=1;
else
id[r][c]=0;
}
}
//imprimir
for(r=0;r<ren;r++)
{
for(c=0;c<col;c++)
{
printf("%d",id[r][c]);
}
printf("\n");
}
}
main()
{ int renglon;
int columna;
printf("dame renglon\n");
scanf("%d",&renglon);
printf("dame columna\n");
scanf("%d",&columna);
matid(renglon,columna);
}
U5MultiplicacionDeMatrices
En el siguiente programa se multiplican 2 matrices cuadradas de 3x3, utilizando estructurs de control en su principal forma de for.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[3][3]={1,2,0,2,-1,-1,3,2,3};
int b[3][3]={2,1,1,-1,1,3,1,2,4};
int re[3][3];
int r;
int c;
printf("matriz a\n");
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
printf("%d",a[r][c]);
}
printf("\n");
}
printf("matriz b\n");
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
printf("%d",b[r][c]);
}
printf("\n");
}
//multiplicacion
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
re[r][c]=(a[r][0]*b[0][c])+(a[r][1]*b[1][c])+(a[r][2]*b[2][c]);
}
}
printf("multiplicacion de a*b\n");
//imprime el resultado de la multiplicacion
for(r=0;r<3;r++)
{
for(c=0;c<3;c++)
{
printf("%d",re[r][c]);
}
printf("\n");
}
}
Comentarios
Publicar un comentario