miércoles, 4 de junio de 2014

Practica No. 7



1. Cree un archivo de texto que contenga los siguientes números de automóviles, número de millas recorridas y número de galones de gasolina utilizados en cada automóvil (no incluya los encabezados):

Núm. de automóvil    Millas recorridas      Galones utilizados

      54                    250                     19
      62                    525                     38
      71                    123                      6
      85                  1 322                     86

      97                    235                     14

Codigo:


#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
int main()
{  
int numero, millas, galones;  
float promedio;  
string nombre_archivo = "C:\\problema_1.txt";  
ifstream entrada;  
entrada.open(nombre_archivo.c_str());  
if(entrada.fail())  
{  
cout << "El archivo no se abrio";  
exit(1);  
}  
while(!entrada.eof())  
{  
entrada >> numero >> millas >> galones;  
promedio = millas/galones;  
cout << "Num. de automovil: " << numero << endl << "Millas recorridas: " << millas << endl << "Galones utilizados: " << galones << endl << "Millas por galon: " << promedio << endl << endl;  
}  
return 0;
}

2. Cree un archivo de texto con los siguientes datos (sin los encabezados):

Número de parte Cantidad inicial Cantidad vendida Cantidad mínima

       QA310           95               47              50
       CM145          320              162             200
       MS514           34               20              25

       EN212          163              150             160

Escriba un programa en C++ para crear un reporte de inventario basado en los datos en el archivo creado en el ejercicio 9a. El despliegue deberá consistir en el número de parte, balance actual y la cantidad que es necesaria para mantener el inventario en el nivel mínimo.

Codigo:

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

using namespace std;

void leer_datos(char nombre[4][20], int ci[4], int cv[4], int cm[4]);
void operacion(char nombre[4][20], int ci[4], int cv[4], int cm[4],int valance[4]);
void enviar_datos(char nombre[4][20], int ci[4], int cv[4], int cm[4],int valance[4]);

int main()
{
 char nombre[4][20];
 int ci[4],cv[4],cm[4],valance[4];

 leer_datos(nombre,ci,cv,cm);
 operacion(nombre,ci,cv,cm,valance);
 enviar_datos(nombre,ci,cv,cm,valance);


getch();
return 0;
}


void leer_datos(char nombre[4][20], int ci[4], int cv[4], int cm[4])
{

ifstream archivo_entr;
int i;


archivo_entr.open("C:\\Users\\K4rlos\\Documents\\Datos (2).txt");
for(i=0;i<4;i++)
{
archivo_entr>>nombre[i]>>ci[i]>>cv[i]>>cm[i];
}
}


void operacion(char nombre[4][20], int ci[4], int cv[4], int cm[4],int valance[4])
{
int i;

        for(i=0; i<4; i++)
        {

valance[i]=ci[i]-cv[i];
}
}

void enviar_datos(char nombre[4][20], int ci[4], int cv[4], int cm[4],int valance[4])
{
int i;
cout<<"Datos inicial de la tabla"<<endl;
cout<<" "<<endl;
     for(i=0; i<4; i++)
     {

   cout<<nombre[i]<<setw(4)<<ci[i]<<setw(4)<<cv[i]<<setw(4)<<cm[i]<<endl;

     }

cout<<" "<<endl;
cout<<"El valance actual de la tabla es: "<<endl;
cout<<" "<<endl;
cout<<"QA310   CM145   MS514   EN212"<<endl;
cout<<" "<<endl;

     for(i=0; i<4; i++)
     {
     cout<<valance[i]<<setw(9);
     }

cout<<" "<<endl;
cout<<" "<<endl;
     for(i=0; i<4; i++)
     {
     if(valance[i]<cm[i])
        cout<<nombre[i]<<"  "<<"esta debajo de la cantidad minima"<<endl;
     else{
        cout<<nombre[i]<<"  "<<"se encuentra encima o igual que la cantidad minima"<<endl;
     }
     }

}


3. Cree un archivo de texto que contenga los siguientes datos (sin encabezados):

Nombre          Tarifa      Horas
Callaway,G.      6.00        40
Hanson,P.        5.00        48
Lasard,D.        6.50        35

Stillman,W.      8.00        50

Escriba un programa en C++ que use la información contenida en el archivo creado en el ejercicio 10a para producir el siguiente reporte de pagos para cada empleado:

Codigo:

#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <iomanip>

using namespace std;


void obtener_datos(char nombre[4][17], float tarifa[4], float horas[4]);
void calcular(float tarifa[4], float horas[4], float Pregular[4], float Ptextra[4], float Pbruto[4]);
float regular(float Pregular[4], float Ptextra[4], float Pbruto[4]);
float extra(float Pregular[4], float Ptextra[4], float Pbruto[4]);
float bruto(float Pregular[4], float Ptextra[4], float Pbruto[4]);
void enviar_datos(char nombre[4][17], float tarifa[4], float horas[4], float Pregular[4], float Ptextra[4], float Pbruto[4], float R, float E, float B);


int main()
{
    char nombre[4][17];
    float tarifa[4];
    float horas[4];
    float Pregular[4];
    float Ptextra[4];
    float Pbruto[4];
    float R,E,B;

        obtener_datos(nombre,tarifa,horas);
        calcular(tarifa,horas,Pregular,Ptextra,Pbruto);
        R = regular(Pregular,Ptextra,Pbruto);
        E = extra(Pregular,Ptextra,Pbruto);
        B = bruto(Pregular,Ptextra,Pbruto);
        enviar_datos(nombre,tarifa,horas,Pregular,Ptextra,Pbruto,R,E,B);

    getch();
    return 0;
}

void obtener_datos(char nombre[4][17], float tarifa[4], float horas[4])
{
    ifstream entrada;
    int i;
    entrada.open("C:\\Users\\marco_000\\Documents\\Segundo semestre\\Programación\\Practica 7\\3\\Informacion.txt");

    for(i=0; i<4; i++)
        {
            entrada>>nombre[i]>>tarifa[i]>>horas[i];
        }
}

void calcular(float tarifa[4], float horas[4],  float Pregular[4], float Ptextra[4], float Pbruto[4])
{
    int i;

        for(i=0; i<4; i++)
        {
            if(horas[i] <= 40)
            {
                Pregular[i] = tarifa[i]*horas[i];
                Ptextra[i] = 0;
            }
            if(horas[i] > 40)
            {
                Pregular[i] = tarifa[i]*40;
                Ptextra[i] = (horas[i]-40)*((1.5)*tarifa[i]);
            }

            Pbruto[i] = Pregular[i] + Ptextra[i];
        }
}

float regular(float Pregular[4], float Ptextra[4], float Pbruto[4])
{
    int i;
    float Tregular = 0;

        for(i=0; i<4; i++)
        {
            Tregular = Pregular[i] + Tregular;
        }

    return Tregular;
}

float extra(float Pregular[4], float Ptextra[4], float Pbruto[4])
{
    int i;
    float Textra = 0;

        for(i=0; i<4; i++)
        {
            Textra = Ptextra[i] + Textra;
        }

    return Textra;
}

float bruto(float Pregular[4], float Ptextra[4], float Pbruto[4])
{
    int i;
    float Tbruto = 0;

        for(i=0; i<4; i++)
        {
            Tbruto = Pbruto[i] + Tbruto;
        }

    return Tbruto;
}
void enviar_datos(char nombre[4][17], float tarifa[4], float horas[4], float Pregular[4], float Ptextra[4], float Pbruto[4], float R, float E, float B)
{
    ofstream salida;
    int i;
    salida.open("C:\\Users\\marco_000\\Documents\\Segundo semestre\\Programación\\Practica 7\\3\\Resultado.txt");


        //Programa
        cout<<"\n\n  Nombre     Tarifa   Horas   Pago bruto   Pago de tiempo extra   Pago regular\n"<<endl;
        for(i=0; i<4; i++)
        {
            cout<<setw(11)<<nombre[i]<<setw(6)<<tarifa[i]<<setw(8)<<horas[i]<<setw(12)<<Pbruto[i]<<setw(16)<<Ptextra[i]<<setw(20)<<Pregular[i]<<endl;
        }
        cout<<"\n                  Totales:     "<<B<<"             "<<E<<"               "<<R<<endl;

        //Archivo
        salida<<"\n\n  Nombre     Tarifa   Horas   Pago bruto   Pago de tiempo extra   Pago regular\n"<<endl;
        for(i=0; i<4; i++)
        {
            salida<<setw(11)<<nombre[i]<<setw(6)<<tarifa[i]<<setw(8)<<horas[i]<<setw(12)<<Pbruto[i]<<setw(16)<<Ptextra[i]<<setw(20)<<Pregular[i]<<endl;
        }
        salida<<"\n                  Totales:     "<<B<<"             "<<E<<"               "<<R<<endl;


}

4. Almacene los siguientes datos en un archivo:
5 96 87 78 93 21 4 92 82 85 87 6 72 69 85 75 81 73

b. Escriba un programa en C++ para calcular y desplegar el promedio de cada grupo de números en el archivo creado en el ejercicio 11a. Los datos están ordenados en el archivo de modo que cada grupo de números esté precedido por el número de elementos de datos en el grupo. Por tanto, el primer número en el archivo, 5, indica que los siguientes cinco números deberán agruparse juntos. El número 4 indica que los siguientes cuatro números son un grupo, y el 6 indica que los últimos seis números son un grupo. (Sugerencia: Use un ciclo anidado. El ciclo
exterior deberá terminar cuando se haya encontrado el final del archivo.)

Codigo:


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

using namespace std;

void escribir_archivo(int n);
void leer_archivo();

int main()
{
    int n;
    cout<<"Cuantos datos desea escribir?, (recuerde que el primer valor es el numero de elementos a los que se le considerara un grupo) ";
    cin>>n;

    escribir_archivo(n);
    leer_archivo();

    getch();
    return 0;
}

void escribir_archivo(int n)
{
    ofstream archivo;
    archivo.open("C://archivo.txt");
    int i,dato;
    for(i=0; i<n; i++)
    {
        if(i<(n-1))
        {
            cout<<"Dato No. "<<i+1<<": ";
            cin>>dato;
            archivo<<dato<<endl;
        }
        else
        {
            cout<<"Dato No. "<<i+1<<": ";
            cin>>dato;
            archivo<<dato;
        }

    }

}

void leer_archivo()
{
    ifstream archivo;
    archivo.open("C://archivo.txt");
    int r=0,calif,c,n;
    float promedio,result;

    while(!archivo.eof())
    {
        archivo>>n;
        promedio=0;
        calif=0;
        for(c=0; c<n; c++)
        {
            cout<<endl;
            archivo>>calif;
            cout<<"la calificacion "<<c+1<<": "<<calif<<" ";
            promedio=(promedio+calif);
        }
        result=(promedio/n);
        cout<<"\n\nEl promedio del grupo "<<r+1<<" es: "<<result;
        r++;
        cout<<endl;
    }

    archivo.close();
}

Ejercicio en clase 3 //5 de marzo//

1) Problema No. 4 Pagina 214.

El nivel de grado de los estudiantes universitarios se determina de manera típica de
acuerdo con la siguiente tabla:

Número de créditos completados                    Grado
menor que 32                                    primer año
32 a 63                                         segundo año
64 a 95                                         tercer año
96 o más                                        último año


Pseudocodigo:
inicio

cre:real

write "Introduzca numero de creditos adquiridos: "
read cre

if(cre>=0 and cre<32)
then
{
write "Se encuentra en primer grado"
}
else
{
if(cre>=32 and cre<=63)
then
{
write "Se encuentra en segundo grado"
}
else
{
if(cre>=64 and cre<=95)
then
{
write "se encuentra en tercer grado"
}
else
{
if(cre>=96)
then
{
Wwrite "se encuentra en ultimo grado"
}
}
}
}


fin

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

using namespace std;

int main()
{
float cre;

cout<<"Introduzca numero de creditos adquiridos: ";
cin>>cre;

if(cre>=0 && cre<=30)
{
    cout<<"se encuentra en primer grado";
}
else
{
    if(cre>=32 && cre<=63)
    {
        cout<<"se encuentra en segundo grado";
    }
    else
    {
        if(cre>=64 && cre<=95)
        {
            cout<<"se encuentra en tercer grado";
        }
        else
        {
            if(cre>=96)
            {
                cout<<"su encuentra en ultimo año";
            }
        }
    }
}

getch();
return 0;

}

Captura del programa:


2) Problema No. 5 Pagina 214.
La letra que representa las calificaciones de un estudiante se calcula de acuerdo con
la siguiente tabla:

Calificación numérica                      Letra
mayor que o igual a 90                       A
menor que 90 pero mayor que o igual a 80     B
menor que 80 pero mayor que o igual a 70     C
menor que 70 pero mayor que o igual a 60     D

menor que 60                                 F

Pseudocodigo:
inicio

cn:int

write "Ingrese la calificacion numerica"
read cn

if(cn>100)
then
{
write "Calificacion erronea"
}
else
{
if(cn>=90)
then
{
write "Su calificacion es A"
}
else
{
if(cn<90 and cn>=80)
then
{
write "Su calificacion es B"
}
else
{
if(cn<80 and cn>=70)
then
{
write "Su calificacion es C"
}
else
{
if(cn<70 and cn>=60)
then
{
write "Su calificacion es E"
}
else
{
if(cn<60)
then
{
write "Su calificacion es F"
}
}
}
}

}

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

using namespace std;

main ()
{
int cn;

cout<<"Ingrese la calificacion numerica "<<endl;
cin>>cn;

if(cn > 100){
cout<<"Calificacion erronea";
}
else{
     if(cn >= 90){
     cout<<"Su calificacion es A";
     }
     else{
          if(cn < 90 && cn >=80){
          cout<<"Su calificacion es B";
          }
          else{
               if(cn < 80 && cn >= 70){
               cout<<"Su calificacion es C";
          }
               else{
                    if(cn < 70 && cn >= 60){
                    cout<<"Su calificacion es E";
                    }
                    else{
                    if(cn < 60){
                    cout<<"Su calificacion es F";
                    }
                        else{
                        cout<<"Calificacion erronea";
                        }
                    }
               }
          }
     }
}

getch();
return 0;

}

Captura del programa:


3) Problema No. 6 Pagina 214.
La tolerancia de componentes críticos en un sistema se determina por la aplicación
de acuerdo con la siguiente tabla:

Estado de la especificación           Tolerancia
Exploración espacial      Menor que 0.1%
Grado militar             Mayor que o igual a 0.1% y menor que 1%
Grado comercial           Mayor que o igual a 1% y menor que 10%
Grado de juguete          Mayor que o igual a 10%

Usando esta información, escriba un programa en C++ que acepte la lectura de tolerancia
de un componente y determine la especificación que debería asignarse al componente.

Pseudocodigo:
inicio

tolerancia:doble

write "introduzca la tolerancia porfavor"
read tolerancia

if(tolerancia<0.1)
then
{
write "Exploracion espacial"
}
else
{
if(tolerancia>=0.1 and tolerancia<1)
then
{
write "Grado militar"
}
else
{
if(tolerancia>=1 and tolerancia<10)
then
{
write "Grado comercial"
}
else
{
if(tolerancia>=10)
then
{
write "Grado de juguete"
}
}
}
}

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

using namespace std;

int main ()

{

double Tolerancia;

cout<<"\nintrodusca la tolerancia porfavor: ";
cin>>Tolerancia;
if(Tolerancia<0.1)

{

cout<<"\nExploracion espacial"<<endl;
}
else{
if(Tolerancia>=0.1 && Tolerancia<1)
{ cout<<"\nGrado Militar";}

else{
if(Tolerancia>= 1 && Tolerancia<10)
{cout<<"\nGrado comercial";}

else{
if(Tolerancia>=10)
{cout<<"\nGrado de juguete";}


}}}

getch();
return 0;
}

Imagen del programa:


4) Problema No. 7 Pagina 215.

Escriba un programa en C++ que acepte un número seguido por un espacio y luego
una letra. Si la letra que sigue al número es f, el programa tratará al número introducido
como una temperatura en grados Fahrenheit, convertirá el número a los grados
Celsius equivalentes y desplegará un mensaje adecuado. Si la letra que sigue al
número es c, el programa tratará al número introducido como una temperatura en
Celsius, convertirá el número a los grados Fahrenheit equivalentes y desplegará un
mensaje adecuado. Si la letra no es f ni c, el programa imprimirá el mensaje que los
datos introducidos son incorrectos y terminará. Use una cadena if-else en su programa
y use las fórmulas de conversión:
Celsius = (5.0 / 9.0) * (Fahrenheit – 32.0)
Fahrenheit = (9.0 / 5.0) * Celsius + 32.0)

Pseudocodigo:
inicio

temperatura:real
fahrenheit, celsius:doble
tipo:char

write "Introduzca la temperatura e indique con una C si son grados Celcius \no una F si son grados fahrenheit "
read temperatura
read tipo

fahrenheit=(9.0/5.0)*temperatura+32
celsius=(5.0/9.0)*(temperatura-32)

if(tipo=='f')
then
{
write temperatura,"grados fahrenheit es equivalente a: ",celsius," grado celsius"
}
else
{
if(tipo=='c')
then
{
write temperatura," grados celsius es equivalente a: ",fahrenheit," grados fahrenheit"
}
else
{
write "El tipo de temperatura es incorrecto"
}
}

Codigo:

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

using namespace std;

int main()
{
float temperatura;
double fahrenheit, celsius;
char tipo;
cout<<"Introduzca la temperatura e indique con una C si son grados Celcius \no una F si son grados fahrenheit ";
cin>>temperatura;
cin>>tipo;
fahrenheit=(9.0/5.0)*temperatura+32;
celsius=(5.0/9.0)*(temperatura-32);
if(tipo=='f')
{
cout<<"\n\n"<<temperatura<<" grados fahrenheit es equivalente a: "<<celsius<<" grado celsius"<<endl;
}
else
{
if(tipo=='c')
{
cout<<"\n\n"<<temperatura<<" grados celsius es equivalente a: "<<fahrenheit<<" grados fahrenheit"<<endl;
}
else
{
cout<<"\nEl tipo de temperatura es incorrecto"<<endl;
}
}
getch();
return 0;
}

Captura del programa: