Se supone que mi código acepta un valor para el tamaño de la matriz y los valores de los usuarios y luego promedia las celdas que están arriba y a la izquierda de la celda [i] [j] incluida y la coloca en la [i] [ j] en la matriz summatrix. Este código compila y acepta un valor n y valores en consecuencia, pero imprime ceros. Verifiqué si los valores se están insertando en la matriz de entrada cambiando la matriz en printf de summatrix a input y también obtengo ceros. ¿Es esto un problema para obtener los valores de la matriz de entrada?

Así que edité el código para que en lugar de% .2lf sea% .2f y todo funcione, una búsqueda en Google me mostró que $ lf hace este tipo de cosas a veces.

-4
Pizza tags 13 dic. 2016 a las 23:54

2 respuestas

La mejor respuesta

Según su sangría, querrá pegar llaves ({ y }) alrededor de sus líneas de códigos como tal:

for(i=1;i<=n;i++)
{
    for(j=1;j<=n;j++)
    {
        ncells=i*j;
        sum+=input[i][j];
        avrage=(sum)/(ncells);
        sumatrix[i][j]=avrage;
    }
}

Esto generalmente se considera una buena práctica para poner llaves alrededor de todos sus condicionales y bucles, solo para dejar explícitamente claro qué código tiene la intención de incluir dentro del condicional o bucle. Solo quite las llaves cuando esté absolutamente seguro de que el bucle o condicional no contendrá más de una línea.

3
DBPriGuy 13 dic. 2016 a las 21:27

Para repetir con más "fuerza" respuesta de DBPriGuy, en C, condicionales como for, if y while solo afectará al siguiente statement (instrucción única o conjunto rodeado de llaves).

for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        ncells=i*j;
        sum+=input[i][j];
        avrage=(sum)/(ncells);
        sumatrix[i][j]=avrage;

Es equivalente a (con sangría real)

for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        ncells=i*j;
sum+=input[i][j];
avrage=(sum)/(ncells);
sumatrix[i][j]=avrage;

Una mejor forma de decirlo sería

for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    {
        ncells=i*j;
        sum+=input[i][j];
        avrage=(sum)/(ncells);
        sumatrix[i][j]=avrage;
    }
0
Community 23 may. 2017 a las 12:24