miércoles, 21 de mayo de 2014

Practica No. 5

Problema #1

Una pequeña aerolínea requiere un sistema automático de reservaciones. A usted se le ha pedido que programe un nuevo sistema. Usted debe escribir un programa que asigne los asientos, en cada vuelo, del único avión de la aerolínea (Capacidad 10 asientos). Su programa debe desplegar el siguiente menú de alternativas:

Por favor, digite 1 para primera clase
Por favor, digite 2 para segunda clase

Si la persona digita 1, su programa debe asignar un asiento en la sección de primera clase (asientos 1 a 5). Si la persona digita 2, su programa debe asignar un asiento en la clase turística (asientos 6 a 10). Su programa debe imprimir un pase de abordado que indique el numero de asiento de la persona y si esta en la sección de primera clase o en la sección de clase turista.

Utilice un arreglo con un solo subconjunto para representar los asientos del avión. Inicialize a cero todos los elementos del arreglo para indicar que todos los asientos están vacíos. Mientras se asigna cada asiento, el valor de los elementos correspondientes al arreglo se establece en 1, para indicar que el asiento ya no esta disponible.

Por supuesto, su programa nunca debe asignar un asiento que ya esta asignado. Cuando la sección de primera clase esta llena, su programa debe preguntar a la persona si acepta que se le coloque en la sección turística (y viceversa). Si acepta, entonces haga la asignación apropiada del asiento. Si no acepta, entonces despliegue el mensaje "El siguiente vuelo parte en tres horas".


Codigo:


#include <iostream>
#include <conio.h>
#include <stdlib.h>

void asignar_asiento(int);
void imprimir_pasep(int);
void imprimi_paset(int);


using namespace std;

int subp[5];
int subt[5];
int i=1,j=1;

int main()
{
    char cont;
    do
    {
        int menu;
        system("cls");
        cout<<"Por favor, digite 1 para primera clase"<<endl;
        cout<<"Por favor, digite 2 para clase turista"<<endl;
        cin>>menu;

        switch (menu)
        {
        case 1:
            cout<<"\nUsted selecciono primera clase, a continuacion se le asignara un asiento"<<endl;
            asignar_asiento(menu);
            break;

        case 2:
            cout<<"\nUsted selecciono clase turista, a continuacion se le asignara un asiento"<<endl;
            asignar_asiento(menu);
        }

        cout<<"\n\nDesea continuar? s/n ";
        cin>>cont;
    }
    while(cont=='s'||cont=='S');

    getch();
    return 0;
}

void asignar_asiento(int asiento)
{
    char cambio;

    switch(asiento)
    {
        case 1:
        if (asiento==1 && i<6)
        {
            subp[i]=1;
            cout<<"\nSu asiento es el numero "<<i<<" en primera clase.";
            imprimir_pasep(i);
            i++;

        }
        else
        {
            cout<<"\nLa primera clase esta llena,\nAcepta que lo asignemos en clase turista?(s/n)"<<endl;
            cin>>cambio;

            if(cambio=='s' && j<6)
            {
                subt[j]=1;
                cout<<"\nSu asiento es el numero "<<j<<" en clase turista.";
                imprimi_paset(j);
                j++;

            }
            else
            {
                if(cambio=='s' && j==6)
                {
                    cout<<"\nAmbas clases estan llenas"<<endl;
                    cout<<"\nLamentamos las molestias, el siguiente vuelo parte en 3 horas"<<endl;

                }
                else
                {
                    cout<<"\nLamentamos las molestias, el siguiente vuelo parte en 3 horas"<<endl;
                }
            }
        }

        break;

        case 2:
        if(asiento==2 && j<6)
        {
            subt[j]=1;
            cout<<"\nSu asiento es el numero "<<j<<" en clase turista.";
            imprimi_paset(j);
            j++;
        }
        else
        {
            cout<<"\nLa clase turista esta llena,\nAcepta que lo asignemos en primera clase?(s/n)"<<endl;
            cin>>cambio;

            if(cambio=='s'&& i<6)
            {
                subp[i]=1;
                cout<<"\nSu asiento es el numero "<<i<<" en primera clase.";
                imprimir_pasep(i);
                i++;
            }
            else
            {
                if(cambio=='s' && i==6)
                {
                    cout<<"\nAmbas clases estan llenas";
                    cout<<"\nLamentamos las molestias, el siguiente vuelo parte en 3 horas"<<endl;

                }
                else
                {
                    cout<<"\nLamentamos las molestias, el siguiente vuelo parte en 3 horas"<<endl;
                }

            }
        }
        break;
    }
}

