elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  CICLO INFINITO
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: CICLO INFINITO  (Leído 2,485 veces)
cristianscarafia

Desconectado Desconectado

Mensajes: 1


Ver Perfil
CICLO INFINITO
« en: 25 Septiembre 2021, 01:16 am »

Buenas, no estaria detectando por que este programa me genera un ciclo infinito, desde ya muchas gracias.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define CODDEPO 6
  5. #define NOMDEPO 15
  6.  
  7. typedef struct{
  8.    char coddepor[CODDEPO];
  9.    unsigned int tiempo;
  10. }competencia;
  11. typedef struct{
  12.    char coddepor[CODDEPO];
  13.    char nomdepor[NOMDEPO];
  14.    unsigned int tiempo;
  15. }record;
  16.  
  17. void cargador();
  18. void cargatabla(record tablarec[],int *n);
  19. void procesa();
  20. int buscaindice(record tablarec[],int n,char depor_act[]);
  21.  
  22. int main()
  23. {
  24.    record tablarec[20];
  25.    int n;
  26.    cargador();
  27.    cargatabla(tablarec,&n);
  28.    procesa(tablarec,n);
  29.    return 0;
  30. }
  31. void cargador(){
  32.  
  33.    competencia compe;
  34.    record rec;
  35.  
  36.    FILE *competiciontxt, *competicionbin;
  37.    FILE *recordstxt,*recordsbin;
  38.  
  39.    competiciontxt = fopen("competicion.txt","r");
  40.    competicionbin = fopen("competicion.dat","wb");
  41.    recordstxt = fopen("records.txt","r");
  42.    recordsbin = fopen("records.dat","wb");
  43.  
  44.    if(competiciontxt == NULL){
  45.        printf("El archivo competicion no existe.");
  46.    }else{
  47.        while(fscanf(competiciontxt,"%s %d",compe.coddepor,&compe.tiempo) == 2){
  48.            fwrite(&compe,sizeof(competencia),1,competicionbin);
  49.        }
  50.        fclose(competicionbin);
  51.        fclose(competiciontxt);
  52.    }
  53.    if(recordstxt == NULL){
  54.        printf("El archivo records no existe.");
  55.    }else{
  56.        while(fscanf(recordstxt,"%s %s %d",rec.coddepor,rec.nomdepor,&rec.tiempo) == 3){
  57.            fwrite(&rec,sizeof(record),1,recordsbin);
  58.  
  59.        }
  60.        fclose(recordsbin);
  61.        fclose(recordstxt);
  62.    }
  63. }
  64. void cargatabla(record tablarec[],int *n){
  65.    FILE *arch;
  66.    arch = fopen ("records.dat","rb");
  67.    (*n) = 0;
  68.    if (arch == NULL){
  69.        printf("Ocurrio un error con la lectura del archivo records.dat");
  70.    }else{
  71.        fread(&tablarec[*n],sizeof(record),1,arch);
  72.        while(!feof(arch)){
  73.            (*n)++;
  74.            fread(&tablarec[*n],sizeof(record),1,arch);
  75.        }
  76.        fclose(arch);
  77.    }
  78. }
  79. void procesa(record tablarec[],int n){
  80.    competencia compe;
  81.    int cant_comp,cant_sup,sum_t,indice;
  82.    float t_prom;
  83.    char depor_act[CODDEPO];
  84.    FILE *competicion;
  85.  
  86.    competicion = fopen("competicion.dat","rb");
  87.  
  88.    if (competicion == NULL){
  89.        printf("Ocurrio un error con la lectura del archivo competicion.");
  90.    }else{
  91.        printf("DEPORTE \t CANT.COMPETIDORES \t CANT. SUPERO EL RECORD \t TIEMPO PROMEDIO \n");
  92.        fread(&compe,sizeof(competencia),1,competicion);
  93.        while(!feof(competicion)){
  94.            cant_comp=0;
  95.            cant_sup=0;
  96.            t_prom=0;
  97.            sum_t=0;
  98.            strcpy(depor_act,compe.coddepor);
  99.            indice = buscaindice(tablarec,n,depor_act);
  100.            while(!feof(competicion) && !strcmp(depor_act,compe.coddepor) ){
  101.                if (compe.tiempo > tablarec[indice].tiempo){
  102.                    cant_sup++;
  103.                }
  104.                sum_t+=compe.tiempo;
  105.                cant_comp++;
  106.                fread(&compe,sizeof(competencia),1,competicion);
  107.            }
  108.            t_prom=(sum_t/(float)cant_comp);
  109.            printf("%s \t %d \t %d \t %5.2f \n",depor_act,cant_comp,cant_sup,t_prom);
  110.        }
  111.        fclose(competicion);
  112.    }
  113. }
  114. int buscaindice(record tablarec[],int n,char depor_act[]){
  115.    int i,indice;
  116.    indice=0;
  117.  
  118.    for (i=0;i<n;i++){
  119.        if(strcpy(depor_act,tablarec[i].coddepor)){
  120.            indice=i;
  121.        }
  122.    }
  123.    return indice;
  124. }


ARCHIVO TXT COMPETICION:
Código:
bicic 5
bicic 7
bicic 6
bicic 5
carre 10
carre 15
carre 9
carre 16
carre 12
natac 10
natac 16
natac 20
natac 5
patin 4
patin 7
patin 6
patin 8

ARCHIVO TXT RECORDS
Código:
carre Carrera 10
patin Patin 4
bicic Bicicleta 7
natac Natacion 18


MOD: El código debe ir entre etiquetas de Código GeSHi


« Última modificación: 27 Septiembre 2021, 13:47 pm por K-YreX » En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.460


Hackentifiko!


Ver Perfil
Re: CICLO INFINITO
« Respuesta #1 en: 25 Septiembre 2021, 01:59 am »

¿No puedes decir en qué ciclo se da el infinito?


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: CICLO INFINITO
« Respuesta #2 en: 25 Septiembre 2021, 11:07 am »

En buscaindice en vez de ser strcpy ¿no debería ser strcmp?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
while infinito... « 1 2 »
Programación C/C++
javahat 11 6,204 Último mensaje 25 Mayo 2010, 07:16 am
por bizco
API SetTimer sin ventana con un ciclo infinito
ASM
YagamiIori2002 2 3,662 Último mensaje 15 Octubre 2011, 16:30 pm
por Eternal Idol
[Solucionado] Problema en ciclo infinito
Programación C/C++
Mario Olivera 5 2,824 Último mensaje 26 Julio 2014, 05:10 am
por leosansan
Ciclo Do While anidado que no coge al ciclo interior
Programación Visual Basic
Baldomero123 1 7,083 Último mensaje 4 Enero 2018, 14:19 pm
por Baldomero123
error, bucle infinito, alguien que me ayude a evitar el bucle infinito
Programación C/C++
marcos0204 4 2,899 Último mensaje 27 Marzo 2020, 22:44 pm
por fary
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines