PI-ITBA / 2024_01

8 stars 0 forks source link

Rec 2020 ej 1 #358

Closed JuaniRaggio closed 3 months ago

JuaniRaggio commented 3 months ago

Propuse una solucion para el siguiente ejercicio pero no se si esta bien: Se tiene una cadena que contiene números decimales separados por coma. Se requiere implementar la función void normalizar que reciba como único parámetro un string y lo normalice dejando todos los números con los decimales truncados a 2. Se asegura que el string está bien formado:

Ejemplos si el string original es "12.33333,23.44444,1.0054,5.003,7.0" queda "12.33,23.44,1.00,5.00,7.0" si el string original es "12.33,3.4,1.00,5.0,7.1" queda igual


#include <ctype.h>

void tillComa(char * s, int actual){
    int i = actual, copiados = 0, coma = 0;
    while(s[actual] != '\0'){
        if(s[actual] == ','){
            coma = 1;
        }
        if(coma || copiados < 2){
            s[i++] = s[actual++];
            copiados++;
        } else if(copiados >= 2){
            ++actual;
        }
    }
    s[i] = '\0';
}

void normalizar(char * s){
    int i = 0, j = 0, punto = 0;
    while(s[i] != '\0'){
        if(punto){
            tillComa(s, i);
            ++i;
        } else if(isdigit(s[i]) || s[i] == ','){
            s[j++] = s[i];
        } else if(s[i] == '.'){
            s[j++] = s[i];
            punto = 1;
        }
        ++i;
    }
s[j] = '\0'
}
ImNotGone commented 3 months ago

no deberia funcionar, porque no mantenes correctamente j.