Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: vinceet en 24 Octubre 2014, 01:10 am



Título: Tengo que hacer un programa de una areolinea
Publicado por: vinceet en 24 Octubre 2014, 01:10 am
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


Título: Re: Tengo que hacer un programa de una areolinea
Publicado por: daryo en 24 Octubre 2014, 01:29 am
pon el codigo dentro de las etiqueta
Código:
[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]


Título: Re: Tengo que hacer un programa de una areolinea
Publicado por: vinceet en 24 Octubre 2014, 02:21 am
hay algunas incoherencia como alumnos solo que me copie de uno q habia echo

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <fstream>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. int contedad=0;
  9. int edadtotal,edadpromedio;
  10.  
  11.  
  12. struct alumno
  13. {
  14.       string nombre;
  15.       int cedula;
  16.       int edad;
  17.       };
  18.  
  19. alumno persona[6][5];
  20.  
  21. int matriz [6][5],i,j;
  22. char resp;
  23.  
  24. void mostrarmatriz(){
  25.  for(int i=0;i<6;i++)
  26.  {
  27. for(int j=0;j<5;j++)
  28. {
  29. printf(" %i",matriz[i][j]);
  30. }
  31. printf("\n");
  32. }
  33. cout<<"\n"<<endl;
  34. }
  35.  
  36.  
  37.  
  38. void Ingresar()
  39. { int opcion,a,b,ced=0;
  40.  
  41.  
  42.  mostrarmatriz();
  43.  
  44.  
  45.  cout<<"Ingresar Fila"<<endl;
  46.  cin>>a;
  47.    cout<<"Ingresar Columna"<<endl;
  48. cin>>b;
  49.  
  50. if(persona[a][b].cedula==0){
  51.  
  52.  
  53.  
  54.  cout<<"Ingresar Nombre"<<endl;
  55.  cin>>persona[a][b].nombre;
  56.   cout<<"Ingresar cedula"<<endl;
  57. cin>>ced;
  58.  
  59.  
  60. for (int u=0; u<6; u++){
  61.         for (int h=0;h<5;h++){
  62.  
  63. if(persona[u][h].cedula==ced){
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. cout<<"Ingrese una cedula que no este registrada: ";
  71. cin>>ced;
  72.  
  73.  
  74. }}}
  75. persona[a][b].cedula=ced;
  76.   cout<<"Ingresar edad"<<endl;
  77.   cin>>persona[a][b].edad;
  78.   i=a;
  79.   j=b;
  80.   matriz[i][j]=1;
  81.   edadtotal=persona[a][b].edad+edadtotal;
  82.   contedad++;
  83. system ("pause");
  84. }else{
  85. cout<<"El asiento ya esta ocupado"<<endl;
  86. system ("pause");
  87. }
  88.  
  89.  
  90. }
  91.  
  92. void Mostrarlistam60()
  93. {
  94.  
  95. mostrarmatriz();
  96.    for(int a=0;a<6;a++)
  97.  
  98.    {
  99.            for(int b=0;b<5;b++)
  100.            {
  101.                    if((persona[a][b].cedula>0) && (persona[a][b].edad>=60)){
  102.  
  103.     cout<<"\n\nSilla:"<<"Fila: "<<a<<", Columna: "<<b<<endl;      
  104.  cout<<"Nombre: "<<persona[a][b].nombre<<endl;
  105.    cout<<"Cedula: "<<persona[a][b].cedula<<endl;
  106.    cout<<"Edad: "<<persona[a][b].edad<<endl;
  107.  
  108.    system ("pause");
  109.  
  110.  
  111. }
  112.  
  113. }
  114. }
  115. }
  116.  
  117. void pasiento(){
  118.  
  119. int ced;
  120. cout<<"Bienvenido al metodo mostrar: "<<endl;
  121. cout<<"Ingrese cedula de la persona registrada: ";
  122. cin>>ced;
  123. for (int a=0;a<6; a++ ){
  124. for (int b=0;b<5;b++){
  125.  
  126.  
  127. if(persona[a][b].cedula==ced)
  128. {
  129.    cout<<"Silla:"<<a<<b<<endl;      
  130.  cout<<"Nombre: "<<persona[a][b].nombre<<endl;
  131.    cout<<"Cedula: "<<persona[a][b].cedula<<endl;
  132.    cout<<"Edad: "<<persona[a][b].edad<<endl;
  133.  
  134. break;
  135. }
  136. }
  137. }
  138. system ("pause");
  139.  
  140. }
  141.  
  142. void datosdeventas()
  143. {
  144.  
  145. mostrarmatriz();
  146. edadpromedio=(edadtotal)/contedad;
  147. cout<<"La edad promedio del vuelo es: "<<edadpromedio<<endl;
  148.    system ("pause");
  149.  
  150.  
  151. }
  152.  
  153. void Modificar(){
  154.  
  155. int cedula, ced;
  156.     int a,b,resp,u,h;
  157.     system("cls");
  158.     cout<<"Bienvenido al metodo modificar: \n"<<endl;
  159.     cout<<"Ingrese cedula de la persona registrada: ";
  160.     cin>>cedula;
  161. for (a=0; a<6; a++){
  162. for (b=0; b<5; b++){
  163.     if(cedula==persona[a][b].cedula){
  164.                                  do{
  165.                                  system("cls");
  166.  
  167.         cout<<"Nombre: " <<persona[a][b].nombre<<endl;
  168.         cout<<"Cedula: "<<persona[a][b].cedula<<endl;
  169.         cout<<"Edad: "<<persona[a][b].edad<<endl;
  170.         cout<<"Esta sentado en el puesto: Fila: "<<a<<"\tColumna: "<<b<<endl;
  171.  
  172.  
  173.  
  174.      cout<<"_____________________________"<<endl;
  175.     mostrarmatriz();
  176. cout<<"1.-Cambiar de puesto"<<endl;
  177.     cout<<"0-Salir.\n";
  178.     cin>>resp;
  179.  
  180.  
  181.     switch (resp){
  182.            case 1:{
  183.  
  184.                 cout<<"Ingresar nueva fila"<<endl;
  185.  cin>>u;
  186.    cout<<"Ingresar nueva columna"<<endl;
  187. cin>>h;
  188.  
  189. if(persona[u][h].cedula==0){
  190. persona[u][h].nombre=persona[a][b].nombre;
  191. persona[u][h].cedula=persona[a][b].cedula;
  192. persona[u][h].edad=persona[a][b].edad;
  193. matriz[u][h]=1;
  194. persona[a][b].nombre="";
  195.            persona[a][b].cedula=0;
  196.            persona[a][b].edad=0;
  197.            matriz[a][b]=0;
  198. a=u;
  199.            b=h;
  200.  
  201.                 break;
  202.          }else{
  203.           cout<<"Este puesto esta ocupado"<<endl;
  204.          }
  205.  
  206.  
  207.  
  208.         }
  209.            }
  210.  
  211.            }while (resp!=0);
  212.           cout<<"Los datos han sido modificados satisfactoriamente. ";
  213.    system("PAUSE");
  214. break;  
  215.            }
  216.  
  217.     }}
  218.  
  219.  
  220.  
  221.    system ("pause");
  222. }
  223.  
  224.  
  225.  
  226. int main(int argc, char *argv[])
  227. {
  228.  
  229.    int a,b;
  230. int op;
  231. ofstream f;
  232. f.open("Boletosvendidos.txt", ofstream::trunc | ofstream::out);
  233.  
  234.    do
  235.    {
  236.     system("cls");
  237.     cout<<"1.- Comprar Boleto"<<endl;
  238.     cout<<"2.- Buscar asiento de persona por cedula"<<endl;
  239.     cout<<"3.- Ver todos los asientos ocupados de las personas mayores de 60 años"<<endl;
  240. cout<<"4.- Modificar asiento de unas persona"<<endl;
  241. cout<<"5.- Ver promedio de edad"<<endl;
  242.     cout<<"0.- Salir"<<endl;
  243.  
  244.     cin>>op;      
  245.  
  246.    switch (op)
  247.    {
  248.    case 1:
  249. {
  250.         Ingresar();
  251.         break;    
  252. }
  253. case 2:
  254.     {
  255.         pasiento();
  256.         break;
  257.         }
  258. case 3:
  259. {
  260. Mostrarlistam60();
  261. break;
  262. }
  263.  
  264. case 4:
  265. {
  266. Modificar();
  267. break;
  268. }
  269.  
  270. case 5:
  271. {
  272. datosdeventas();
  273. break;
  274. }
  275.  
  276.    }                      
  277.  
  278.    }while(op!=0);
  279.  
  280.    f<<"Todos los asientos ocupados"<<endl;
  281.  
  282.    for(int a=0;a<6;a++)
  283.  
  284.    {
  285.            for(int b=0;b<5;b++)
  286.            {
  287.             if(persona[a][b].cedula!=0){
  288.  
  289.  
  290.  
  291.     f<<"\n\nSilla:"<<a<<b<<endl;      
  292.  f<<"Nombre: "<<persona[a][b].nombre<<endl;
  293.    f<<"Cedula: "<<persona[a][b].cedula<<endl;
  294.    f<<"Edad: "<<persona[a][b].edad<<endl;
  295.  
  296. }
  297.  
  298. }
  299.  
  300. }
  301.  
  302.    f<<"\nTodas los asientos ocupados por personas de 60 años "<<endl;
  303.  
  304.  
  305.    for(int a=0;a<6;a++)
  306.  
  307.    {
  308.            for(int b=0;b<5;b++)
  309.            {
  310.             if(persona[a][b].cedula!=0){
  311.  
  312.                  if(persona[a][b].edad>=60)  {
  313.  
  314.  
  315.     f<<"\n\nSilla:"<<a<<b<<endl;      
  316.  f<<"Nombre: "<<persona[a][b].nombre<<endl;
  317.    f<<"Cedula: "<<persona[a][b].cedula<<endl;
  318.    f<<"Edad: "<<persona[a][b].edad<<endl;
  319. }
  320. }
  321.  
  322. }
  323.  
  324. }
  325. edadpromedio=(edadtotal)/contedad;
  326. f<<"\nPromedio de edad: "<<edadpromedio<<endl;
  327.  
  328.  
  329.  
  330.  
  331.  
  332.    system("PAUSE");
  333.    return EXIT_SUCCESS;
  334. }
  335. [code]
[/code]


Título: Re: Tengo que hacer un programa de una areolinea
Publicado por: Eternal Idol en 24 Octubre 2014, 09:30 am
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.


Título: Re: Tengo que hacer un programa de una areolinea
Publicado por: vinceet en 24 Octubre 2014, 14:40 pm
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


Título: Re: Tengo que hacer un programa de una areolinea
Publicado por: ivancea96 en 26 Octubre 2014, 01:18 am
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.


Título: Re: Tengo que hacer un programa de una areolinea
Publicado por: vinceet en 26 Octubre 2014, 23:01 pm
lo de trunc ya lo vi pero como hago para modificar


Título: Re: Tengo que hacer un programa de una areolinea
Publicado por: eferion en 27 Octubre 2014, 11:46 am
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.


Título: Re: Tengo que hacer un programa de una areolinea
Publicado por: vinceet en 27 Octubre 2014, 18:46 pm
si mer pusieran un codigo podria enterder mejor soy principiante