Sumar Matriz 4x6 usando Do While

Iniciado por GabrielHrC, 13 Marzo 2017, 03:21 AM

0 Miembros y 1 Visitante están viendo este tema.

GabrielHrC

Hola, espero que puedan ayudarme, tengo un problema con mi código ya que las sumas horizontales salen sin problemas, peor las verticales no.

Este es mi código, ya estuve buscando en internet pero todos usan for en lugar de do while

Muchas Gracias!!!

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>


int main()
{
int m[4][6], i, j, s=0, q[6];
srand(time(NULL)); //semilla
{
for(i=0;i<4;i++)
{
for(j=0;j<6;j++)
{
do
{
m[i][j]=rand()%110+20;
}
while(m[i][j]%5!=0);
printf("%d\t",m[i][j]);
s+= m[i][j];
q[j]+=m[i][j];
}
printf("-> %d\t\n",s); s=0;
}
printf("\n\n");
for(i=0;i<6;i++)
{
printf("%d\t",q[i]);
}
} return 0;
}



Kenji-chan

lo que quieres es un algoritmo que de la sumatoria de todas las filas y despes la sumatoria de las columnas de tu matriz 4x6?? o que solo sume las filas??

MAFUS

q está mal, no tiene inizializado a 0 ninguno de sus índices antes de empezar a sumar por lo tanto siempre dará valores extraños.

GabrielHrC

Cita de: Kenji-chan en 13 Marzo 2017, 06:27 AM
lo que quieres es un algoritmo que de la sumatoria de todas las filas y despes la sumatoria de las columnas de tu matriz 4x6?? o que solo sume las filas??


Quiero la sumatoria por filas y despues por columnas, la de las filas me la da sin problemas pero en las sumatorias de las columnas no.

MAFUS

Soluciona q, como te he dicho, y el programa funcionará.

GabrielHrC

Cita de: MAFUS en 13 Marzo 2017, 15:51 PM
q está mal, no tiene inizializado a 0 ninguno de sus índices antes de empezar a sumar por lo tanto siempre dará valores extraños.

Según yo lo hice aquí
Código (cpp) [Seleccionar]

for(i=0;i<6;i++)
{
printf("%d\t",q[i]);
}


Pero no se cómo hacer que el acumulado en las filas sea cero cada vez que cambia a la siguiente, como lo hice en las columnas

Código (cpp) [Seleccionar]
printf("-> %d\t\n",s); s=0;

Y es ahí donde necesito ayuda.

MAFUS

Puedes hacer dos cosas:
1. Para los que empiezan. Justo después de la declaración de variables
for(i=0; i < 6; ++i)
    q[i] = 0;


2. Para los que ya han visto un poco más de arrays. Cuando declares q simplemente debes hacerlo
q[6] = {0};

Kenji-chan


#include <stdio.h>
#include <time.h>

int main(){
    int m[4][6], i, j, s, f[6], c[6];
srand(time(NULL)); //semilla

i = 0;
    do{
        s = 0;
        j = 0;
        do{
            m[i][j]=rand()%110+20;
            printf("m[%d][%d]=%d  ", i, j, m[i][j]);
            s += m[i][j];
            j++;
        }while(j<6);
        f[i] = s;
        printf("\nf[%d] = %d\n", i, s);
        j = 0;
        do{
            if(i == 0) c[j] = m[i][j];
            else c[j] += m[i][j];
            j++;
        }while(j<6);
        i++;
    }while(i<4);
    j = 0;
    while(j<6){
        printf("c[%d] = %d  ", j, c[j]);
        j++;
    }

    return 0;
}


este codigo utiliza los do while como querias, en el array f[] se almacenan las filas y en c[] las columnas