Autor
|
Tema: No puedo sumar las parcelas, sólo el total de naranjas y mandarinas [C] (Leído 2,984 veces)
|
S4ms3pi0l__
Desconectado
Mensajes: 21
|
He hecho este programa en C, pero no puedo sumar las parcelas, sólo el total de naranjas y mandarinas. Espero que podaís ayudarme. Lo que quiero es, de 'n' parcelas, imprimir el total de cada una. Aquí mi programa:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int n, i, j, a=0, b=0, parcela[50]; do{ printf("Ingrese la cantidad de parcelas: "); }while(n<=0); for(i=1;i<=n;i++){ do{ printf("\nIngrese la cantidad de naranjas: "); }while(parcela[i]<=0); do{ printf("Ingrese la cantidad de mandarinas: "); }while(parcela[j]<=0); a=a+parcela[i]; b=b+parcela[j]; parcela[n]=parcela[i]+parcela[j]; } printf("\nTotal produccion naranjas: %d ",a ); printf("\nTotal produccion mandarinas: %d ",b ); for(i=1;i<=n;i++){ printf("\nParcela #%d: %d ",i , parcela [n ]); } return 0; }
· Los títulos deben ser descriptivos >aquí las reglas del foro -Engel Lex
|
|
« Última modificación: 17 Octubre 2017, 03:34 am por S4ms3pi0l__ »
|
En línea
|
|
|
|
engel lex
|
donde modificas j? veo que lo usas como indicador de parcelas de mandarinas... pero siempre lo sobreescribes luego con las siguientes naranjas ( i) no es preferible que uses una matriz bidimensional donde siendo x el numero de parcela matriz[x][0]; <-naranjas matriz[x][1]; <-mandarinas
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
S4ms3pi0l__
Desconectado
Mensajes: 21
|
Ese era mí problema; me ha servido de mucha ayuda tu consejo, te lo agradezco mucho. Aquí dejo el código con el problema resuelto: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int n, x, i, a=0, b=0, parcela[50][50]; do{ printf("Ingrese la cantidad de parcelas: "); }while(n<=0); for(i=1;i<=n;i++){ do{ printf("\nIngrese la cantidad de naranjas: "); scanf("%d",&parcela [i ][1]); }while(parcela[i][1]<=0); do{ printf("Ingrese la cantidad de mandarinas: "); scanf("%d",&parcela [i ][2]); }while(parcela[i][2]<=0); a+=parcela[i][1]; b+=parcela[i][2]; parcela[i][x]=parcela[i][1]+parcela[i][2]; } printf("\nTotal produccion naranjas: %d ",a ); printf("\nTotal produccion mandarinas: %d ",b ); for(i=1;i<=n;i++){ printf("\nParcela #%d: %d ",i , parcela [i ][x ]); } return 0; }
|
|
« Última modificación: 17 Octubre 2017, 03:57 am por S4ms3pi0l__ »
|
En línea
|
|
|
|
engel lex
|
no requieres 50 en tu segunda dimensión... y por otro lado... los indices empiezan en 0 puedes parecer una tontería pero a medida que crece el programa el tamaño afecta... allí necesitas declarar un array (si 50 es tu maximo) de 50*2*4 bytes (4 es la cantidad de bytes de int) es decir, meros 400Bytes... sin embargo declaras 50*50*4 siendo esto 10KBytes... estando 2 ordenes de magnitud sobre lo que necesitas... en este caso es irrelevante... pero facilmente se te puede escapar de las manos... con hacer int parcela[50][2];
parcela[0][0] = 4; parcela[0][1] = 2;
a demás de ser más eficiente lo hace más legible y comprensible
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Gallu
Desconectado
Mensajes: 247
|
Hola, se me ocurrió mejorar el código de S4ms3pi0l con punteros en lugar de arrays, echarle un ojo por favor, tengo pensado implementarlo también con estructuras de datos y listas enlazadas, lo hago por aprender y practicar básicamente. Se veis alguna cosa que pueda mejorar os agradezco cualquier comentario. #include <stdio.h> #include <stdlib.h> int preguntarNaranjas(); int preguntarMandarinas(); int preguntarParcelas(); void printResumen(int ** parcela, int numeroParcelas); int ** initParcelaPointer(int numeroParcelas); int main(int argc, char *argv[]) { int parcelas = preguntarParcelas(); int **parcelaPointer = initParcelaPointer(parcelas); int i; int * temp; for(i = 0 ; i < parcelas ; i++){ int mandarinas = preguntarMandarinas(); int naranjas = preguntarNaranjas(); temp = (int*) parcelaPointer[i]; *temp = mandarinas; temp++; *temp = naranjas; } printResumen(parcelaPointer, parcelas); return 0; } int ** initParcelaPointer(int numeroParcelas){ int **parcelaPointer; parcelaPointer = (int **) malloc(sizeof(int *) * numeroParcelas ); int i; for(i = 0 ; i < numeroParcelas ; i++){ parcelaPointer [i ] = (int *) malloc(sizeof(int *) * 2); } return parcelaPointer; } void printResumen(int ** parcela, int numeroParcelas){ int totalNaranjas = 0; int totalMandarinas = 0; int totalProduccionParcela = 0; int i; for(i = 0 ; i < numeroParcelas ; i++){ totalProduccionParcela = 0; totalMandarinas += *parcela[i]; totalProduccionParcela += *parcela[i]; parcela[i]++; totalNaranjas += *parcela[i]; totalProduccionParcela += *parcela[i]; printf("\nParcela #%d: Produccion: %d ",i , totalProduccionParcela ); } printf("\nTotal produccion naranjas: %d ",totalNaranjas ); printf("\nTotal produccion mandarinas: %d ",totalMandarinas ); } int preguntarParcelas(){ int numeroParcelas; do{ printf("Ingrese la cantidad de parcelas: "); scanf("%d",&numeroParcelas ); }while(numeroParcelas<=0); return numeroParcelas; } int preguntarNaranjas(){ int numeroNaranjas; do{ printf("\nIngrese la cantidad de naranjas: "); scanf("%d",&numeroNaranjas ); }while(numeroNaranjas <= 0); return numeroNaranjas; } int preguntarMandarinas(){ int numeroMandarinas; do{ printf("\nIngrese la cantidad de mandarinas: "); scanf("%d",&numeroMandarinas ); }while(numeroMandarinas <= 0); return numeroMandarinas; }
|
|
|
En línea
|
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
|
|
|
Gallu
Desconectado
Mensajes: 247
|
Hola, lo comentado, el mismo código pero con linked list y estructuras de datos. Cualquier comentario es bienvenido. #include <stdio.h> #include <stdlib.h> typedef struct{ int naranjas; int mandarinas; }type_parcela; typedef struct{ type_parcela * val; void * next; }node; int preguntarNaranjas(); int preguntarMandarinas(); int preguntarParcelas(); void printResumen(node * produccion); type_parcela * crearParcela(int naranjas, int mandarinas); void push(node * head, type_parcela * val) ; void producir(node *produccion); int main(int argc, char *argv[]) { int numeroParcelas = preguntarParcelas(); int i; node *produccionTotal = (node *) malloc(sizeof(node *)); for(i = 0 ; i < numeroParcelas ; i++){ producir(produccionTotal); } printResumen(produccionTotal); return 0; } void producir(node *produccion){ int mandarinas = preguntarMandarinas(); int naranjas = preguntarNaranjas(); push(produccion, crearParcela(naranjas, mandarinas)); } void push(node * head, type_parcela * val) { node * current = head; while (current->next != NULL) { current = current->next; } if(!current->val){ //el elemento actual no tiene un valor asignado current->val = val; return ; } /* now we can add a new variable */ current ->next = malloc(sizeof(node *)); ((node*)current->next)->val = val; ((node*)current->next)->next = NULL; } type_parcela * crearParcela(int naranjas, int mandarinas){ type_parcela * parce = (type_parcela *) malloc(sizeof(type_parcela *)); parce->naranjas = naranjas; parce->mandarinas = mandarinas; return parce; } void printResumen(node * produccion){ int totalNaranjas = 0; int totalMandarinas = 0; int totalProduccionParcela = 0; int i = 0; node * current = produccion; while (current) { totalNaranjas += current->val->naranjas; totalMandarinas += current->val->mandarinas; totalProduccionParcela = current->val->naranjas + current->val->mandarinas; printf("\nParcela #%d: Produccion: %d ",i , totalProduccionParcela ); i++; current = current->next; } printf("\nTotal produccion naranjas: %d ",totalNaranjas ); printf("\nTotal produccion mandarinas: %d ",totalMandarinas ); } int preguntarParcelas(){ int numeroParcelas; do{ printf("Ingrese la cantidad de parcelas: "); scanf("%d",&numeroParcelas ); }while(numeroParcelas<=0); return numeroParcelas; } int preguntarNaranjas(){ int numeroNaranjas; do{ printf("\nIngrese la cantidad de naranjas: "); scanf("%d",&numeroNaranjas ); }while(numeroNaranjas <= 0); return numeroNaranjas; } int preguntarMandarinas(){ int numeroMandarinas; do{ printf("\nIngrese la cantidad de mandarinas: "); scanf("%d",&numeroMandarinas ); }while(numeroMandarinas <= 0); return numeroMandarinas; }
|
|
|
En línea
|
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como puedo sumar esto???
Programación Visual Basic
|
Belial & Grimoire
|
6
|
2,173
|
20 Julio 2007, 06:08 am
por matoreggae
|
|
|
AYUDA SOLO DESEO SUMAR LAS CONDICIONES (IF,ELSE)
.NET (C#, VB.NET, ASP)
|
trunca
|
8
|
3,688
|
7 Abril 2009, 18:56 pm
por DarkItachi
|
|
|
Wepcrack: Exito Total; Conexion: Solo con otro pc
Hacking Wireless
|
ilomo
|
0
|
2,411
|
23 Febrero 2012, 17:36 pm
por ilomo
|
|
|
Total Boox: paga sólo lo que lees
Noticias
|
wolfbcn
|
0
|
1,288
|
2 Noviembre 2012, 21:34 pm
por wolfbcn
|
|
|
Como puedo sumar valores usando 1 solo txtbox en C#
.NET (C#, VB.NET, ASP)
|
Ila26
|
8
|
10,694
|
2 Septiembre 2014, 05:01 am
por elezekiel
|
|