elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Dudas sobre suma de filas y columnas en C++.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Dudas sobre suma de filas y columnas en C++.  (Leído 11,737 veces)
Gagy

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Dudas sobre suma de filas y columnas en C++.
« en: 9 Marzo 2013, 16:26 »

Saludos a todos!
Tengo que hacer un ejercicio en C++ el cuál es una tabla que representa la audiencia de distintas cadenas de televisión los siete días de la semana. Aquí la imagen:
http://imageshack.us/photo/my-images/9/foto090313160927.jpg/

Bien, lo que tengo que hacer es decir qué día es el más visto y qué cadena es la más vista, por lo que tengo que tengo que sumar cada fila y cada columna. Lo que ocurre es que no me suma bien, no sé por qué. Además no sé cómo poner el nombre de las distintas cadenas de televisión en lugar de números, representados en la tabla por 1,2,3,4 y 5.

¿Podríais echarme un cable? Aquí el código que tengo hasta ahora, un código muy básico ya que soy un principiante:
Código:
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
char a;
double matriz[][8]={{1   ,   2     ,   1.4   ,    4.6   ,    5     ,     7     ,     6.2   ,   6.2},
                    {2   ,   3     ,   3.6   ,    5     ,    4.5   ,     2.7   ,     5.2   ,   5.2},
                    {3   ,   2.5   ,   3.5   ,    3     ,    6     ,     3     ,     5.1   ,   5.1},
                    {4   ,   3.2   ,   4.5   ,    2     ,    2.2   ,     1     ,     3.5   ,   0.9},
                    {5   ,   1.7   ,   1.3   ,    4.5   ,    4.7   ,     2.8   ,     4.8   ,   3.3}};
int i,j, suma=0;
cout<<"          Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo"<<endl; 
//   //i es el numero de filas
 i=0;
while(i<5)

{
//  for(j=0;j<8;j++)
j=0;
while(j<8)
{
suma=suma+matriz[i][j];
cout<<"      "<<matriz[i][j];           
  j++;
 }
cout<<"           La suma de la fila "<<i+1<<" es "<<suma<<endl;                   
suma=0;
i++;   
}   
 for(j=0;j<7;j++)                                                         
{
  for(i=0;i<5;i++) 

  suma=suma+matriz[i][j];
  cout<<"La suma de la columna "<<j+1<<" es "<<suma<<endl;
  suma=0;
}             
cin>>a;
}


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Dudas sobre suma de filas y columnas en C++.
« Respuesta #1 en: 9 Marzo 2013, 16:52 »

...........................................
Lo que ocurre es que no me suma bien, no sé por qué


Tienes que declarar suma como float en lugar de int.

Saluditos....

P.D:Tienes una columna de más al sumar. que tendrás que descontar desde los índices, 1 en lugar de cero



« Última modificación: 9 Marzo 2013, 22:42 por leosansan » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Dudas sobre suma de filas y columnas en C++.
« Respuesta #2 en: 9 Marzo 2013, 17:33 »

No sé si ha sido al copiar, pero deberías poner el código un poquito más elegante:

Código
  1. #include <iostream>
  2. #include<cmath>
  3. using namespace std;
  4. int main()
  5. {
  6.    double matriz[][8]= {
  7.        {1   ,   2     ,   1.4   ,    4.6   ,    5     ,     7     ,     6.2   ,   6.2},
  8.        {2   ,   3     ,   3.6   ,    5     ,    4.5   ,     2.7   ,     5.2   ,   5.2},
  9.        {3   ,   2.5   ,   3.5   ,    3     ,    6     ,     3     ,     5.1   ,   5.1},
  10.        {4   ,   3.2   ,   4.5   ,    2     ,    2.2   ,     1     ,     3.5   ,   0.9},
  11.        {5   ,   1.7   ,   1.3   ,    4.5   ,    4.7   ,     2.8   ,     4.8   ,   3.3}
  12.    };
  13.    int i,j;
  14.    double suma=0;
  15.  
  16.    cout<<"          Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo"<<endl;
  17.  
  18.    i=0;
  19.  
  20.    while(i<5)
  21.    {
  22.  
  23.        j=0;
  24.        while(j<8)
  25.        {
  26.            suma=suma+matriz[i][j];
  27.            cout<<"      "<<matriz[i][j];
  28.            j++;
  29.        }
  30.  
  31.        cout<<"           La suma de la fila "<<i+1<<" es "<<suma<<endl;
  32.        suma=0;
  33.        i++;
  34.    }
  35.  
  36.    for(j=0; j<7; j++)
  37.    {
  38.        for(i=0; i<5; i++)
  39.            suma=suma+matriz[i][j];
  40.  
  41.        cout<<"La suma de la columna "<<j+1<<" es "<<suma<<endl;
  42.        suma=0;
  43.    }
  44.    cin.get();
  45.  
  46.    return 0;
  47. }

