sábado, 27 de febrero de 2016

Ejercicio - Edificio Escolar

      En un edificio escolar de 3 pisos cuenta con 5 salones con capacidad mínima de 28 y máxima de 35 alumnos por salón, Se ha determinado que en promedio por salón 70% son hombres y 30% son mujeres. Elabore un programa que realice lo siguiente:
     a) Por medio de una función capture la cantidad de alumnos de cada salón
     b) Mostrar el total de alumnos por piso
     c) En el piso 3, mostrar el salón tuvo la mínima cantidad de alumnos
     d) En el salón 5 de cada piso, ¿Cual es el total de hombres?
      e) Mostrar el total de mujeres de los salones marcados con las x (S=salón):
                               S1  S2  S3  S4  S5
                   Piso 1          x    x    x
                   Piso 2          x    x    x
                   Piso 3          x    x    x

El programa

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
using namespace std;

void Lectura (int A[3][5]){
    int f,c;
    for (f=0;f<3;f++){
        for (c=0;c<5;c++){
            do{ cout<<"No. de alumnos en el salon ["<<f+1<<"]["<<c+1<<"]: ";
            cin>>A[f][c];
            if(A[f][c]>35||A[f][c]<28)
                cout<<"Cantidad Invalida"<<endl;
            }while (A[f][c]>35||A[f][c]<28);

        }
    }
}

void TPiso (int A[3][5]){
    int f,c,s=0;
    cout<<endl;
    for (f=0;f<3;f++){
        for (c=0;c<5;c++){
            s=s+A[f][c];
        }
        cout<<"Cantidad de alumnos en el piso "<<f+1<<" : "<<s<<endl;
        s=0;
    }
    cout<<endl<<endl;
}

void Min3 (int A[3][5]){
    int f,c,m,s;
        for (c=0;c<5;c++){
            m=A[2][0];
            if(A[2][c]<m){
                m=A[2][c];
                s=c;}
        }
        cout<<"El salon [3]["<<s<<"] tiene la minima cantidad de alumnos con "<<m<<" alumnos"<<endl<<endl;
}

void H5 (int A[3][5]){
    int f,c,suma=0;
    float h;
    for(f=0;f<3;f++){
        h=(A[f][4]*70.0)/100;
        cout<<"No. de Hombres en el salon ["<<f<<"][5]: "<<h<<endl;
    }
}

void Mujeres (int A[3][5]){
    int f,c;
    float M=0,MT=0;
    for (f=0;f<3;f++){
        for (c=1;c<4;c++){
            M=(A[f][4]*30.0)/100;
            MT=MT+M;
        }
    }
    cout<<"\nTotal de mujeres en los salones seleccionados: "<<MT<<endl<<endl;
}

int main(){
    int A[3][5];
    system ("color 3f");
    cout<<"\t\t\t\t Programa Edifico Escolar"<<endl<<endl;
    Lectura (A);
    TPiso (A);
    Min3 (A);
    H5  (A);
    Mujeres (A);
    return 0;
}

Puedes descargar el PDF del programa AQUI

Ejercicio - Matriz

   
 Dada la matriz de tamaño 3x3, realice lo siguiente:

  1. Realice una función que capture los elementos de la matriz.
  2. Realice una función que imprima la matriz.
  3. Realice una función que sume los siguientes elementos de la matriz excepto de la diagonal principal.
  4. Realice una función que que determine cuantos elementos de la matriz fueron positivos y cuantos negativos.
  5. Realice una función que haga la búsqueda de un dato determinado por el usuario, y despliegue los diferentes casos: a) Aparece solo una vez, b) Aparece más de una vez, c) No aparece nunca.
Recordemos la sintaxis para declarar un arreglo bidimensional:

                        tipo_nombre-del-arreglo[Tamaño de Fila][Tamaño de Columna]


El programa:


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#define COL 3
#define FIL 3
using namespace std;

void introduce (int A[FIL][COL]){
    int f,c;
    for(f=0; f<FIL ; f++){
        for(c=0; c<COL ; c++){
            cout<<"Introduce elemento ["<<f<<"]["<<c<<"]: ";
            cin>>A[f][c];
        }
    }
    cout<<endl<<endl;
}

void despliego (int A[FIL][COL]){
    int f,c;
    for(f=0; f<FIL ; f++){
        for(c=0; c<COL ; c++){
            cout<<"  "<<A[f][c]<<"\t";
        }
        cout<<endl;
    }
    cout<<endl<<endl;
}

int diagsum (int A[FIL][COL]){
    int f,c,suma=0;
    for(f=0; f<FIL ; f++){
        for(c=0; c<COL ; c++){
            if(f!=c)
                suma+=A[f][c];
        }
    }
    return (suma);
}

void posneg (int A[FIL][COL]){
    int f,c,pos=0,neg=0;
    for(f=0; f<FIL ; f++){
        for(c=0; c<COL ; c++){
            if(A[f][c]==0)
                neg--;
            if(A[f][c]>c)
                pos++;
            else
                neg++;
        }
    }
    cout<<"No. de elementos positivos: "<<pos<<endl;
    cout<<"No. de elementos negativos: "<<neg<<endl;
    cout<<endl<<endl;
}

void Busqueda (int A[FIL][COL]){
    int f,c,b;
    char opc;
    do{
        cout<<"Dato por buscar: ";
    cin>>b;
    int s=0;
    for(f=0; f<FIL ; f++){
        for(c=0; c<COL ; c++){
            if(b==A[f][c])
                s++;
        }
    }
    switch(s){
        case 0: cout<<"No aparece nunca";
                break;
        case 1: cout<<"Aparece solo 1 vez";
                break;
        default: cout<<"Aparece mas de 1 vez";
                break;
    }
    cout<<"\n Desea repetir la busqueda? S/N : ";
    cin>>opc;
    }while (opc=='s'||opc=='S');
    cout<<endl;
}

int main(){
    int A[FIL][COL],s;
    system ("color 2f");
    cout<<"\t\t\t\t Trabajando con una matriz de 3x3"<<endl;
    introduce(A);
    despliego(A);
    s=diagsum(A);
    cout<<"La suma de los elementos, excepto la diagonal principal es: "<<s;
    cout<<endl;
    posneg(A);
    Busqueda(A);
    return 0;
}



Ejercicio - Banda Transportadora

Una banda transportadora coloca cajas debajo de un despachador el cual deposita entre 40 y 60 piezas. Desarrolla un programa empleando arreglos unidimensionales (vectores) que realice lo
siguiente:

  1. Mediante una función capturar la cantidad de piezas almacenadas en las primeras 20 cajas. Se podrán registrar hasta 100 cajas pero solo importara la información de las primeras 20.
  2. Elabora una función que calcule e imprima el total y el promedio de piezas que se encuentran en las primeras 20 cajas.
  3. Indicar mediante una función que cuantas de las primera 15 cajas tiene menos de 50 piezas.
  4. Realiza una función que indique cual caja tiene el mayo y el menor numero de piezas dentro de las primeras 10 cajas.
El programa:


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
using namespace std;

void Piezas (int Cajas[20], int n)
{
    int i,c;
    for(i=0;i<n;i++)
    {
        if(i<20){
                cout<<"Piezas en Caja "<<(i+1)<<":";
                cin>>Cajas[i];
                while(Cajas[i]<40||Cajas[i]>60){
                    cout<<"Numero Invalido"<<endl;
                    cout<<"Piezas en Caja "<<(i+1)<<":";
                    cin>>Cajas[i];}
        }
        if(i>=20)
        {
        cout<<"Piezas en Caja "<<(i+1)<<"::";
        cin>>c;
        while(c<40||c>60){
                    cout<<"Numero Invalido"<<endl;
                    cout<<"Piezas en Caja "<<(i+1)<<":";
                    cin>>c;}
        }
    }
}

void TP (int Cajas[20])
{
    int i, s=0;
    float p;
    for(i=0;i<20;i++)
        s=s+Cajas[i];
    cout<<endl<<endl;
    cout<<"Total de Piezas de las primera 20 cajas: "<<s<<endl;
    p=s/20;
    cout<<"Promedio de Piezas de las primera 20 cajas: "<<p<<endl;
}

