lunes, 18 de noviembre de 2019

Unidad 5


UNIDAD 5



PROGRAMA 1

#include <stdio.h>
#include <stdlib.h>

int main()
{
    /*Declaración de vectores, también son llamados arreglos unidimensionales*/

    char nom[30];
 
    int vector1[8]; /*El valor entre corchetes se refiere a la longitud*/
    float pos[5];


    int x[3];
    x[0]=2; /*Puede declararse uno a uno*/
    x[1]=3;
    x[2]=5;

    double y[3]={2.33,4.58,6.47}; /*Cuando se declara un arreglo en una sola linea se colocan los valores asignados entre llaves*/

        /*Las tres variables llamadas mensaje hacen lo mismo*/

    char mensaje[]="Todo Bien";/**Opción 1*/

/*Cuando sea una cadena no necesita especificarse el tamaño*/

    char mensaje2[5]={'H','o','l','a','\0'}; /**Opción 2*/

    char mensaje3[5]; /**Opción 3*/
    mensaje3[0]='H';
    mensaje3[1]='o';
    mensaje3[2]='l';
    mensaje3[3]='a';
    mensaje3[4]='\0'; /*Carácter nulo, es necesario colocarse, muestra que es el final de la cadena*/
        return 0;
}



PROGRAMA 2

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x[10]; /**Arreglo entero unidimensional de 10 posiciones*/
    int i;
    for(i=0;i<10;i++)
{
       /**printf("Valor de i es: %i\n",i); */
       printf("Dame dato de posicion: %i\n",i);
       scanf("%i",&x[i]); /**Pide un valor para x en la posición actual de i*/
}
    puts(""); /**Funciona como un salto de linea*/
    for(i=0;i<10;i++)
        printf("En posicion %i esta un %i\n",i,x[i]);
    }
    return 0;
}





PROGRAMA 3 (1° proyecto)

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num,i;
    do{
    puts("Dame el numero de datos");
    scanf("%i",&num);
    }
    while(num<=0); /*Filtro para que solo se ingresen números mayores a cero*/
    int v1[num]; /*Declaración de vector que tiene el tamaño ingresado por el usuario*/
    int v2[num];
    int v3[num];
    for(i=0;i<num;i++)
   {
            Do
   {
        printf("Dame el valor del vector 1 en la posicion %i\n",i);
        scanf("%i",&v1[i]); /*Pide el valor para la posición en la que se encuentre en ese momento el ciclo*/
            }
while(v1[i]<=0);
    }
    puts(""); 
    for(i=0;i<num;i++)
    {
            Do
    {
        printf("Dame el valor del vector 2 en la posicion %i\n",i);
        scanf("%i",&v2[i]);
        }while(v2[i]<=0); /*Solo permite números mayores a cero*/
    }
    puts("");
    for(i=0;i<num;i++)
{
        v3[i]=v1[i]+v2[i]; /*Suma los vectores uno y dos y asigna el resultado a un tercer vector*/
        printf("%i + %i = %i\n",v1[i],v2[i],v3[i]); /*Imprime la suma y el resultado*/
    }
    return 0;
    }





PROGRAMA 4

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x[]={2,3,4,5,6,7,8,9}; /**Declaración de un vector con los valores entre las llaves*/
    int i,temp,n=8;
    for(i=0;i<n/2;i++)
/*Ciclo que cambia los valores del vector*/
        temp=x[i]; 
        x[i]=x[n-i-1];
        x[n-i-1]=temp;
    }
    for(i=0;i<n;i++){
        printf("%i\t",x[i]); /*Imprime el vector al revés*/
    }
    return 0;
}



PROGRAMA 5

#include <stdio.h>
#include <stdlib.h>

void intercambia(int *a, int *b)
{
    int temp;
    temp=*a; /*Se le asigna a la variable temp el dato que tenga el apuntador*/
    *a=*b;
    *b=temp;
}

int main()
{
    int i,n;
    puts("\tLa longitud debe ser par\n");
    do
{
    puts("Dame la longitud del vector");
    scanf("%i",&n);
}
    while(n%2!=0); /*Filtro que permite ingresar únicamente números pares*/
    int x[n]; /*Declaración de un vector que tiene un tamaño que el usuario ingresó previamente*/
    for(i=0;i<n;i++)
{
        printf("Elemento %i: ",i);
        scanf("%i",&x[i]); /*Pide un valor al usuario que se guarda en la posición en la que se encuentre el ciclo en ese momento*/
}
     for(i=0;i<n;i++)
{
        printf("%i\t",x[i]); /*Imprime el vector*/
}
    for(i=0;i<n/2;i++)
{
        intercambia(&x[i],&x[n-i-1]); /*Se llama a la función intercambia*/
 }
    puts(""); 
     for(i=0;i<n;i++)
{
        printf("%i\t",x[i]);
 }
    return 0;
}



PROGRAMA 6 (2° proyecto)

/*Pedir logitud de arreglos positiva y mavor que ceros
pedir datos de dos arreglos que no ceros .ejemplo:
1    4 = 1
2    3 = 4
3    2 = 9
4    1 = 16*/

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int tam,i;
    do
{
    puts("Dame la longitud de los vectores");
    scanf("%i",&tam);
}
while(tam%2!=0 || tam<=0); 
    int v1[tam]; 
    int v2[tam];
    int v3[tam];
    for(i=0;i<tam;i++)
{
        Do
{
        printf("Dame el valor del vector uno en la posicion %i:  ",i);
        scanf("%i",&v1[i]);
}
while(v1[i]<=0);
}
    puts(""); 
     for(i=0;i<tam;i++)
{
        Do
{
        printf("Valor de el vector dos en la posicion %i:  ",i);
        scanf("%i",&v2[i]);
}
        while(v2[i]<=0); /*Filtro que solo permite ingresar números mayores a cero*/
}
    for(i=0;i<tam;i++)
{
        v3[i]=v1[i]*v2[tam-i-1]; /*Multiplica el primero numero del vector uno por el ultimo del segundo vector y asigna el valor al vector 3*/
        printf("%i x %i = %i\n",v1[i],v2[i],v3[i]);
    }
    return 0;
}





PROGRAMA 7

#include <stdio.h>
#include <stdlib.h>

int main()
{
    /**Tipo de identificador[Renglon][Columna]*/
    int n1[3][3]; /*Declaración de una matriz de tres renglones por tres columnas*/
    int m1[3][5];
    double m[][3]={1.1,1.2,1.3,1.4}; /*Declaración de una matriz de tres columnas a la cual se le asignan valores, al no tener  renglones, estos datos se acomodan en la columnas y el resto se rellena con ceros*/

    int m3[2][3]; /*Declaración de una matriz de 2x3 a la cual se le asignan sus valores en los siguientes renglones*/
    m3[0][0]=1;
    m3[0][1]=2;
    m3[0][2]=3;
    m3[1][0]=1;
    m3[1][1]=2;
    m3[1][2]=3;
    /**int m4[][]={5,6,7,8,9,7}; error
       int m5[][]={1,2,3,4}, error;    */

    return 0;
}







PROGRAMA 8

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int m[3][3]={1,2,3,4,5,6,7,8,9}; 
    int i,j;
    /**Recorrido renglón y después columna*/
    puts("Renglon, columna");
    for(i=0;i<3;i++)
/*Mueve los renglones*/
        for(j=0;j<3;j++)
{ /*Mueve las columnas*/
            printf("%i",m[i][j]); /*Imprime el valor que tenga la matriz en esa posición*/
}
        puts(""); 
}
    puts("");
    /*Recorrido por columnas*/
    puts("Columna, renglon");
    for(j=0;j<3;j++)
{
        for(i=0;i<3;i++)
{
            printf("%i",m[i][j]);
}
        puts("");
}
    return 0;
}





PROGRAMA 9

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int r,c,i,j;
    do
{
        puts("Dame los renglones: ");
        scanf("%i",&r); /*Pide los renglones*/
}
while(r<=0); /*Filtro que solo permite ingresar números mayores a cero*/
    do
{
        puts("Dame las columnas: ");
        scanf("%i",&c); /*Pide las columnas*/
    }
while(c<=0);
    int m[r][c]; /*Declaración de una matriz de un tamaño que se ingresó anteriormente*/
    for(i=0;i<r;i++)
{
        for(j=0;j<c;j++)
{
            printf("%renglon %i, columna %i\n",i,j);
            scanf("%i",&m[i][j]); /*Permite ingresar un valor en la posición en la que se encuentre el ciclo*/
}
        printf("\n"); 
}
    puts("Matriz llena: "); /*Imprime la matriz completa*/
    for(i=0;i<r;i++)
{
        for(j=0;j<c;j++)
{
            printf("%i",m[i][j]);
}
        printf("\n");
}

    return 0;
}




PROGRAMA 10 (3° proyecto)

#include <stdio.h>
#include <stdlib.h>

int num,a=0,e=0,i=0,o=0,u=0; /*Declaración de variables globales de tipo entero*/

