[C con Clase] Help

Daniel Campos campim en gmail.com
Mar Feb 18 05:53:21 CET 2014


Querida Anita :

muy bien por intentarlo!!!!! creo que puedo ayudarte. Te muestro algunos
errores en tu código :


#include<stdio.h>
#include<string.h>

int main(){
char nombre[60];
int puntos,i;
int puntosTemp=0;
char nombreTemp[60];
int lon;
FILE *archivo=fopen("C:/Users/juan 1/Desktop/registro.txt","r");
FILE *puntuaciones=fopen("C:/Users/juan 1/Desktop/puntuaciones.txt","w");
while(!feof(archivo)){
fscanf(archivo,"%s %i",nombre,&puntos);
* while*
* if(puntosTemp>puntos*){
<-------------------------------- while if no te va a compilar, te va a dar
error, si querés usar while es una cosa, if es otra
<-------------------------------- puntosTemp es cero , por lo que es muy
dificil que sea mayor a algún numero que leas del registro.txt (salvo que
lo que leas sea negativo)

* fprintf(puntuaciones,"%s %i",nombreTemp,&puntosTemp);*
<-------------------------------- &puntosTemp no va como referencia, queres
escribir la dirección de memoria de puntosTemp en puntuaciones, en vez de
los valores que leiste????? no lo creo....
}
else{
fprintf(puntuaciones,"%s %i",nombreTemp,&puntosTemp);
}
puntosTemp=puntos;
lon=strlen(nombre);
for(i=0;i<lon;i++){
nombreTemp[i]=nombre[i];
}
}
fclose(archivo);
fclose(puntuaciones);
}

aca te presento un método de ordenamiento simple, se llama burbuja, es el
más simple. Obviamente en este ejemplo lo que acotado a cinco registros. de
hecho te paso el archivo registro.txt para que lo uses. el archivo
puntuaciones es el resultado del ordenamiento.

Espero te sirva!!!!

#include<stdio.h>

int main(){
    int LIMITE = 5;
char nombre[LIMITE][60];
char AUX[60];
int puntos[LIMITE],i = 0, j = 0, temp = 0;

FILE *archivo=fopen("registro.txt","r");
FILE *puntuaciones=fopen("puntuaciones.txt","w");

/* aca te muestro lo que lei del archivo registro.txt , no es necesario
hacer esto pero lo hice como para que t sirva */
    for (i=0; i<LIMITE;i++)
    {
  fscanf(archivo,"%s %i",nombre[i],&puntos[i]);

printf("nombre leido:%s\n", nombre[i]);
printf("puntos :     %i\n", puntos[i]);

    }

    /* Metodo de la burbuja simple. ordenado de menor a mayor*/
    for (i=0; i<LIMITE; i++) {
        for (j=0 ; j<LIMITE - 1; j++) {
            if (puntos[j] > puntos[j+1]) {
                temp = puntos[j];
                strcpy(AUX, nombre[j]);
                puntos[j] = puntos[j+1];
                strcpy(nombre[j], nombre[j+1]);
                puntos[j+1] = temp;
                strcpy(nombre[j+1], AUX);
            }
        }
    }

/* aca es donde guardo el resultado ordenado en el archivo puntuaciones */

     for (i=0; i<LIMITE;i++)
    {
        fprintf(puntuaciones, "%s %i\n", nombre[i], puntos[i]);
    }


fclose(archivo);
fclose(puntuaciones);
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140218/ff60cc30/attachment.html>
------------ próxima parte ------------
daniel 3 
pedro  2 
juan   1
maximo 30
julian 31 
------------ próxima parte ------------
daniel 3 
pedro  2 
juan   1
maximo 30
julian 31 


Más información sobre la lista de distribución Cconclase