void imprimir_pasep(int asiento)
{
    cout<<"\n________________________________________________________"<<endl;
    cout<<"|                                                        |"<<endl;
    cout<<"|                                                        |"<<endl;
    cout<<"|  # de asiento: "<<asiento<<"                                       |"<<endl;
    cout<<"|                                                        |"<<endl;
    cout<<"|  Clase: Primera                                        |"<<endl;
    cout<<"|                                                        |"<<endl;
    cout<<"|                                                        |"<<endl;
    cout<<"________________________________________________________"<<endl;
}

void imprimi_paset(int asiento)
{
    cout<<"\n________________________________________________________"<<endl;
    cout<<"|                                                        |"<<endl;
    cout<<"|                                                        |"<<endl;
    cout<<"|  # de asiento: "<<asiento<<"                                       |"<<endl;
    cout<<"|                                                        |"<<endl;
    cout<<"|  Clase: Turista                                        |"<<endl;
    cout<<"|                                                        |"<<endl;
    cout<<"|                                                        |"<<endl;
    cout<<"________________________________________________________"<<endl;
}










Imagen del programa:



Diagrama de flujo:



Problema #2

Escriba un programa para generar 14 numero enteros en un arreglo llamado emax y encuentre el máximo valor introducido. Después de desplegar los números, imprima estos dos mensajes:

El valor máximo es:
Este es el elemento numero_____en la lista de números

También localice el menor de los datos introducidos.



Codigo

#include <iostream>
#include <conio.h>

using namespace std;

const int tam = 14;

void leerDatos(int emax[tam]);
int maximo(int emax[tam]);
int minimo(int emax[tam]);
void desplegar(int emax[tam],int,int,int,int);

int main()
{
    int emax[tam];
    int posmax,posmin,M,m;

    leerDatos(emax);
    maximo(emax);
    minimo(emax);

    posmax = maximo(emax);
    posmin = minimo(emax);

    M = emax[posmax - 1];
    m = emax[posmin - 1];

    desplegar(emax,M,m,posmax,posmin);
getch();
return 0;
}

void leerDatos(int emax[tam])
{
    int i;

        for(int i=0; i<tam; i++)
        {
            cout<<"("<<i+1<<")"<<"Introduzca un numero; ";
            cin>>emax[i];
        }
}

int maximo(int emax[tam])
{
    int i,maximo,posmax;
    for(i=0; i<tam; i++)
    {
        emax[i];
        if(i == 0)
        {
            posmax = i + 1;
            maximo = emax[0];
        }
        if(emax[i] > maximo)
        {
            maximo = emax[i];
            posmax = i + 1;
        }
    }
    return posmax;
}

int minimo(int emax[tam])
{
    int i,minimo,posmin;
    for(i=0; i<tam; i++)
    {
        emax[i];
        if(i == 0)
        {
            posmin = i + 1;
            minimo = emax[0];
        }
        if(emax[i] < minimo)
        {
            minimo = emax[i];
            posmin = i + 1;
        }
    }
    return posmin;
}

void desplegar(int emax[tam],int M,int m,int posmax,int posmin)
{
    int i;
    for(i=0; i<tam; i++)
    {
        cout<<"\n"<<emax[i];

    }
        cout<<"\n\nEl valor maximo es : "<<M<<endl;
        cout<<"Este es el elemento numero "<<posmax<<" en la lista."<<endl;
        cout<<"El valor minimo es : "<<m<<endl;
        cout<<"Este es el elemento numero "<<posmin<<" en la lista."<<endl;

}




Imagen del programa:



Diagrama de flujo:


Estructura general







Parametros de funciones:












Problema #3

Escriba un programa para introducir los siguientes números enteros en un arreglo llamado calificaciones: 89, 95, 72, 83, 99, 54, 86, 75, 92, 73, 79, 75, 82, 93. Al introducir cada numero , súmelo a un total. Después de introducir todos los números y obtener el total, calcule el promedio y úselo para determinar la desviación de cada valor con respecto al promedio. Almacene cada desviacion en un arreglo llamado desviaciones. Haga que el programa despliegue cada desviacion a un lado del elemento correspondiente del arreglo calificaciones y calcule la varianza

Codigo:

#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

const int tamArreglo = 14;
void leerdatos(int calificaciones[tamArreglo]);
double t(int calificaciones[tamArreglo]);
double p(double);
double desviaciones(double desviacion[tamArreglo], int calificaciones[tamArreglo], double);
double varianzas(double desviacion[tamArreglo]);
void desplegar(double, double, int calificaciones[tamArreglo], double desviacion[tamArreglo], double);

int main()
{
    int calificaciones[tamArreglo];
    double desviacion[tamArreglo];
    double total,promedio,var;

    leerdatos(calificaciones);

    total = t(calificaciones);
    promedio = p(total);

    desviaciones(desviacion, calificaciones, promedio);
    varianzas(desviacion);

    var = varianzas(desviacion);

    desplegar(total,promedio,calificaciones,desviacion,var);

getch();
return 0;
}

void leerdatos(int calificaciones[tamArreglo])
{
    int i;

    for(i = 0; i<tamArreglo; i++)
    {
        cout<<"Introduzca una calificacion: ";
        cin>>calificaciones[i];
    }
}
double t(int calificaciones[tamArreglo])
{

    int i;
    double total = 0;

    for(i = 0; i<tamArreglo; i++)
    {
        total = total + calificaciones[i];
    }
    return total;
}
double p(double total)
{
   double promedio;

   promedio = total/tamArreglo;

   return promedio;
}
double desviaciones(double desviacion[tamArreglo], int calificaciones[tamArreglo], double promedio)
{
    int i;
    for(i = 0; i<tamArreglo; i++)
    {
        desviacion[i] = calificaciones[i] - promedio;
    }

return desviacion[i];

}
double varianzas(double desviacion[tamArreglo])
{
    int i;
    double varianza, vartotal = 0;
    for(i = 0; i<tamArreglo; i++)
    {
        varianza = pow(desviacion[i],2);
        vartotal = varianza + vartotal;
    }
    vartotal = vartotal/tamArreglo;
    return vartotal;
}
void desplegar(double total, double promedio, int calificaciones[tamArreglo], double desviacion[tamArreglo], double var)
{
    int i;

    cout<<"\n\nEl total es: "<<total<<endl;

    cout<<"\nEl promedio es: "<<promedio<<endl;

    cout<<"\n\nCalificaciones     Desviacion"<<endl;

    for(i = 0; i<tamArreglo; i++)
    {
        cout<<calificaciones[i]<<"\t\t   "<<desviacion[i]<<endl;
    }
    cout<<endl;
    cout<<"La varianza total es: "<<var;
}

Imagen del programa:



Diagrama de flujo:


Estructura general






Parametros funcion











Problema #4

Escriba un programa que especifique tres arreglos unidimensionales denominados corriente, resistencia y voltios. Cada arreglo debe ser capaz de almacenar 8 elementos. Introduzca valores para los arreglos, corriente y resistencia. Los datos introducidos en el arreglo voltios deben ser el producto de los valores correspondientes a los arreglos corriente y resistencia (entonces voltios[i]=corriente[i]*resistencia[i]). Después de introducir los datos, despliegue la siguiente salida:

Corriente Resistencia Voltios
Despliegue el valor correcto de cada encabezado.

Codigo

#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <math.h>

using namespace std;

void leerfuncion(double corriente[8],double resistencia[8]);
double calculo(double voltios[8],double corriente[8], double resistencia[8]);
void leercalculo(double voltios[8],double resistencia[8], double corriente[8]);
int main()

{


    double corriente[8],resistencia[8],voltios[8];





    leerfuncion(corriente,resistencia);
    calculo(voltios,corriente,resistencia);
    leercalculo(voltios, corriente, resistencia);
    getch();
    return 0;

}


void leerfuncion(double corriente[8],double resistencia[8])

{
    int i;


    for(i=0;i<8;i++)
    {
        cout<<"Introduce los valores para la corriente: ";
        cin>>corriente[i];

    }

        cout<<"\n\n";
    for(i=0;i<8;i++)


    {

        cout<<"Introduce los valores para la resistencia: ";
        cin>>resistencia[i];
    }
}

double calculo(double voltios[8], double corriente[8], double resistencia[8])
{
 int i;

 for(i=0;i<8;i++)
 {
  voltios[i]=corriente[i]*resistencia[i];

 }

 return voltios[i];
}

void leercalculo(double voltios[8],double corriente[8], double resistencia[8])
{
    int i;
    cout<<"\n\n";
    cout<<"Corriente     Resistencia      Voltios"<<endl;
    for(i=0;i<8;i++)
    {
        cout<<"\n     "<<corriente[i]<<"\t          "<<resistencia[i]<<"\t         "<<voltios[i]<<endl;

    }
}


Imagen del programa



Diagrama de flujo


Estructura general




Parametros de la funcion

Problema #5

 Haga un programa para generar 25 números en forma aleatoria y los ordene en forma ascendente.


Codigo
#include<stdlib.h>
#include<time.h>
#include<iostream>
#include<conio.h>

using namespace std;

void valoresAleatorios(float valor[25]);
void ordenBurbuja(float valor[25],int maxi);


int main()
{
    int i,maxi=25;
    float valor[25];

    valoresAleatorios(valor);
    ordenBurbuja(valor, maxi);

    getch();
    return 0;
}

void valoresAleatorios(float valor[25])
{
    cout<<"Numeros aleatorios: "<<endl;

    int i;
    srand(time(NULL));
    for(i=0;i<25;i++)
    {
        valor[i]=rand()% 100 +1;
        cout<<"valor["<<i+1<<"]: "<<valor[i]<<endl;
    }


}

void ordenBurbuja (float valor[25], int maxi)
{
    int i, j, temp;
    for(i=0; i<(maxi-1); i++)
    {
        for(j=1; j<maxi; j++)
        {
            if(valor[j]<valor[j-1])
            {
                temp= valor[j];
                valor[j]=valor[j-1];
                valor[j-1]= temp;
            }
        }
    }

    cout<<"\nla lista ordenada, en orden acendente es: "<<endl;

    for(i=0; i<25; ++i)
    {
        cout<<" "<<valor[i]<<",";
    }
}

Imagen del programa
































Pseudocodigo


INICIO
int i,maxi=25:

real valor[25]:

valoresAleatorios(valor)

ondenBurbuja(valor,maxi)

Fin


funcion valoresAleatorios(real valor[25])
{
int i:
write "Numeros aleatorios:

for(i=0 to 25 step i=i+1)
{
valor[i]=rand()%100+1
write "valor",(i+1), "valor[i]
}
}

funcion ordenBurbuja(float valor[25], maxi:int)
{
i,j,temp:int
for(i=0 to (maxi-1) step i=i+1)
{
for(j=0 to (maxi) step j=j+1)
{
if(valor[j]<valor[j-1])
{
 temp= valor[j]
 valor[j]=valor[j-1]
 valor[j-1]= temp
}
}
}
white "la lista ordenada, en orden acendente es:"
for(i=0 to 25 step i=i+1)
{
white "---", valor[i], ","
}
}


Problema #6
Haga un programa para generar 30 números en forma aleatoria y despliegue una lista de los números pares y otra lista de números impares.


Codigo
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

void numPares(int valor[30]);
void numImpares(int valor[30]);


using namespace std;

int main()
{

int i,valor[30];
srand(time(NULL));
cout<<"Valores aleatorios"<<endl;
for(i=0;i<30;i++)
{
valor[i]=rand()%100+1;

cout<<"valor["<<i+1<<"]: "<<valor[i]<<endl;
}


cout<<"Presione una tecla para desplegar los PARES e IMPARES";
getch();


numPares(valor);
numImpares(valor);

getch();
}

void numPares(int valor[30])

{
   int a;
float val;
cout<<"\n\nPARES: ";
for(a=0; a<30; a++)
{
    val=valor[a]%2;

    if(val==0)
    {
        cout<<""<<valor[a]<<",";

    }
}
}
void numImpares(int valor[30])
{
int a;
float val;

cout<<"\n\nIMPARES: ";
for(a=0; a<30; a++)
{
    val=valor[a]%2;
    if(val !=0)
    {
        cout<<valor[a]<<",";
    }
}
}
Imagen del programa




Diagrama de flujo

Estructura general


Parametros funciones

No hay comentarios:

Publicar un comentario