Autor
|
Tema: Dudas sobre suma de filas y columnas en C++. (Leído 15,801 veces)
|
Gagy
Desconectado
Mensajes: 21
|
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: #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
Mensajes: 1.314
|
........................................... 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 pm por leosansan »
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
No sé si ha sido al copiar, pero deberías poner el código un poquito más elegante: #include <iostream> #include<cmath> using namespace std; int main() { 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; double suma=0; cout<<" Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo"<<endl; i=0; while(i<5) { 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.get(); return 0; }
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: 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
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
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:
#include <iostream> using namespace std; int main() { char a,cadenas [5][7]={ "A3","TV1" ,"CUATRO" ,"T4 " ,"SEXTA"};; 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 ; 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; } return 0; }
Saluditos!................
|
|
« Última modificación: 9 Marzo 2013, 17:57 pm por leosansan »
|
En línea
|
|
|
|
Gagy
Desconectado
Mensajes: 21
|
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
Mensajes: 1.639
|
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: int main() { // ... cin.get(); return 0; }
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
Mensajes: 21
|
Muchas gracias rir3760! Sí, utilizo Dev-C++ 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í: #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
Mensajes: 1.211
|
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: while(j<8) { if (j>=1) suma=suma+matriz[i][j];
j mayor o igual a 1?
|
|
|
En línea
|
|
|
|
|
Gagy
Desconectado
Mensajes: 21
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
eliminar filas y columnas en java
Java
|
sauce19
|
3
|
8,960
|
4 Septiembre 2011, 19:48 pm
por [Case]
|
|
|
Programa en C sharp que genera un cuadrado magico , suma sus filas y columnas
.NET (C#, VB.NET, ASP)
|
david_quiroz19
|
0
|
9,406
|
13 Noviembre 2011, 00:15 am
por david_quiroz19
|
|
|
Duda sencilla sobre suma de columnas en matriz de 2 dimensiones.
Ejercicios
|
bastri
|
2
|
3,645
|
20 Julio 2015, 07:50 am
por bastri
|
|
|
Suma de filas y columnas de una matriz en C
Programación C/C++
|
estudiante_1
|
1
|
20,727
|
30 Diciembre 2015, 22:19 pm
por MAFUS
|
|
|
Suma de filas y columnas de una matriz
.NET (C#, VB.NET, ASP)
|
Ahinoam
|
2
|
9,166
|
15 Diciembre 2016, 23:59 pm
por Ahinoam
|
|