Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Determinar valores de un archivo

Estas en el tema de Determinar valores de un archivo en el foro de C/C++ en Foros del Web. Hola, tengo un problema con una práctica y no entiendo por qué no me sale. Me pide hacer un programa que determine si todos los ...
  #1 (permalink)  
Antiguo 26/11/2012, 13:35
 
Fecha de Ingreso: junio-2008
Mensajes: 22
Antigüedad: 15 años, 9 meses
Puntos: 0
Determinar valores de un archivo

Hola, tengo un problema con una práctica y no entiendo por qué no me sale. Me pide hacer un programa que determine si todos los valores enteros de un fichero de texto, no vacío, son iguales entre sí o no, escribiendo el mensaje correspondiente a cada caso.

De momento tengo esto:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. void main() {
  4.    
  5.     int num, numAnt, enc = 0;
  6.    
  7.     FILE *archivo;
  8.     archivo = fopen("entrada.txt", "r");
  9.    
  10.     fscanf(archivo, "%d", &num);
  11.    
  12.     numAnt = num;
  13.    
  14.     while(!EOF) {
  15.        
  16.         if(numAnt == num) {
  17.            
  18.             numAnt = num;
  19.             fscanf(archivo, "%d", &num);
  20.             enc = 0;
  21.            
  22.         } else {
  23.            
  24.             enc = 1;
  25.            
  26.         }
  27.        
  28.     }
  29.    
  30.     if(enc == 1) printf("Hay numeros diferentes.");
  31.     else printf("Todos son iguales.");
  32.    
  33.     fclose(archivo);
  34. }

Y llevo así ~30 y sigo igual.

Gracias.
  #2 (permalink)  
Antiguo 26/11/2012, 14:42
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: Determinar valores de un archivo

Cita:
while(!EOF)
que quisiste hacer aca???


SAludos
  #3 (permalink)  
Antiguo 26/11/2012, 15:53
 
Fecha de Ingreso: junio-2008
Mensajes: 22
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Determinar valores de un archivo

Que se repita el bucle hasta que lea el último caracter del fichero.
  #4 (permalink)  
Antiguo 26/11/2012, 16:04
Avatar de ZeKi  
Fecha de Ingreso: noviembre-2012
Ubicación: Jaén
Mensajes: 61
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Determinar valores de un archivo

Código C++:
Ver original
  1. while (!archivo.EOF())

PD: Por cuestiones de eficiencia, en el primer elemento que encuentres distinto puedes salirte directamente de la función indicando ya que hay número diferentes, no tienes porqué seguir comparando los elementos restantes.
  #5 (permalink)  
Antiguo 26/11/2012, 16:19
 
Fecha de Ingreso: junio-2008
Mensajes: 22
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Determinar valores de un archivo

Lo que me falla es el bucle. Lo que quiero es que en un archivo tengo por ejemplo: 5 5 5 5 5. Quiero que vaya uno por uno hasta detectar si cambia. Si no cambia poner que todos son iguales. En caso de que sea 5 5 4 5 poner que no todos son iguales.

Código C:
Ver original
  1. while(enc == 0) {      
  2.        
  3.         fscanf(archivo, "%d", &num);
  4.        
  5.         if(num != numAnt) enc = 1;
  6.        
  7.     }
  #6 (permalink)  
Antiguo 26/11/2012, 16:22
Avatar de ZeKi  
Fecha de Ingreso: noviembre-2012
Ubicación: Jaén
Mensajes: 61
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Determinar valores de un archivo

Cita:
Iniciado por Alvaro_SG Ver Mensaje
Lo que me falla es el bucle. Lo que quiero es que en un archivo tengo por ejemplo: 5 5 5 5 5. Quiero que vaya uno por uno hasta detectar si cambia. Si no cambia poner que todos son iguales. En caso de que sea 5 5 4 5 poner que no todos son iguales.

Código C:
Ver original
  1. while(enc == 0) {      
  2.        
  3.         fscanf(archivo, "%d", &num);
  4.        
  5.         if(num != numAnt) enc = 1;
  6.        
  7.     }
Claro que falla, no le indicas que cuando llegue al final del fichero pare. Tienes que ponerle la condición como te he indicado más arriba.
  #7 (permalink)  
Antiguo 26/11/2012, 16:24
 
Fecha de Ingreso: junio-2008
Mensajes: 22
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Determinar valores de un archivo

Cita:
Iniciado por ZeKi Ver Mensaje
Claro que falla, no le indicas que cuando llegue al final del fichero pare. Tienes que ponerle la condición como te he indicado más arriba.
Ya lo he probado antes y me da error al compilar.
  #8 (permalink)  
Antiguo 26/11/2012, 16:26
Avatar de ZeKi  
Fecha de Ingreso: noviembre-2012
Ubicación: Jaén
Mensajes: 61
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Determinar valores de un archivo

Agrega la librería <fstream>

PD: Si lees lo que te devuelve el compilador podrás encontrar la solución a tus problemas.
  #9 (permalink)  
Antiguo 26/11/2012, 16:30
 
Fecha de Ingreso: junio-2008
Mensajes: 22
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Determinar valores de un archivo

Cita:
Iniciado por ZeKi Ver Mensaje
Agrega la librería <fstream>

PD: Si lees lo que te devuelve el compilador podrás encontrar la solución a tus problemas.
Estoy en C, no en C++.
  #10 (permalink)  
Antiguo 26/11/2012, 16:35
Avatar de ZeKi  
Fecha de Ingreso: noviembre-2012
Ubicación: Jaén
Mensajes: 61
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Determinar valores de un archivo

Perdón, error mío.

Código C:
Ver original
  1. while(!feof(archivo))
  #11 (permalink)  
Antiguo 26/11/2012, 17:52
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: Determinar valores de un archivo

Cita:
while(!feof(archivo))
ahora si

Etiquetas: determinar, fichero, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:19.