Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: GabrielHrC en 13 Marzo 2017, 03:21 am



Título: Sumar Matriz 4x6 usando Do While
Publicado por: GabrielHrC en 13 Marzo 2017, 03:21 am
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
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #include <iostream>
  6.  
  7.  
  8. int main()
  9. {
  10. int m[4][6], i, j, s=0, q[6];
  11. srand(time(NULL)); //semilla
  12. {
  13. for(i=0;i<4;i++)
  14. {
  15. for(j=0;j<6;j++)
  16. {
  17. do
  18. {
  19. m[i][j]=rand()%110+20;
  20. }
  21. while(m[i][j]%5!=0);
  22. printf("%d\t",m[i][j]);
  23. s+= m[i][j];
  24. q[j]+=m[i][j];
  25. }
  26. printf("-> %d\t\n",s); s=0;
  27. }
  28. printf("\n\n");
  29. for(i=0;i<6;i++)
  30. {
  31. printf("%d\t",q[i]);
  32. }
  33. } return 0;
  34. }
  35.  



Título: Re: Sumar Matriz 4x6 usando Do While
Publicado por: 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??


Título: Re: Sumar Matriz 4x6 usando Do While
Publicado por: 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.


Título: Re: Sumar Matriz 4x6 usando Do While
Publicado por: GabrielHrC en 13 Marzo 2017, 20:10 pm
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.


Título: Re: Sumar Matriz 4x6 usando Do While
Publicado por: MAFUS en 13 Marzo 2017, 20:20 pm
Soluciona q, como te he dicho, y el programa funcionará.


Título: Re: Sumar Matriz 4x6 usando Do While
Publicado por: GabrielHrC en 13 Marzo 2017, 20:33 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
  1.  
  2. for(i=0;i<6;i++)
  3. {
  4. printf("%d\t",q[i]);
  5. }
  6.  

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
  1. printf("-> %d\t\n",s); s=0;

Y es ahí donde necesito ayuda.


Título: Re: Sumar Matriz 4x6 usando Do While
Publicado por: MAFUS en 13 Marzo 2017, 23:22 pm
Puedes hacer dos cosas:
1. Para los que empiezan. Justo después de la declaración de variables
Código
  1. for(i=0; i < 6; ++i)
  2.    q[i] = 0;

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


Título: Re: Sumar Matriz 4x6 usando Do While
Publicado por: Kenji-chan en 13 Marzo 2017, 23:25 pm
Código:
#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