Muy ingenioso lo del cin>>a del final. Aunque no hace falta que te inventes una variable, también puedes usar el método get:

Código
  1. cin.get();

El error era que suma tiene que ser double, de lo contrario no coge los decimales.

Además de eso, decirte que la librería #include<cmath> no es necesaria (es para cálculos tipo coseno/seno... Para sumas no hace falta).

Y por último que no se te olvide el return 0 del final ;)
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Dudas sobre suma de filas y columnas en C++.
« Respuesta #3 en: 9 Marzo 2013, 17:54 »


No tiene porque ser double, con un float para el tamaño de números que maneja es suficiente.

Con las cadenas incluidas, aunque te queda darle "forma" a la salida:


Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int main()
  5. {
  6. char a,cadenas [5][7]={ "A3","TV1" ,"CUATRO" ,"T4 " ,"SEXTA"};;
  7. double matriz[][8]={{1   ,   2     ,   1.4   ,    4.6   ,    5     ,     7     ,     6.2   ,   6.2},
  8.                    {2   ,   3     ,   3.6   ,    5     ,    4.5   ,     2.7   ,     5.2   ,   5.2},
  9.                    {3   ,   2.5   ,   3.5   ,    3     ,    6     ,     3     ,     5.1   ,   5.1},
  10.                    {4   ,   3.2   ,   4.5   ,    2     ,    2.2   ,     1     ,     3.5   ,   0.9},
  11.                    {5   ,   1.7   ,   1.3   ,    4.5   ,    4.7   ,     2.8   ,     4.8   ,   3.3}};
  12. int i,j ;
  13. float suma=0;
  14. cout<<"          Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo"<<endl;
  15. //   //i es el numero de filas
  16. i=0;
  17. while(i<5)
  18.  
  19. {
  20. //  for(j=0;j<8;j++)
  21. j=0;
  22. while(j<8)
  23. {
  24. if (j>=1)
  25.    suma=suma+matriz[i][j];
  26. if (j==0)
  27.    cout<<"      "<<cadenas[i];
  28. cout<<"      "<<matriz[i][j];
  29.  j++;
  30. }
  31. cout<<"           La suma de la fila "<<i+1<<" es "<<suma<<endl;
  32. suma=0;
  33. i++;
  34. }
  35. for(j=0;j<7;j++)
  36. {
  37.  for(i=0;i<5;i++)
  38.  
  39.  suma=suma+matriz[i][j];
  40.  cout<<"La suma de la columna "<<j+1<<" es "<<suma<<endl;
  41.  suma=0;
  42. }
  43. return 0;
  44. }
  45.  

Saluditos!
................
« Última modificación: 9 Marzo 2013, 17:57 por leosansan » En línea

Gagy

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Dudas sobre suma de filas y columnas en C++.
« Respuesta #4 en: 9 Marzo 2013, 18:00 »

Muchiiiisimas gracias a los dos.
Pero leosansan, se me cierra tu código en cuanto lo ejecuto. ¿A qué puede ser debido?
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Dudas sobre suma de filas y columnas en C++.
« Respuesta #5 en: 9 Marzo 2013, 19:03 »

Supongo las razón es utilizar un IDE (tal vez Dev-C++, no lo mencionas) que no genera una pausa de forma automática.

Si quieres esa pausa hay varias opciones, por ejemplo una llamada a la funcion get justo antes del final de la función principal:
Código
  1. int main()
  2. {
  3.   // ...
  4.  
  5.   cin.get();
  6.   return 0;
  7. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Gagy

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Dudas sobre suma de filas y columnas en C++.
« Respuesta #6 en: 9 Marzo 2013, 19:17 »

Muchas gracias rir3760! Sí, utilizo Dev-C++  :P

Por cierto, ahora no me suma el primer número de cada fila, seguro que es muy fácil, pero no doy con la tecla jeje
Aver si alguien me echa un cable. Por ahora el código lo tenemos así:

Código:
#include <iostream>
     
    using namespace std;
    int main()
    {
    char a,cadenas [5][7]={ "A3","TV1" ,"CUATRO" ,"T4 " ,"SEXTA"};;
    double matriz[][8]={{2     ,  1.4   ,    4.6   ,    5     ,     7     ,     6.2   ,   6.2},
                       {3     ,   3.6   ,    5     ,    4.5   ,     2.7   ,     5.2   ,   5.2},
                       {2.5   ,   3.5   ,    3     ,    6     ,     3     ,     5.1   ,   5.1},
                       {3.2   ,   4.5   ,    2     ,    2.2   ,     1     ,     3.5   ,   0.9},
                       {1.7   ,   1.3   ,    4.5   ,    4.7   ,     2.8   ,     4.8   ,   3.3}};
    int i,j ;
    float suma=0;
    cout<<"          Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo"<<endl;
    //   //i es el numero de filas
    i=0;
    while(i<5)
     
    {
    //  for(j=0;j<8;j++)
    j=0;
    while(j<8)
    {
    if (j>=1)
       suma=suma+matriz[i][j];
    if (j==0)
       cout<<"      "<<cadenas[i];
    cout<<"      "<<matriz[i][j];
     j++;
    }
    cout<<"      La suma de la fila "<<i+1<<" es "<<suma<<endl;
    suma=0;
    i++;
    }
    for(j=0;j<7;j++)
    {
     for(i=0;i<5;i++)
     
     suma=suma+matriz[i][j];
     cout<<"La suma de la columna "<<j+1<<" es "<<suma<<endl;
     suma=0;
    }
    cin.get();
    return 0;
    }
     
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Dudas sobre suma de filas y columnas en C++.
« Respuesta #7 en: 9 Marzo 2013, 19:44 »


No tiene porque ser double, con un float para el tamaño de números que maneja es suficiente.
Lo he puesto double para que sea del mismo tipo que la matriz.

Por cierto, ahora no me suma el primer número de cada fila, seguro que es muy fácil, pero no doy con la tecla
Quizás sea por esto:


Código
  1. while(j<8)
  2.    {
  3.    if (j>=1)
  4.       suma=suma+matriz[i][j];

j mayor o igual a 1?
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Dudas sobre suma de filas y columnas en C++.
« Respuesta #8 en: 9 Marzo 2013, 20:04 »

Tal como te lo deje, en mi código sumaba los números de forma correcta, el primer número de cada fila servía para indicar la impresión de la TV en cada caso, no se sumaba. Podrían ser esos primeros números cualesquiera, pero si no los pones no vale el >=1,porque como los tienes ahora se "come" la primera columna.

Saluditos!. ...


P.D Usa las etiquetas GeSHi de C++, así el código sale coloreado y es más fácil de seguir.
« Última modificación: 9 Marzo 2013, 20:06 por leosansan » En línea

Gagy

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Dudas sobre suma de filas y columnas en C++.
« Respuesta #9 en: 9 Marzo 2013, 20:07 »

Tienes razón amchacon! Se me había pasado por alto por completo.
Por último, y para concluir el problema, nos pregunta:
-Qué día es el más visto.
-Qué cadena es la más vista.
Siendo el sábado y A3 las respuestas correspondientes, con 32'4 y 24'8 millones de espcectadores.
Entonces, ¿cómo podría el programa saber cuál es el número mayor de cada fila y cada columna? ¿Alguna explicación?
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines