Ver Mensaje Individual
  #5 (permalink)  
Antiguo 02/07/2011, 11:19
v1siond
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: problema con archivos en C

los datos se guardan bien, ya que revizo el .txt que se crea y ahí están, pero a la hora de mostrarlo por pantalla es que no va.

Modifiqué nuevamente el programa y ahora muestra los resultados, pero sólo losdel momento.

estuve analizando el programa, y si la encuesta se realiza si y solo si el usuario está registrado, eso significa que sólo se realizaría la encuesta una vez, y esos resultados se guardarían en el archivo hasta que llegara a 200.

El problema es que los resultados que me muestra son los de la sesión, es decir si hubo un voto sólo se muestra ese voto.

¿Cómo haría para poder mostrar TODOS los resultados guardados en el archivo encuesta?
Código C:
Ver original
  1. /* el cne a definido conjuntamente con el ine mediante el censo 2011 un total
  2.    de 200 votantes. Se debe realizar un registro de los mismos mediante:
  3.    cedula, nombre, apellido y edad; una vez efectuado el registro se debe llamar
  4.    a un proceso de consulta mediante la siguiente pregunta
  5.    ¿es factible, económicamente hablando, la integración de Venezuela al mercosur?* 1.-Si 2.-No.
  6.    El registro debe efectuarse mediante archivos y la consulta se realizará si y sólo si
  7.    la persona se encuentra registrada en el archivo; al final del sistema se debe crear un reporte
  8.    con los resultados de la consulta.*/
  9.    
  10.    #include <stdio.h>
  11.    #include <iostream>
  12.    #include <conio.h>
  13.    #define max 200
  14.    
  15.    void registrarpersona();
  16.    void lista();
  17.    void resultado();
  18.    void encuesta();
  19.    
  20.     int main ()
  21.     {
  22.         int opcion = 0;
  23.    
  24.         for(;;)
  25.         {
  26.             lista();
  27.             opcion = getch();
  28.             switch (opcion)
  29.             {
  30.                    case '1': registrarpersona();
  31.                              break;
  32.                    case '2': encuesta();
  33.                              break;
  34.                    case '3': exit(0);
  35.             }
  36.         }
  37.    
  38.         system ("PAUSE");
  39.     }
  40.    
  41.     void registrarpersona()
  42.     {
  43.           int edad, acumulador =0;
  44.           char nombre[20], apellido[20], cedula[20];
  45.          
  46.      
  47.           FILE *persona;
  48.      
  49.           printf ("\n            .::Introduzca los datos del votante en estricto orden::.\n");
  50.           printf ("\n               .::Si desea salir del registro presione ctrl + Z::.\n");
  51.                  printf ("\ncedula ----- nombre ----- apellido ----- edad\n");
  52.                         scanf ("%s %s %s %d", cedula, nombre, apellido, &edad);
  53.                         if(edad < 18)
  54.                         {
  55.                                 printf ("\nDebe tener 18 años para poder votar\n");
  56.                         }
  57.                         else
  58.                         {    
  59.                               if ((persona=fopen("persona.txt", "a+")) == NULL)
  60.                               {
  61.                                                 printf ("\nError al abrir el archivo\n");
  62.                               }
  63.                               else
  64.                               {
  65.                                                 while (!feof(stdin))
  66.                                                 {
  67.                                                       fprintf (persona, "%s %s %s %d\n", cedula, nombre, apellido, edad);
  68.                                                       scanf ("%s %s %s %d",cedula ,nombre, apellido, &edad);
  69.                                                       acumulador++;
  70.                                                       if (acumulador == 200)
  71.                                                       {
  72.                                                                      break;
  73.                                                       }
  74.                                                 }
  75.                                                 fclose(persona);
  76.                               }
  77.                         }
  78.       }
  79.      
  80.       void encuesta()
  81.       {
  82.            int edad, n=0;
  83.            char cedulados[20],i;
  84.            char cedula[20], nombre[20], apellido[20];
  85.            int si=0, no=0, j=0;
  86.            int respuesta = 0;
  87.            FILE*persona;
  88.            FILE*encuesta;
  89.      
  90.            printf ("\nIntroduzca la cedula del votante\n");
  91.            scanf ("%s",cedulados);
  92.            if ((persona=fopen("persona.txt", "r+")) == NULL)
  93.            {
  94.                                         printf ("\nError al abrir el archivo\n");
  95.                                        
  96.            }
  97.            else
  98.            {
  99.                while(!feof(persona))
  100.                {
  101.                                     fscanf(persona,"%s %s %s %d",&cedula ,&nombre, &apellido, &edad);
  102.                                     n = strcmp(cedula,cedulados);
  103.                                     if (n==0)
  104.                                     {    
  105.                                              for (i=0; i<1; i++)
  106.                                              {
  107.                                                        printf ("\n¿Es factible, economicamente hablando, la integracion de Venezuela al mercosur?* 1.-Si 2.-No\n");
  108.                                                        scanf ("%d", &respuesta);
  109.                                                        if (respuesta == 1)
  110.                                                        {
  111.                                                                       si++;
  112.                                                        }
  113.                                                        else
  114.                                                        {
  115.                                                            if(respuesta == 2)
  116.                                                            {
  117.                                                                     no++;
  118.                                                            }
  119.                                                            else
  120.                                                            {
  121.                                                                     printf ("\nError, debe seleccionar unicamente las opciones -1- o -2-\n");
  122.                                                            }
  123.                                                        }
  124.                                              }
  125.                                              break;
  126.                                      }
  127.                }
  128.                 if (n!=0)
  129.                 {
  130.                 printf ("\nUsted no esta registrado como votante, por lo tanto no puede ver los resultados\n");
  131.                 printf ("\nSi desea realizar la encuesta debe registrarse como votante, seleccionando la opcion 1 del menu\n\n");
  132.                 }                  
  133.                                      if ((encuesta=fopen("encuesta.txt", "a+")) == NULL)
  134.                                      {
  135.                                                                          printf ("\nError al abrir el archivo\n");
  136.                                      }
  137.                                      else
  138.                                      {
  139.                                          for(i=0; i<1; i++)
  140.                                          {
  141.                                                   fprintf (encuesta, "                            .::Resultado::.\n\n");
  142.                                                   fprintf (encuesta, "Si -> %d ---- No -> %d\n\n", si, no);
  143.                                          }
  144.                                          fclose(encuesta);
  145.                                      }
  146.                                      
  147.                                      
  148.              }  
  149.                                             if ((encuesta=fopen("encuesta.txt", "r+")) == NULL)
  150.                                             {
  151.                                                                                 printf ("\nError al abrir el archivo\n");
  152.                                             }
  153.                                             else
  154.                                             {
  155.                                                 while (!feof(encuesta))
  156.                                                 {
  157.                                                       printf ("\n                              .::Resultado::.\n\n");
  158.                                                       fscanf(encuesta,"%d %d", &si, &no);
  159.                                                       printf  ("%d - %d", si, no);
  160.                                                       fscanf(encuesta,"%d %d", &si, &no);
  161.                                                       printf ("\n\n");
  162.                                                 }
  163.                                                 fclose(encuesta);
  164.                                             }
  165.                             printf ("\n\n");
  166.       }          
  167.       void lista()
  168.       {
  169.            printf("\n                         .::Sistema de Encuesta::.\n");
  170.            printf ("1.-Registrar Votante\n");
  171.            printf ("2.-Encuesta\n");
  172.            printf ("3.-salir\n");
  173.            printf ("\n\n");
  174.       }

En la parte de la función "encuesta" la razón por la que uso en el for i<2 en vez de i<max, es debido a que es un programa de prueba, no vale la pena guardar 200 respuestas o 200 usuarios si el programa no está perfectamente funcional.

Última edición por v1siond; 03/07/2011 a las 13:33