Método Burbuja


1. Sea un vector de 10 celdas con números aleatorios. Ordenarlos de menor a mayor y mostrar el vector. 
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
    main()
    {
        short A[10],i,j,aux;
        srand(time(0));
        for(i=0;i<=9;i++)
        {
            A[i]=rand()%10+10;
            cout<<A[i]<<" ";
        }
        //ordenando el vector
        for(i=1;i<=9;i++)
        {
            for(j=0;j<=9-i;j++)
            {
                if(A[j]>A[j+1])
                {
                    aux=A[j];
                    A[j]=A[j+1];
                    A[j+1]=aux;
                }
            }
        }
        //mostrando el vector modificado
        cout<<endl<<"Vector modificado: "<<endl;
        for(i=0;i<=9;i++)
        {
            cout<<A[i]<<" ";
        }       
        system("pause");
        return 0;
    }

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;       
    }
















    Arreglos

    1. Crea un arreglo o array multidimensional que contenga 3 columnas y las filas que tú quieras, las dos primeras columnas tendrán números enteros y en la 3 columna será el resultado de sumar el número de la primera y la segunda. Muestra el array o arreglo de la siguiente forma:
    3 + 5 = 8
    4 + 6= 10
    Piensa de que forma puedes mostrar con un solo bucle.
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
        main()
         {
            short A[4][3];
            srand(time(0));
            for(short f=0;f<=3;f++)
            {
                for(short c=0;c<=1;c++)
                {
                    A[f][c]=rand()%20;
                }
                A[f][2]=A[f][0]+A[f][1];
            }
            for(short f=0;f<=3;f++)
            {
                cout<<A[f][0]<<" + "<<A[f][1]<<" = "<<A[f][2]<<endl;
            }
            system("pause");
            return 0;
        }
    2. Crea un arreglo o array multidimensional con un tamaño que definiremos nosotros por teclado, contendrá números aleatorios y crearemos un array o arreglo unidimensional donde se copiarán los números que contiene el array multidimensional. Piensa que tamaño debe tener el array o arreglo unidimensional.
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
        main()
        {
            short m,n;
            cout<<"Ingrese MxN: ";cin>>m>>n;
            short A[m][n],e,x=-1;
            e=m*n;
            short B[e];
            srand(time(0));
            for(short f=0;f<=m-1;f++)
            {
                for(short c=0;c<=n-1;c++)
                {
                    A[f][c]=rand()%20;
                    cout<<A[f][c]<<" ";
                }
                cout<<endl;
            }
            for(short f=0;f<=m-1;f++)
            {
                for(short c=0;c<=n-1;c++)
                {
                    x++;
                    B[x]=A[f][c];
                    cout<<x+1<<": "<<B[x]<<endl;
                }
            }       
            system("pause");
            return 0;
        }
    3. Crea un array o arreglo multidimensional que contenga la tabla de multiplicar del 1 al 9 (10 filas y 10 columnas). La primera fila y la columna debe contener estos números.
    Algo así:

    El resto de números deberemos calcularlo usando los números que disponemos, es decir, en la primera fila de 0, calculará 1*1, 1*2, 1*3, etc. usando las posiciones del array o arreglo. Así debe quedar al final:

    No se preocupe por la apariencia ya que es por el número de dígitos.
    #include <iostream>
    using namespace std;
        main()
        {
            short A[10][10],f,c;
                for(c=0;c<=9;c++)
                {
                    A[0][c]=c;   
                }
               
                for(f=1;f<=9;f++)
                {
                    A[f][0]=f;
                }
               
                for(c=1;c<=9;c++)
                {
                    for(f=1;f<=9;f++)
                    {
                        A[f][c]=A[f][0]*A[0][c];
                    }
                }
               
                for(f=0;f<=9;f++)
                {
                    for(c=0;c<=9;c++)
                    {
                        cout<<A[f][c]<<"  ";
                    }
                    cout<<endl<<endl;
                }
               
            system("pause");
            return 0;
        }
    4. Suponga que se tiene el siguiente arreglo de números:
        0 2 5 7 6
        0 0 0 3 8
        2 9 6 3 4
        1 5 6 1 4
        0 9 2 5 0
    Elabore un programa en C++ que calcule cuantos "ceros" aparecen en cada fila del arreglo. #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
        main()
        {
            short A[5][5],f,c,e;
            srand(time(0));
            for(f=0;f<=4;f++)
            {
                for(c=0;c<=4;c++)
                {
                    A[f][c]=rand()%10;
                    cout<<A[f][c]<<" ";
                    if(A[f][c]==0)e++;
                }
                cout<<endl;
            }
            cout<<"El arreglo tiene: "<<e<<" cero(s)\n";
            system("pause");
            return 0;
        }
    5. Crear un arreglo unidimensional de 10 celdas, el arreglo debe ser llenado solamente con números pares, los números deben ser generados aleatoriamente, luego de ser llenados muéstrelos.
     #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
        main()
        {
            short A[10],i=0,n;
            srand(time(0));
            do
            {
                n=rand()%50;
                if(n%2==0)
                {
                    A[i]=n;
                    cout<<A[i]<<" ";
                    i++;
                }
            }while(i<9);
            system("pause");
            return 0;
        }
    6. Crear un arreglo unidimensional de 20 celdas, el arreglo debe de ser llenado de la siguiente manera: Los números se generan de manera aleatoria, las celdas con índices pares deben de ser llenados con números pares y las celdas con índice impares deben ser llenados con números impares. 
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
        main()
        {
            short A[20],p=0,i=1,n;
            srand(time(0));
            do
            {
                n=rand()%20;
                if(n%2==0 and p<=18)
                {
                    A[p]=n;
                    p=p+2;
                }
                else if (n%2!=0 and i<=19)
                {
                    A[i]=n;
                    i=i+2;
                }
            }while(i<21 and p<20);
            for(short x=0;x<=19;x++)
            {
                cout<<A[x]<<" ";
            }
            system("pause");
            return 0;
        } 
    7. Crear un arreglo unidimensional de 20 celdas, el arreglo debe de ser llenado de la siguiente manera: Los números se generan de manera aleatoria, pero solamente números primos generados deben de ser agregados a las celdas.
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
        main()
        {
            short A[20],n,p,x=0;
            srand(time(0));
            do
            {
                n=rand()%50;
                for(short i=1;i<=n;i++)
                {
                    if(n%i==0)p++;
                }
                if(p==2)
                {
                    A[x]=n;
                    cout<<A[x]<<" ";
                    x++;
                }
                p=0;
            }while(x<20);
            system("pause");
            return 0;
        }
    8. Se tiene un arreglo unidimensional de 20 celdas, el arreglo debe de ser llenado de la siguiente manera: Las celdas se llenan con números aleatorios, ordene de mayor a menor.
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
        main()
        {
            short A[20],i,j,aux;
            srand(time(0));
            for(i=0;i<=19;i++)
            {
                A[i]=rand()%50;
                cout<<A[i]<<" ";
            }
            cout<<endl;
            for(i=0;i<=19;i++)
            {
                for(j=0;j<=19-i;j++)
                {
                    if(A[j]>A[j+1])
                    {
                        aux=A[j];
                        A[j]=A[j+1];
                        A[j+1]=aux;
                    }
                }
            }
            for(i=0;i<=19;i++)
            {
                cout<<A[i]<<" ";
            }
            system("pause");
            return 0;
        } 
    9. Se tiene un arreglo de 10 celdas con números enteros cualquiera, ingrese un número por teclado, busque el número en el arregloy mostrar si encontró o no el número.
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
        main()
        {
            short A[10],i,n,x=0;
            srand(time(0));
            for(i=0;i<=9;i++)
            {
                A[i]=rand()%50;
                cout<<A[i]<<" ";
            }
            cout<<"Ingrese el numero: ";cin>>n;       
            for(i=0;i<=9;i++)
            {
                if(n==A[i])
                {
                    cout<<"Numero encontrado.";
                    break;   
                }
                else
                {
                    x++;
                }
            }
            if(x==10)
            {
                cout<<"Numero no encontrado.";
            }
            system("pause");
            return 0;
        }
    10. Se tiene un arreglo de 20 celdas con números enteros cualquiera, ordene de manera que los números pares estén al principio de menor a mayor y luego continúen los números impares también de menor a mayor.
     

    Estructuras repetitivas For

    1. Realizar un codigo que visualice los primeros 10 números impares
    #include <iostream>
    using namespace std;
        main()
        {
            short cd=0,cp=0,n=1;
            do
            {
                n++;
                for(short x=1;x<=n;x++)
                {
                    if(n%x==0)cd++;
                }
                if(cd==2)
                {
                    cout<<n<<endl;
                    cp++;
                }
                cd=0;
            }while(cp<10);
            cout<<"Estos son los "<<cp<<" primeros primos.";
            system("pause");
            return 0;
        }

    Problemas de estructuras repetitivas


    1. Realizar un programa que imprima en pantalla los números del 1 al 100.
     #include <iostream>
    using namespace std;

    main()
    {
        for(short i=1;i<=100;i++)
        {
            cout<<i<<" - ";
        }                  

        system("pause");
        return 0;
    }


    2. Realizar un algoritmo que visualice los números pares entre  1 y 100
     #include <iostream>
    using namespace std;
        main()
        {
        for(short x=1;x<=100;x++)
        {
            if(x%2==0)cout<<x<<" ";
        }
        system("pause");
        return 0;
        } 
    3. Realizar un algoritmo que visualice los números impares entre 1 y 100

     #include <iostream>
    using namespace std;
        main()
        {
        for(short x=1;x<=100;x++)
        {
            if(x%2!=0)cout<<x<<" ";
        }
        system("pause");
        return 0;
        }
    4. Realizar un algoritmo que visualice los primero 20 números primos
    #include <iostream>
    using namespace std;
        main()
        {
            short cd=0,cp=0,n=1;
            do
            {
                n++;
                for(short x=1;x<=n;x++)
                {
                    if(n%x==0)cd++;
                }
                if(cd==2)
                {
                    cout<<n<<endl;
                    cp++;
                }
                cd=0;
            }while(cp<20);
            cout<<"Estos son los "<<cp<<" primeros primos.";
            system("pause");
            return 0;
        }
    5. Realizar un algoritmo que visualice la tabla de multiplicar de un Numero “n”
    #include <iostream>
    using namespace std;

        main()
        {
        short n;
        cout<<"Ingrese un numero: \n";cin>>n;
        cout<<"Tabla del "<<n<<endl;
        for(short x=0;x<=12;x++)
        {
            cout<<n<<"x"<<x<<"="<<n*x<<endl;
        }
        system("pause");
        return 0;
        }
     6. Realizar un algoritmo que permita generar 20 números aleatorios y que visualice la cantidad de números pares e impares
       


    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
        main() {
        short n,ci,cp,c;
        srand (time(0));
        for(c=1;c<=20;c++)
        {
            n=rand()%20;
            if(n%2==0){
                cp++;
            }
            if(n%2!=0){
                ci++;
            }
        }
        cout<<"Cantidad de pares : "<<cp<<endl;
        cout<<"La cantidad de impares : "<<ci<<endl;
        system("pause");
        return 0;
    }
    7. Realizar un algoritmo que visualice los 30 primeros números de la serie numérica: 1, 3 ,5...