Autor
|
Tema: Ayuda, sumatoria de filas y columnas de arreglo en C (Leído 3,770 veces)
|
luis9430
Desconectado
Mensajes: 7
|
tengo un arreglo bidimensional con la funcion rand en el que suma el total de filas pero no se como hacer para que tambien sume el total de columnas
en la fila 16 es donde quiero agregar el total de cada columna
#include<stdio.h> #include<stdlib.h> #include<time.h>
int arr[16][12],x,y,acu;
main ()
{
printf("\n"); printf("vendedor vento Jetta Polo Teramont Beetle Golf Gol Passat Up! Tiguan Touareg TOTAL "); printf("\n"); srand(time(NULL)); for(x=0;x<15;x++) for(y=0;y<12;y++) arr[x][y]=1+rand()%9; for(x=0;x<15;x++){ acu=0; for(y=0;y<12;y++) acu=acu+arr[x][y]; arr[x][11]=acu; } for(x=0;x<15;x++){ printf("\n"); for(y=0;y<12;y++) printf("\t$%d", arr[x][y]);
} getchar(); return 0; }
|
|
« Última modificación: 2 Enero 2019, 20:32 pm por luis9430 »
|
En línea
|
|
|
|
K-YreX
|
Lo primero de todo coloca tu código entre etiquetas GeSHi, ya que como puedes comprobar tú mismo ese código es ilegible. Y también hay alguna instrucción en dos líneas, corrige eso para que se pueda entender mejor. Para sumar cada columna tienes que pensar la relación que tiene una columna (la segunda coordenada es siempre la misma). Entonces dos bucles anidados, el exterior se mueve por las columnas y el interior por las filas, y una vez que acaba el bucle interior y se ha ido sumando cada valor, se almacena al final de esa columna. Suerte PD: No uses la librería <conio.h> ya que no es estándar. Sólo la necesitas para usar <getch()>. Puedes sustituir <getch()> por <getchar()> y así ya no necesitas incluir esa librería.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
luis9430
Desconectado
Mensajes: 7
|
ya lo modifique, soy nuevo en esto, intente realizarlo y al colocarlo me da 0 la suma de cada columna
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Dónde dices for(y=0;y<12;y++) acu=acu+arr[x][y]; Debe decir y<11 porque sino también sumarán la propia suma. Para la suma de las columnas es similar pero en vez de moverte primero por filas y dentro de ellas por columnas, primero debes moverte por columnas y dentro de ellas por filas.
|
|
|
En línea
|
|
|
|
luis9430
Desconectado
Mensajes: 7
|
Gracias! , pero en columnas he intentado de todo y me sigue saliendo 0 en la suma de todas ellas
|
|
|
En línea
|
|
|
|
K-YreX
|
Muestra cómo estás haciendo la suma por columnas para poder ver el error...
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
luis9430
Desconectado
Mensajes: 7
|
Muestra cómo estás haciendo la suma por columnas para poder ver el error...
este seria para la suma de columnas , lo que busco es que en la fila 16 salga la sumatoria
for(x=0;x<15;x++){ acu=0; for(y=0;y<11;y++) acu=acu+arr[x][y]; arr[y][15]=acu; } al final me queda asi #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<time.h>
int arr[16][12],x,y,acu,i,acu1; int maximo[16];
main ()
{
printf("\n"); printf("vendedor vento Jetta Polo Teramont Beetle Golf Gol Passat Up! Tiguan Touareg TOTAL "); printf("\n"); srand(time(NULL)); for(x=0;x<15;x++) for(y=0;y<11;y++) arr[x][y]=1+rand()%9; //suma de filas for(x=0;x<15;x++){ acu=0; for(y=0;y<11;y++) acu=acu+arr[x][y]; arr[x][11]=acu; } //suma de columnas for(x=0;x<15;x++){ acu=0; for(y=0;y<11;y++) acu=acu+arr[x][y]; arr[y][15]=acu; } //impresion for(x=0;x<16;x++){ printf("\n"); for(y=0;y<12;y++) printf("\t$%d", arr[x][y]); }
getch(); return 0; }
|
|
|
En línea
|
|
|
|
K-YreX
|
La suma de columnas está mal porque si te fijas tienes una matriz de 12 columnas y tú estás intentando guardar la suma en la columna 15... for(x=0;x<15;x++){ acu=0; for(y=0;y<11;y++) acu=acu+arr[x][y]; arr[y][15]=acu; // Esto siempre vale arr[11][15] }
Tienes que pensar bien la relación de los índices. Por ejemplo la suma de filas lo que hace es sumar la fila x y lo guarda en la posición matriz - [11]. Pero la suma de columnas, suma la columna x y lo estás guardando en la posición matriz[11][15]. Entonces tienes dos problemas, primero que siempre sobrescribes la misma posición y segundo que esa posición está fuera de la matriz.
PD: Si quieres sumar una columna y guardar la suma en la última posición de esa columna tienes que dejar la última fila sin valores al igual que la última columna. const int FILAS = 16, COLUMNAS = 12; int i, j; int matriz[FILAS][COLUMNAS]; for(i = 0; i < FILAS-1; i++) // no escribimos en la ultima fila for(j = 0; j < COLUMNAS-1; j++) // no escribimos en la ultima columna matriz[i][j] = valor; // suma de filas for(i = 0; i < FILAS-1; i++){ // este for recorre las filas desde la 0 hasta la 14 incluida suma = 0; for(j = 0; j < COLUMNAS-1; j++) // este for recorre las columnas desde la 0 hasta la 10 incluida suma += matriz[i][j]; matriz[i][j] = suma; // guardamos en la posicion [x][11] la suma de la fila x // tambien se puede hacer sin usar una variable suma for(i = 0; i < FILAS-1; i++){ matriz[i][COLUMNAS-1] = 0; // ponemos la ultima posicion de la fila a 0... for(j = 0; j < COLUMNAS-1; j++) matriz[i][COLUMNAS-1] += matriz[i][j]; // ... y vamos acumulando cada posicion de esa fila
La parte de sumar las columnas te la dejo a ti para que practiques. Suerte Pista: Tienes que darle la vuelta a los <for> y guardar en la posición [15] - la suma de la columna x...
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
luis9430
Desconectado
Mensajes: 7
|
muchisimas gracias esta claro lo que hay que hacer Solo una ultima duda , " = valor " que se supone que seria? for(i = 0; i < FILAS-1; i++) // no escribimos en la ultima fila for(j = 0; j < COLUMNAS-1; j++) // no escribimos en la ultima columna matriz[i][j] = valor;
|
|
|
En línea
|
|
|
|
K-YreX
|
<valor> es el número que vayas a guardar, en tu caso un número aleatorio. He puesto <valor> para no escribirlo todo.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con mi base de datos acces,datagrid sumar y restar columnas o filas
Programación Visual Basic
|
angelrobi
|
1
|
8,828
|
19 Diciembre 2009, 04:05 am
por seba123neo
|
|
|
eliminar filas y columnas en java
Java
|
sauce19
|
3
|
8,964
|
4 Septiembre 2011, 19:48 pm
por [Case]
|
|
|
Llenado de Datagridview columnas y filas
.NET (C#, VB.NET, ASP)
|
mgarcia9483
|
0
|
2,324
|
19 Agosto 2014, 02:57 am
por mgarcia9483
|
|
|
eliminar filas vacias txt (con columnas)
Scripting
|
choporrue
|
6
|
9,594
|
18 Septiembre 2014, 00:13 am
por choporrue
|
|
|
sumar filas y columnas en c#
.NET (C#, VB.NET, ASP)
|
eddymaltos13
|
1
|
9,427
|
29 Octubre 2016, 04:44 am
por plizze4
|
|