int main()
{
    puts("\SOLO PUEDES INTRODUCIR PALABRAS EN MINUSCULAS\n");
    do{
    printf("Dame el numero de palabras que quieres: ");
    scanf("%i",&num); 
}
while(num<=0);
    char pal[num][15]; /*Declara una matriz de 15 columnas y con renglones ingresados por el usuario*/
    for(int i=0;i<num;i++){
        printf("Dame la palabra # %i: ",i+1);
        scanf("%s",pal[i]);
    }
    for(int r=0;r<num;r++)
{ /*Mueve los renglones*/
        for(int c=0;c<15;c++)
{ /*Mueve las columnas*/
            if(pal[r][c]=='a') a++; /*SI la letra en la cual se encuentra el ciclo en un a, aumenta en uno el valor de la variable a*/
            if(pal[r][c]=='e') e++; /*SI la letra en la cual se encuentra el ciclo en un e, aumenta en uno el valor de la variable e*/
            if(pal[r][c]=='i') i++; /*SI la letra en la cual se encuentra el ciclo en un i, aumenta en uno el valor de la variable i*/
            if(pal[r][c]=='o') o++; /*SI la letra en la cual se encuentra el ciclo en un o, aumenta en uno el valor de la variable o*/
            if(pal[r][c]=='u') u++; /*SI la letra en la cual se encuentra el ciclo en un u, aumenta en uno el valor de la variable u*/
}
}
    puts("");
    for(int a1=0;a1<a;a1++)
{
        printf("a"); /*Imprime la letra a el numero de veces que se contó en el ciclo anterior*/
}
    puts("");
    for(int e1=0;e1<e;e1++)
{
        printf("e"); /*Imprime la letra e el numero de veces que se contó en el ciclo anterior*/
}
    puts("");
    for(int i1=0;i1<i;i1++)
{
        printf("i"); /*Imprime la letra i el numero de veces que se contó en el ciclo anterior*/
}
    puts("");
    for(int o1=0;o1<o;o1++)
{
        printf("o"); /*Imprime la letra o el numero de veces que se contó en el ciclo anterior*/
}
    puts("");
    for(int u1=0;u1<u;u1++)
{
        printf("u"); /*Imprime la letra u el numero de veces que se contó en el ciclo anterior*/
}

    return 0;
}



 ENTREGABLES




ENTREGABLE 1

1.-Sean A, B y C matices de 3x3 calcular:
     a) -A-B+C
     b) A+B-C
     c) 3A + C/2

#include <stdio.h>
#include <stdlib.h>

int mat_A[3][3]; /*Declaración de matrices globales de 3x3 de tipo entero*/
int mat_B[3][3];
int mat_C[3][3];
int mat_R[3][3];

void operaciones()
    puts("-A-B+C = "); /*Primera operación*/
    for(int r=0;r<3;r++)
/*Mueve los renglones*/
        for(int c=0;c<3;c++)
/*Mueve las columnas*/
            mat_R[r][c]=((-1*(mat_A[r][c]))-(mat_B[r][c])+(mat_C[r][c])); /*Asigna a la matriz R el resultado de la operación resultante en esa posición */
            printf("%i\t",mat_R[r][c]);
}
        puts(""); 
}
    res_cero(); 
    puts("");
    puts("A+B-C = "); /*Segunda operación*/
    for(int r=0;r<3;r++)
{
        for(int c=0;c<3;c++)
{
            mat_R[r][c]=((mat_A[r][c])+(mat_B[r][c])-(mat_C[r][c]));/*Asigna a la matriz R el resultado de la operación resultante en esa posición */
            printf("%i\t",mat_R[r][c]);
}
        puts("");
}
    res_cero();
    puts("");
    puts("3A + C/2 = "); /*Tercera operación*/
    for(int r=0;r<3;r++){
        for(int c=0;c<3;c++){
            mat_R[r][c]= (3*(mat_A[r][c])+((mat_C[r][c])/2)); /*Asigna a la matriz R el resultado de la operación resultante en esa posición */
            printf("%i\t",mat_R[r][c]);
}
        puts("");
}
}

void res_cero()
   for(int r=0;r<3;r++)
{
        for(int c=0;c<3;c++)
{
            mat_R[r][c]=0; /*Le asigna a la matriz resultado el valor de cero en todas sus posiciones*/
        }
    }
}

int main() 
{
    int tam_mat;
    puts("CALCULADORA DE MATRIZ 3x3\n");
    for(int r=0;r<3;r++)
{
        for(int c=0;c<3;c++)
{
            printf("Dame el valor de la matriz A en el renglon %i y la columna %i: ",r+1,c+1); 
            scanf("%i",&mat_A[r][c]); /*Pide el valor de la matriz A en cada una de sus posiciones*/
}
}
    puts("");
    for(int r=0;r<3;r++)
{
        for(int c=0;c<3;c++)
{
            printf("Dame el valor de la matriz B en el renglon %i y la columna %i: ",r+1,c+1);
            scanf("%i",&mat_B[r][c]); /*Pide el valor de la matriz B en cada una de sus posiciones*/
        }
    }
    puts("");
    for(int r=0;r<3;r++)
{
        for(int c=0;c<3;c++)
{
            printf("Dame el valor de la matriz C en el renglon %i y la columna %i: ",r+1,c+1);
            scanf("%i",&mat_C[r][c]); /*Pide el valor de la matriz C en cada una de sus posiciones*/
        }
    }
    operaciones(); 
    return 0;
}



ENTREGABLE 2

2.- Sean A, B y C matrices de 3x3, calcular el determinante de cada una de ellas.

#include <stdio.h>
#include <stdlib.h>

int mat_A[3][3]; /*Declaración de matrices globales de 3x3 de tipo entero*/
int mat_B[3][3];
int mat_C[3][3];

void determinante()
/*Función sin tipo que resuelve los determinantes*/
    int det;
    int det1,det2,det3,det4,det5,det6;
    det1=(mat_A[0][0])*(mat_A[1][1])*(mat_A[2][2]); 
    det2=(mat_A[1][0])*(mat_A[2][1])*(mat_A[0][2]); 
    det3=(mat_A[2][0])*(mat_A[0][1])*(mat_A[1][2]); 
    det4=(mat_A[0][0])*(mat_A[2][1])*(mat_A[1][2]);                                                                                                 
    det5=(mat_A[1][0])*(mat_A[2][2])*(mat_A[0][1]); 
    det6=(mat_A[2][0])*(mat_A[1][1])*(mat_A[0][2]); 
    det=det1+det2+det3-det4-det5-det6; 
    printf("Determinante de la matriz A es: %i",det);
    puts(""); 

    det=0;
    det1=(mat_B[0][0])*(mat_B[1][1])*(mat_B[2][2]);
    det2=(mat_B[1][0])*(mat_B[2][1])*(mat_B[0][2]);
    det3=(mat_B[2][0])*(mat_B[0][1])*(mat_B[1][2]);
    det4=(mat_B[0][0])*(mat_B[2][1])*(mat_B[1][2]);
    det5=(mat_B[1][0])*(mat_B[2][2])*(mat_B[0][1]);
    det6=(mat_B[2][0])*(mat_B[1][1])*(mat_B[0][2]);
    det=det1+det2+det3-det4-det5-det6;  
    printf("Determinante de la matriz B es: %i",det);
    puts("");

    det=0;
    det1=(mat_C[0][0])*(mat_C[1][1])*(mat_C[2][2]);
    det2=(mat_C[1][0])*(mat_C[2][1])*(mat_C[0][2]);
    det3=(mat_C[2][0])*(mat_C[0][1])*(mat_C[1][2]);
    det4=(mat_C[0][0])*(mat_C[2][1])*(mat_C[1][2]);
    det5=(mat_C[1][0])*(mat_C[2][2])*(mat_C[0][1]);
    det6=(mat_C[2][0])*(mat_C[1][1])*(mat_C[0][2]);
    det=det1+det2+det3-det4-det5-det6;  
    printf("Determinante de la matriz C es: %i",det);
}

int main() 
{
    int tam_mat;
    puts("CALCULADORA DE MATRIZ 3x3\n");
    for(int r=0;r<3;r++){
        for(int c=0;c<3;c++){
            printf("Dame el valor de la matriz A en el renglon %i y la columna %i: ",r+1,c+1); 
            scanf("%i",&mat_A[r][c]); /*Pide el valor de la matriz A en cada una de sus posiciones*/
        }
    }
    puts("");
    for(int r=0;r<3;r++){
        for(int c=0;c<3;c++){
            printf("Dame el valor de la matriz B en el renglon %i y la columna %i: ",r+1,c+1);
            scanf("%i",&mat_B[r][c]); /*Pide el valor de la matriz B en cada una de sus posiciones*/
        }
    }
    puts("");
    for(int r=0;r<3;r++){
        for(int c=0;c<3;c++){
            printf("Dame el valor de la matriz C en el renglon %i y la columna %i: ",r+1,c+1);
            scanf("%i",&mat_C[r][c]); /*Pide el valor de la matriz C en cada una de sus posiciones*/
        }
    }
    determinante(); 
    return 0;
}



ENTREGABLE 3

3.- Resolver la pagina 143 del manual.