segunda-feira, 10 de outubro de 2022

Como fazer algo de forma errada, e aprendendo a certo

Algum tempo atrás eu vi um código muito errado, mas muito errado mesmo, e de muitas formas diferentes, que me deixou chocado.

Não vou colocar o código original aqui, mas vou refazer usando o mesmo algoritmo usando outra situação.

Situação nova: Em alguns países o ponto é usado para separar as decimais e a vírgula é usada a cada 3 casas não decimais, mas em outros, como o Brasil, é ao contrário.

Por exemplo, nos EUA a velocidade da luz seria escrita como 1,079,252,848.8 Km/h (Eu sei, eles não usam Km/h, e sim aquela medida obsoleta de milhas por hora.), e no Brasil este número seria representado assim: 1.079.252.848,8 Km/h.

E no caso seria necessária uma função que fizesse esta troca e colocasse o "c = " na frente. A função seria escrita deste modo abaixo com o algoritmo que vi:

void Troca( char *texto )
{
    char temp[50] = "c = " ;
    int i ;

    for( i = 0 ; i < 50 ; i++ )
        if( texto[i] == ',')
            texto[i] = '.' ;
        else if( texto[i] == '.')
            texto[i] = ',' ;
 
    strcat(temp,texto) ;
    strcpy(texto,temp) ;
}

Agora analise o código. Veja quantos erros tem nele. Imagine as consequências destes erros. Imagine como resolvê-los. Depois continue a ler.