Arreglos II


1. Se tiene un arreglo bidimensional de 30 filas x 4 columnas, las filas representan a los alumnos y las columnas a notas; en las 2 primeras columnas se almacenan las notas de las 2 prácticas calificadas, en la 3° columna se almacena la nota del examen parcial y en la 4° columna la nota del examen final.
El promedio se calcula de la siguiente manera:
Prom=(30PromPracticas+35%NotaExamenParcial+35%NotaExamenFinal)/3
Calcular y mostrar:
  • Cantidad de aprobados y desaprobados (la nota aprobatoria es 11)
  • El Primer Puesto (pueden ser 2 o mas alumnos)
  • La nota más baja. 
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
    main()
    {
        short A[30][4],f,c,pp,may,PP,PF,ca=0,cd=0,min,a;
        srand(time(0));
        for(f=0;f<=29;f++)
        {
            for(c=0;c<=3;c++)
            {
                A[f][c]=rand()%21;
                cout<<A[f][c]<<" ";
            }
            cout<<endl;
        }
        //hallando el primer promedio
        pp=(A[0][0]+A[0][1])/2;
        may=(pp*0.3)+(A[0][2]*0.35)+(A[0][3]*0.35);
        min=may;
        //hallando cantidad de aprobados y desaprobados
        for(f=0;f<=29;f++)
        {
            PP=(A[f][0]+A[f][1])/2;
            PF=(PP*0.3)+(A[f][2]*0.35)+(A[f][3]*0.35);
            cout<<"Promedio "<<f+1<<" : "<<PF<<endl;
            if(PF>=11)ca++;
            else cd++;
            //hallando el primer puesto
            if(PF>may){
                may=PF;  
                a=f;
            }
            if(PF<min)min=PF;
        }
        cout<<"Cantidad de aprobados: "<<ca<<endl;
        cout<<"Cantidad de desaprobados: "<<cd<<endl;
        cout<<"El primer puesto es: "<<may<<" , se encuentra en la fila "<<a+1<<endl;
        cout<<"La nota mas baja es: "<<min<<endl;
        system("pause");
        return 0;
    }
2. Hacer un procedimiento que genere la matriz unidad de dimension N.

 #include <iostream>
using namespace std;
    main()
    {
        short n;
        cout<<"Ingrese un numero: ";cin>>n;
        short A[n][n],f,c;
        for(f=0;f<=n-1;f++)
        {
            for(c=0;c<=n-1;c++)
            {
                if(f==c)
                {
                    A[f][c]=1;
                }
                else
                {
                    A[f][c]=0;
                }
            }
        }
        //mostarndo la matriz
        for(f=0;f<=n-1;f++)
        {
            for(c=0;c<=n-1;c++)
            {
                cout<<A[f][c]<<" ";
            }
            cout<<endl;
        }
        system("pause");
        return 0;
    }
3. Realizar un procedimiento que: a) Recorra una matriz y cuente los elementos pares que hay en ella, deberá además cambiarlos por (-1). b) Escribir otro procedimiento que a partir de la matriz anterior genere un vector cuyos elementos indiquen cuantos (-1) hay  en cada fila.
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
    main()
    {
        short A[3][4],f,c,p=0,B[3];
        srand(time(0));
        for(f=0;f<=2;f++)
        {
            for(c=0;c<=3;c++)
            {
                A[f][c]=rand()%10+10;
                cout<<A[f][c]<<"  ";
            }
            cout<<endl;   
        }
        cout<<endl;
        //contando los elementos pares
        for(f=0;f<=2;f++)
        {
            for(c=0;c<=3;c++)
            {
                if(A[f][c]%2==0)
                {
                    A[f][c]=-1;
                    p++;
                }
                cout<<A[f][c]<<"  ";
            }   
            cout<<endl;
        }
        cout<<"Cantidad de elemento pares: "<<p<<endl;       
        //indicando cuantos -1 hay en cada fila
        cout<<endl<<"Cantidad de -1 por fila."<<endl;
        for(f=0;f<=2;f++)
        {
            p=0;
            for(c=0;c<=3;c++)
            {
                if(A[f][c]==-1)p++;//los pares se han cambiado por -1
            }
            B[f]=p;
            cout<<"Fila "<<f+1<<" : "<<B[f]<<endl;
        }
        system("pause");
        return 0;
    }
4. En un arreglo bidimensional que almacena la cantidad de computadoras vendidas por tres vendedores en cuatro Provincias Lima (Cañete, Huaura, Yauyos, Cajatambo, Barranca, Huaral,Oyon, Canta y Huarochirí). Se pide mostrar:
  • La Provincia que más computadoras vendió.
  • El vendedor que  menos computadoras vendió.
  • La cantidad de computadoras vendidas por todos los vendedores en todas las zonas.
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
    main()
    {
        short A[3][4],f,c,sp=0,sv=0,sc=0,may=0,min=0,p,v;
        srand(time(0));
        for(f=0;f<=2;f++)
        {
            for(c=0;c<=3;c++)
            {
                A[f][c]=rand()%10+10;
                cout<<A[f][c]<<" ";
                sc=sc+A[f][c];
            }
            cout<<endl;
        }
        //hallando la primera Provincia
        for(f=0;f<=2;f++)
        {
            may=may+A[f][0];
            p=0;
        }
        //hallando el primer vendedor
        for(c=0;c<=3;c++)
        {
            min=min+A[0][c];
            v=0;
        }
        //hallando provincia que mas computadoras vendió
        for(c=1;c<=3;c++)
        {
            sp=0;
            for(f=0;f<=2;f++)
            {
                sp=sp+A[f][c];
            }
            if(sp>may)
            {
                may=sp;
                p=c;
            }
        }
        //vendedor que menos computadoras vendió
        for(f=1;f<=2;f++)
        {
            sv=0;
            for(c=0;c<=3;c++)
            {
                sv=sv+A[f][c];
            }
            if(sv<min)
            {
                min=sv;
                v=f;
            }
        }
        cout<<"La provincia que mas computadoras vendio: columna "<<p+1<<endl;
        cout<<"El vendedor que menos computadoras vendio: fila "<<v+1<<endl;
        cout<<"Cantidad de computadoras vendidas: "<<sc<<endl;
        system("pause");
        return 0;   
    }


 5. Escriba un programa que ponga números aleatorios menores a 100 en un vector de dos dimensiones de 9 por 9. Imprima los valores en. Se pide:
  • Calcular promedio de todos los números.
  • Mostrar el valor máximo y mínimo.
  • Intercambiar los valores de la diagonal principal por los valores de la diagonal secundaria.
  • Mostrar la matriz modificada.
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
    main()
    {
        short A[9][9],f,c,s=0,p,max,min,aux;
        srand(time(0));
        //Poniendo numeros aleatorios y hallando promedio
        for(f=0;f<=8;f++)
        {
            for(c=0;c<=8;c++)
            {
                A[f][c]=rand()%100;
                cout<<A[f][c]<<" ";
                s=s+A[f][c];
            }   
            cout<<endl;
        }
        p=s/81;
        //asignando los primeros valores a maximo y minimo
        max=A[0][0];
        min=A[0][0];
        //hallando valor maximo y minimo
        for(f=0;f<=8;f++)
        {
            for(c=0;c<=8;c++)
            {
                if(A[f][c]>max)max=A[f][c];
                if(A[f][c]<min)min=A[f][c];
            }   
        }   
        //Intercambiando los valores de la diagonal   
        for(f=0;f<=8;f++)
        {
            for(c=0;c<=8;c++)
            {
                if(f==c)
                {
                    aux=A[f][c];
                    A[f][c]=A[f][8-f];
                    A[f][8-f]=aux;
                }
            }   
        }
        cout<<endl<<"Matriz modificada: "<<endl<<endl;
        //mostrando la matriz modificada
        for(f=0;f<=8;f++)
        {
            for(c=0;c<=8;c++)
            {
                cout<<A[f][c]<<" ";
            }   
            cout<<endl;
        }
        cout<<endl<<"Promedio de todos los numeros: "<<p<<endl;
        cout<<"El valor maximo y minimo es: "<<max<<", "<<min<<endl;
        system("pause");
        return 0;       
    }