void menor (int Cajas [20])
{
    int i,s=0;
    for(i=0;i<15;i++)
    {
        if(Cajas[i]<50)
            s++;
    }
    cout<<"No. de Cajas con menos de 50 piezas de las primera 20 cajas: "<<s<<endl;
}

void MinMax (int Cajas [20])
{
    int i,m,M;
    m=M=Cajas[0];
    for(i=0;i<10;i++)
    {
        if(Cajas[i]<m)
            m=Cajas[i];
        if(Cajas[i]>M)
            M=Cajas[i];
    }
    cout<<"Minimo de Piezas en las primeras 10 cajas: "<<m<<endl;
    cout<<"Maximo de Piezas en las primeras 10 cajas: "<<M<<endl;
}

int main()
{
    int n,Cajas[20];
        char opc;
        system ("color 4f");
    do{
            system("cls");
    cout<<"\t\tEjercicio No. 5 'Banda Transportadora'"<<endl<<endl;
    do{
        cout<<"Cuantas cajas empleo: ";
        cin>>n;
        if(n>100||n<20)
            cout<<"No. Invalido"<<endl;
    }while(n>100||n<20);
    Piezas(Cajas,n);
    TP(Cajas);
    menor(Cajas);
    MinMax(Cajas);
    cout<<endl<<endl;
    cout<<"Desea repetir el programa? s/n : ";
    cin>>opc;
    }while (opc=='s'||opc=='S');
    cout<<endl<<endl;
    return 0;
}



Haciendo Repaso de Tipos de Funciones y Apuntadores

     En este segundo semestre nos encontramos con un nuevo enfoque a la programación que se había llevado a en primer semestre (donde era simplemente programación en lenguaje C). Pero para poder empezar con este nuevo curso es necesario recordar algunos conceptos que serán claves para este nuevo curso.
  • Funciones "Paso por Valor"
     Este tipo de funciones consiste en copiar, en una variable del main o de alguna sección a donde se encuentra dicha función que le invoque, para fines operacionales por lo que no se modificara el valor de la variable y por supuesto solo se leerá el contenido de la dirección de memoria RAM donde se encuentre.


  • Funciones "Paso por Referencia"
     En esta funciones lo que se utiliza en la invocación de la función no es el dato, sino que lo que se invoca es la dirección de la memoria RAM en la que se encuentra el dato con el que se va atrabajar (por ello que se ocupe en la invocación el símbolo & ), por lo tanto, cuando se ejecutan las funciones se modifica el valor original de dicha localidad. En este caso no es necesario retornar ningún desde la función (si es el caso) en el que se ha ocupado dicho dato porque ya se ha modificado desde su localidad en la memoria.


  • Apuntadores
     Son variables cuyo valor son direcciones de memoria. Se identifican porque en su declaración se emplea la siguiente sintaxis:

                                                  tipo_*_nombre-del-apuntador

     En donde tipo no es el tipo del apuntador, sino el tipo de dato el cual guardara en él. 
     Para realizar la lectura de lo que almacena dicho apuntador es necesario el símbolo * . Si no emplea dicho símbolo solo se estará empleando la dirección de las localidades a las que apunta la declaración del apuntador empleado


     Estos son algunos vídeos que pueden servir para conocer mejor este proceso de funciones y apuntadores.

Vídeo sobre tipos de funciones



Vídeo sobre apuntadores


Plan de Estudios - Programación Orientada a Objetos


Bienvenid@!!!

En el siguiente link podrás encontrar el Plan de Estudios de la materia Programación Orientada a Objetos:

Plan de Estudios - Programación Orientada a Objetos

Todos los ejercicios o ejemplos están basados en programación C++ principalmente, bajo la interfaz de Code::Blocks (http://www.codeblocks.org/downloads/26). Por lo que en general, para todo aquel que se anime a explorar este blog, deberá tener  nociones de programación.













Me gustaría hacer mención que los contenidos en este blog son propiedad del autor. Queda prohibida su reproducción completa o parcial, sin previa autorización o mención del mismo.