Tengo que hacer un programa de una areolinea

Iniciado por vinceet, 24 Octubre 2014, 01:10 AM

0 Miembros y 1 Visitante están viendo este tema.

vinceet

Hola tengo que hacer un programa de una aerolinea que se guarde en TXT pero tengo una series de errores

necesita comprar boleto eso lo hace
buscar persona con cedula eso lo hace
ver todos los haciendo ocupado mayores de 60 años eso lo hace
ver promedio de edad eso lo hace

pero a la hora de modificar no me modifica
y cuando cierro el programa lo vuelvo abrir el txt no hay nada necesito ayuda.

aqui tengo el codigo

daryo

pon el codigo dentro de las etiqueta [code=c]codigo aca[code]asegurate de cerrar el txt una ves terminasde escribir , si no puede pasar lo que dices y quedarse en blanco[/code][/code]
buenas

vinceet

hay algunas incoherencia como alumnos solo que me copie de uno q habia echo

#include <cstdlib>
#include <iostream>
#include <fstream>


using namespace std;

int contedad=0;
int edadtotal,edadpromedio;


struct alumno
{
       string nombre;
       int cedula;
       int edad;
       };

alumno persona[6][5];

int matriz [6][5],i,j;
char resp;

void mostrarmatriz(){
  for(int i=0;i<6;i++)
  {
for(int j=0;j<5;j++)
{
printf(" %i",matriz[i][j]);
}
printf("\n");
}
cout<<"\n"<<endl;
}



void Ingresar()
{ int opcion,a,b,ced=0;
 
 
  mostrarmatriz();
 
 
  cout<<"Ingresar Fila"<<endl;
  cin>>a;
    cout<<"Ingresar Columna"<<endl;
cin>>b;

if(persona[a][b].cedula==0){



  cout<<"Ingresar Nombre"<<endl;
  cin>>persona[a][b].nombre;
   cout<<"Ingresar cedula"<<endl;
cin>>ced;


for (int u=0; u<6; u++){
          for (int h=0;h<5;h++){

if(persona[u][h].cedula==ced){


         
         


cout<<"Ingrese una cedula que no este registrada: ";
cin>>ced;


}}}
persona[a][b].cedula=ced;
   cout<<"Ingresar edad"<<endl;
   cin>>persona[a][b].edad;
   i=a;
   j=b;
   matriz[i][j]=1;
   edadtotal=persona[a][b].edad+edadtotal;
   contedad++;
system ("pause");
}else{
cout<<"El asiento ya esta ocupado"<<endl;
system ("pause");
}

   
}

void Mostrarlistam60()
{

mostrarmatriz();
    for(int a=0;a<6;a++)
   
    {
            for(int b=0;b<5;b++)
            {
                    if((persona[a][b].cedula>0) && (persona[a][b].edad>=60)){
                   
     cout<<"\n\nSilla:"<<"Fila: "<<a<<", Columna: "<<b<<endl;     
  cout<<"Nombre: "<<persona[a][b].nombre<<endl;
    cout<<"Cedula: "<<persona[a][b].cedula<<endl;
    cout<<"Edad: "<<persona[a][b].edad<<endl;

    system ("pause");
   
   
}

}
}
}

void pasiento(){

int ced;
cout<<"Bienvenido al metodo mostrar: "<<endl;
cout<<"Ingrese cedula de la persona registrada: ";
cin>>ced;
for (int a=0;a<6; a++ ){
for (int b=0;b<5;b++){


if(persona[a][b].cedula==ced)
{
    cout<<"Silla:"<<a<<b<<endl;     
  cout<<"Nombre: "<<persona[a][b].nombre<<endl;
    cout<<"Cedula: "<<persona[a][b].cedula<<endl;
    cout<<"Edad: "<<persona[a][b].edad<<endl;

break;
}
}
}
system ("pause");

}

void datosdeventas()
{

mostrarmatriz();
edadpromedio=(edadtotal)/contedad;
cout<<"La edad promedio del vuelo es: "<<edadpromedio<<endl;
    system ("pause");


}

void Modificar(){

int cedula, ced;
     int a,b,resp,u,h;
     system("cls");
     cout<<"Bienvenido al metodo modificar: \n"<<endl;
     cout<<"Ingrese cedula de la persona registrada: ";
     cin>>cedula;
for (a=0; a<6; a++){
for (b=0; b<5; b++){
     if(cedula==persona[a][b].cedula){
                                  do{
                                  system("cls");
                                 
         cout<<"Nombre: " <<persona[a][b].nombre<<endl;
         cout<<"Cedula: "<<persona[a][b].cedula<<endl;
         cout<<"Edad: "<<persona[a][b].edad<<endl;
         cout<<"Esta sentado en el puesto: Fila: "<<a<<"\tColumna: "<<b<<endl;
         

       
      cout<<"_____________________________"<<endl;
     mostrarmatriz();
cout<<"1.-Cambiar de puesto"<<endl;
     cout<<"0-Salir.\n";
     cin>>resp;
     
     
     switch (resp){
            case 1:{
     
                 cout<<"Ingresar nueva fila"<<endl;
  cin>>u;
    cout<<"Ingresar nueva columna"<<endl;
cin>>h;

if(persona[u][h].cedula==0){
persona[u][h].nombre=persona[a][b].nombre;
persona[u][h].cedula=persona[a][b].cedula;
persona[u][h].edad=persona[a][b].edad;
matriz[u][h]=1;
persona[a][b].nombre="";
            persona[a][b].cedula=0;
            persona[a][b].edad=0;
            matriz[a][b]=0;
a=u;
            b=h;
           
                 break;
          }else{
          cout<<"Este puesto esta ocupado"<<endl;
          }
           
           
           
         }
            }
           
            }while (resp!=0);
           cout<<"Los datos han sido modificados satisfactoriamente. ";
    system("PAUSE");
break;   
            }
                               
     }}



    system ("pause");
}



int main(int argc, char *argv[])
{

    int a,b;
int op;
ofstream f;
f.open("Boletosvendidos.txt", ofstream::trunc | ofstream::out);
   
    do
    {
     system("cls");
     cout<<"1.- Comprar Boleto"<<endl;
     cout<<"2.- Buscar asiento de persona por cedula"<<endl;
     cout<<"3.- Ver todos los asientos ocupados de las personas mayores de 60 años"<<endl;
cout<<"4.- Modificar asiento de unas persona"<<endl;
cout<<"5.- Ver promedio de edad"<<endl;
     cout<<"0.- Salir"<<endl;
     
     cin>>op;     
   
    switch (op)
    {
    case 1:
{
         Ingresar();
         break;   
}
case 2:
     {
         pasiento();
         break;
         }
case 3:
{
Mostrarlistam60();
break;
}

case 4:
{
Modificar();
break;
}

case 5:
{
datosdeventas();
break;
}
   
    }                     
                         
    }while(op!=0);
   
    f<<"Todos los asientos ocupados"<<endl;
   
    for(int a=0;a<6;a++)
   
    {
            for(int b=0;b<5;b++)
            {
            if(persona[a][b].cedula!=0){
           
                   
                   
     f<<"\n\nSilla:"<<a<<b<<endl;     
  f<<"Nombre: "<<persona[a][b].nombre<<endl;
    f<<"Cedula: "<<persona[a][b].cedula<<endl;
    f<<"Edad: "<<persona[a][b].edad<<endl;
   
}
   
}

}
   
    f<<"\nTodas los asientos ocupados por personas de 60 años "<<endl;
   
   
    for(int a=0;a<6;a++)
   
    {
            for(int b=0;b<5;b++)
            {
            if(persona[a][b].cedula!=0){
           
                  if(persona[a][b].edad>=60)  {
                 
                   
     f<<"\n\nSilla:"<<a<<b<<endl;     
  f<<"Nombre: "<<persona[a][b].nombre<<endl;
    f<<"Cedula: "<<persona[a][b].cedula<<endl;
    f<<"Edad: "<<persona[a][b].edad<<endl;
}
}
   
}

}
edadpromedio=(edadtotal)/contedad;
f<<"\nPromedio de edad: "<<edadpromedio<<endl;
   
   
   
   
   
    system("PAUSE");
    return EXIT_SUCCESS;
}
[code]
[/code]

Eternal Idol

trunc   truncate   Any contents that existed in the file before it is open are discarded.

Cada vez que abris el archivo su contenido es descartado, no deberias usar trunc al llamar al metodo open. Ahora continua por tu cuenta, revisa tu codigo en busqueda de errores.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

vinceet

#4
Entonces en vez de usar trunc que debo usar. le he hecho de todo y asi me ha quedado

y lo de modificar tampoco encuentro el error o no se como hacerlo

por eso les pido ayuda

ivancea96

#5
Prueba con f.open("Boletosvendidos.txt", ios::app).

ios::out no es necesario ponerlo, puesto que ya viene por defecto al ser ofstream.
ios::app sirve para empezar a escribir en el final del archivo, de lo contrario, empezará a escribir al principio. (Ponlo o no, según lo que busques)
ios::trunc borra el contenido del archivo.

No sabría decirte más, porque leer ese código haría que me duela la cabeza: La identación es horrible xD

EDITO: tras leer el main (gracias VisualStudio que lo identa), vi que a lo mejor sí que quieres que truncar el archivo con ios:.trunc.

vinceet

lo de trunc ya lo vi pero como hago para modificar

eferion

Lo más sencillo es leer la totalidad del fichero en memoria, creando una colección de instancias de "alumno" en el proceso, después modificas esta colección a placer y por último sobreescribes el fichero, borrando todo lo anterior y guardando lo que tienes actualmente en memoria.

vinceet

si mer pusieran un codigo podria enterder mejor soy principiante