[ Foro de C++ ]

[c++] hay una forma más sencilla de compilar este problema

03-May-2020 09:30
Junior España
1 Respuestas

{
La asociación de vinicultores 'VINO UNEFA' RIF-J1236708-0 tiene como política fijar un precio inicial al kilo de uva, la cual se clasifica en tipos A y B, y además en tamaños 1 y 2.
Cuando el productor realiza la venta del producto,ésta es realizada de un solo tipo y tamaño, se requiere determinar cuánto recibirá un productor por la uva que entrega en un embarque, considerando lo siguiente: si es de tipo A, se le cargan 200.000bs al precio inicial cuando es de tamaño 1; y 300.000bs si es de tamaño2.
Si es de tipo B, se rebajan 300.000bs cuando es de tamaño 1, y 500.000bs cuando es de tamaño 2.
Realice un programa para determinar la ganancia obtenida por la asociación. se debe generar un recibo con los datos de la asociación(nombre y rif), del productor(nombre, apellido,cédula,teléfono,fecha,tipo, tamaño de uva,ganancia obtenida por el productor,precio y kilos de producción).

}

Nota: Deben realizar el mismo ejercicio por las tres estructuras iterativas utilizando arreglos.

Codigo 1 con While (condition) {code} :
---------------COMIENZO CODIGO 1------------------------


/*
 
 */

#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main(int argc, char **argv)
{
	char nombre_p[1000][15],apellido_p[1000][15];
	char nombre_Asoc[]="\"VINO UNEFA\" ";
	char rif_Asoc[]="1236708-0";
	char ci[1000][8],tlfn[1000][11],fecha[1000][10];
									/*Fecha Formato: DD-MM-AAAA*/
	int tipo[1000],tamano[1000],kg_uva[1000],m_p_kg[1000];
	float m_inicial[1000],m_total[1000],ganancia_p[1000],gananciaPorcentual_p[1000],aum=0,reb=0;
														//aum (aumento) , reb (rebaja)
	
	int iteracion=1;
	int contador=0;
	while(iteracion==1){
		
		
		
		printf("..:__________Bienvenidos__________:..\n");
		printf("..:-------Solicitud de datos------:..\n");
		printf("\n-Ingrese >Nombre< del productor: "); scanf("%s",nombre_p[contador]);
		printf("\n-Ingrese >Apellido< del productor: "); scanf("%s",apellido_p[contador]);
		printf("\n-Ingrese >Cedula< del productor: "); scanf("%s",ci[contador]);
		printf("\n-Ingrese >Telefono< del productor: "); scanf("%s",tlfn[contador]);
		printf("\n-Ingrese FECHA [formato: DD-MM-AAAA] "); scanf("%s",fecha[contador]);
		printf("\n:-Digite monto Kgs de UVA [Entero]: "); scanf("%i",&kg_uva[contador]);
		
		printf("\n:-Digite monto inicial [por Kg(Uva)]: "); scanf("%i",&m_p_kg[contador]); 
			m_inicial[contador]=(m_p_kg[contador]*kg_uva[contador]);
		printf("\n DATO: Monto inicial ESTABLECIDO: %.2f \n",m_inicial[contador]);
		printf("\n Nota: [No obstante la calidad de la uva] Con fines procedimentales digite el porcentaje (en numeros decimales) de la ganacia a obtener el productor por total de venta realizada. Ej: 30%%, ingrese 0.30 ");
		printf("\n-Ingrese >porcentaje< ganancia:"); scanf("%f",&gananciaPorcentual_p[contador]);
		
		printf("\n:-Digite Tipo de Uva [1 -> A , 2 -> B] "); scanf("%i",&tipo[contador]);
		printf("\n:-Digite Tamaño de UVA [1 o 2]: "); scanf("%i",&tamano[contador]);
		
			if (tipo[contador]==1){
					
					if (tamano[contador]==1){ aum=200000; }else{ aum=300000; }
				
			}else{
				if (tamano[contador]==2){ reb=300000; }else{ reb=500000; }
			}
		
		m_total[contador]=((((m_inicial[contador])-reb)+aum));
		ganancia_p[contador]=(m_total[contador]*(gananciaPorcentual_p[contador]/100));
	
	 system("cls"); //Vaciar pantalla
		printf("..::--------------------------------::::..\n");
		printf("..::::::ASOCIACION DE VINICULTORES:::::..\n");
		printf("%s RIF: %s \n",nombre_Asoc,rif_Asoc);
		printf("..::----------------------------------::::.");
		printf("\n..::------COMPROBANTE #%i----Fecha: %s -----::::.",(contador+1), fecha[contador]);
		printf("\n..::----------------------------------::::.");
		printf("\n ------- PRODUCTOR -------------");
		printf("\nNombre: %s %s",nombre_p[contador],apellido_p[contador]);
		printf("\nCedula: %s",ci[contador]);
		printf("\nTelefono: %s", tlfn[contador]);
		printf("\n..::----------------------------------::::.");
		printf("\n..::------INFORMACION----------::::.");
		printf("\n-> Kg Uva: %i ",kg_uva[contador]);
		printf("\n-> Tipo Uva: %i ",tipo[contador]);
		printf("\n-> Tamano Uva: %i ",tamano[contador]);
		printf("\n-> Monto por kilo: %i",m_p_kg[contador]);
		printf("\n-> Monto Inicial: %.2f ",m_inicial[contador]);
		printf("\n-> Aumento Efectuado: %.2f ",aum);
		printf("\n-> Rebaja Efectuada: %.2f ",reb);
		printf("\n-> Monto Total %.2f ",m_total[contador]);
		printf("\n..::-----------------------------::.");
		printf("\n >Ganancia percibida por el productor: %.2f", ganancia_p[contador]);
		printf("\n..::-----------------------------::.");
		contador++;
		
		printf("Desea una nueva operacion? \n 1 -> Si , lo deseo. \n 2 -> No, salir. \n -> :");
		scanf("%i",&iteracion);
		system("cls");
	}
	return 0;
}




----------------------FINAL CODIGO 1------------------------


Codigo 2 con  do {code} While (condition) :
---------------COMIENZO CODIGO 2------------------------


/*
 
 */

#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main(int argc, char **argv)
{
	char nombre_p[1000][15],apellido_p[1000][15];
	char nombre_Asoc[]="\"VINO UNEFA\" ";
	char rif_Asoc[]="1236708-0";
	char ci[1000][8],tlfn[1000][11],fecha[1000][10];
									/*Fecha Formato: DD-MM-AAAA*/
	int tipo[1000],tamano[1000],kg_uva[1000],m_p_kg[1000];
	float m_inicial[1000],m_total[1000],ganancia_p[1000],gananciaPorcentual_p[1000],aum=0,reb=0;
														//aum (aumento) , reb (rebaja)
	
	int iteracion=1;
	int contador=0;
	do{
		
		
		
		printf("..:__________Bienvenidos__________:..\n");
		printf("..:-------Solicitud de datos------:..\n");
		printf("\n-Ingrese >Nombre< del productor: "); scanf("%s",nombre_p[contador]);
		printf("\n-Ingrese >Apellido< del productor: "); scanf("%s",apellido_p[contador]);
		printf("\n-Ingrese >Cedula< del productor: "); scanf("%s",ci[contador]);
		printf("\n-Ingrese >Telefono< del productor: "); scanf("%s",tlfn[contador]);
		printf("\n-Ingrese FECHA [formato: DD-MM-AAAA] "); scanf("%s",fecha[contador]);
		printf("\n:-Digite monto Kgs de UVA [Entero]: "); scanf("%i",&kg_uva[contador]);
		
		printf("\n:-Digite monto inicial [por Kg(Uva)]: "); scanf("%i",&m_p_kg[contador]); 
			m_inicial[contador]=(m_p_kg[contador]*kg_uva[contador]);
		printf("\n DATO: Monto inicial ESTABLECIDO: %.2f \n",m_inicial[contador]);
		printf("\n Nota: [No obstante la calidad de la uva] Con fines procedimentales digite el porcentaje (en numeros decimales) de la ganacia a obtener el productor por total de venta realizada. Ej: 30%%, ingrese 0.30 ");
		printf("\n-Ingrese >porcentaje< ganancia:"); scanf("%f",&gananciaPorcentual_p[contador]);
		
		printf("\n:-Digite Tipo de Uva [1 -> A , 2 -> B] "); scanf("%i",&tipo[contador]);
		printf("\n:-Digite Tamano de UVA [1 o 2]: "); scanf("%i",&tamano[contador]);
		
			if (tipo[contador]==1){
					
					if (tamano[contador]==1){ aum=200000; }else{ aum=300000; }
				
			}else{
				if (tamano[contador]==2){ reb=300000; }else{ reb=500000; }
			}
		
		m_total[contador]=((((m_inicial[contador])-reb)+aum));
		ganancia_p[contador]=(m_total[contador]*(gananciaPorcentual_p[contador]/100));
	
	 system("cls"); //Vaciar pantalla
		printf("..::--------------------------------::::..\n");
		printf("..::::::ASOCIACION DE VINICULTORES:::::..\n");
		printf("%s RIF: %s \n",nombre_Asoc,rif_Asoc);
		printf("..::----------------------------------::::.");
		printf("\n..::------COMPROBANTE #%i----Fecha: %s -----::::.",(contador+1), fecha[contador]);
		printf("\n..::----------------------------------::::.");
		printf("\n ------- PRODUCTOR -------------");
		printf("\nNombre: %s %s",nombre_p[contador],apellido_p[contador]);
		printf("\nCedula: %s",ci[contador]);
		printf("\nTelefono: %s", tlfn[contador]);
		printf("\n..::----------------------------------::::.");
		printf("\n..::------INFORMACION----------::::.");
		printf("\n-> Kg Uva: %i ",kg_uva[contador]);
		printf("\n-> Tipo Uva: %i ",tipo[contador]);
		printf("\n-> Tamano Uva: %i ",tamano[contador]);
		printf("\n-> Monto por kilo: %i",m_p_kg[contador]);
		printf("\n-> Monto Inicial: %.2f ",m_inicial[contador]);
		printf("\n-> Aumento Efectuado: %.2f ",aum);
		printf("\n-> Rebaja Efectuada: %.2f ",reb);
		printf("\n-> Monto Total %.2f ",m_total[contador]);
		printf("\n..::-----------------------------::.");
		printf("\n >Ganancia percibida por el productor: %.2f", ganancia_p[contador]);
		printf("\n..::-----------------------------::.");
		contador++;
		
		printf("Desea una nueva operacion? \n 1 -> Si , lo deseo. \n 2 -> No, salir. \n -> :");
		scanf("%i",&iteracion);
		system("cls");
	}while(iteracion==1);
	return 0;
}




---------------------FINAL CODIGO 2------------------------



Codigo 3 con for(int i,condition, operation):
---------------COMIENZO CODIGO 3------------------------


/*
 
 */

#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main(int argc, char **argv)
{
	char nombre_p[1000][15],apellido_p[1000][15];
	char nombre_Asoc[]="\"VINO UNEFA\" ";
	char rif_Asoc[]="1236708-0";
	char ci[1000][8],tlfn[1000][11],fecha[1000][10];
									/*Fecha Formato: DD-MM-AAAA*/
	int tipo[1000],tamano[1000],kg_uva[1000],m_p_kg[1000];
	float m_inicial[1000],m_total[1000],ganancia_p[1000],gananciaPorcentual_p[1000],aum=0,reb=0;
														//aum (aumento) , reb (rebaja)
	
	
	int iteracion=1;
	for(int contador=0;contador<1000;contador++){
		
		
				
		printf("..:__________Bienvenidos__________:..\n");
		printf("..:-------Solicitud de datos------:..\n");
		printf("\n-Ingrese >Nombre< del productor: "); scanf("%s",nombre_p[contador]);
		printf("\n-Ingrese >Apellido< del productor: "); scanf("%s",apellido_p[contador]);
		printf("\n-Ingrese >Cedula< del productor: "); scanf("%s",ci[contador]);
		printf("\n-Ingrese >Telefono< del productor: "); scanf("%s",tlfn[contador]);
		printf("\n-Ingrese FECHA [formato: DD-MM-AAAA] "); scanf("%s",fecha[contador]);
		printf("\n:-Digite monto Kgs de UVA [Entero]: "); scanf("%i",&kg_uva[contador]);
		
		printf("\n:-Digite monto inicial [por Kg(Uva)]: "); scanf("%i",&m_p_kg[contador]); 
			m_inicial[contador]=(m_p_kg[contador]*kg_uva[contador]);
		printf("\n DATO: Monto inicial ESTABLECIDO: %.2f \n",m_inicial[contador]);
		printf("\n Nota: [No obstante la calidad de la uva] Con fines procedimentales digite el porcentaje (en numeros decimales) de la ganacia a obtener el productor por total de venta realizada. Ej: 30%%, ingrese 0.30 ");
		printf("\n-Ingrese >porcentaje< ganancia:"); scanf("%f",&gananciaPorcentual_p[contador]);
		
		printf("\n:-Digite Tipo de Uva [1 -> A , 2 -> B] "); scanf("%i",&tipo[contador]);
		printf("\n:-Digite Tamano de UVA [1 o 2]: "); scanf("%i",&tamano[contador]);
		
			if (tipo[contador]==1){
					
					if (tamano[contador]==1){ aum=200000; }else{ aum=300000; }
				
			}else{
				if (tamano[contador]==2){ reb=300000; }else{ reb=500000; }
			}
		
		m_total[contador]=((((m_inicial[contador])-reb)+aum));
		ganancia_p[contador]=(m_total[contador]*(gananciaPorcentual_p[contador]/100));
	
	 system("cls"); //Vaciar pantalla
		printf("..::--------------------------------::::..\n");
		printf("..::::::ASOCIACION DE VINICULTORES:::::..\n");
		printf("%s RIF: %s \n",nombre_Asoc,rif_Asoc);
		printf("..::----------------------------------::::.");
		printf("\n..::------COMPROBANTE #%i----Fecha: %s -----::::.",(contador), fecha[contador]);
		printf("\n..::----------------------------------::::.");
		printf("\n ------- PRODUCTOR -------------");
		printf("\nNombre: %s %s",nombre_p[contador],apellido_p[contador]);
		printf("\nCedula: %s",ci[contador]);
		printf("\nTelefono: %s", tlfn[contador]);
		printf("\n..::----------------------------------::::.");
		printf("\n..::------INFORMACION----------::::.");
		printf("\n-> Kg Uva: %i ",kg_uva[contador]);
		printf("\n-> Tipo Uva: %i ",tipo[contador]);
		printf("\n-> Tamano Uva: %i ",tamano[contador]);
		printf("\n-> Monto por kilo: %i",m_p_kg[contador]);
		printf("\n-> Monto Inicial: %.2f ",m_inicial[contador]);
		printf("\n-> Aumento Efectuado: %.2f ",aum);
		printf("\n-> Rebaja Efectuada: %.2f ",reb);
		printf("\n-> Monto Total %.2f ",m_total[contador]);
		printf("\n..::-----------------------------::.");
		printf("\n >Ganancia percibida por el productor: %.2f", ganancia_p[contador]);
		printf("\n..::-----------------------------::.");

		//Por si una salida deseada
		printf("Desea una nueva operacion? \n 1 -> Si , lo deseo. \n 2 -> No, salir. \n -> :");
		scanf("%i",&iteracion);
		system("cls");
		if (iteracion==2){
			break;
			}
	}
	return 0;
}




---------------------FINAL CODIGO 3------------------------


03-May-2020 10:15
Nacho Cabanes (+83)

Si lo que quieren es que pidas datos de cada nuevo productor usando un bucle, tu lógica parece razonable.

Un "break" rompe la lógica de un "for" y es una orden "no deseable", así que en ese caso sería más elegante preguntar cuántos productores hay.

Si te lo permiten, yo usaría "string" en vez de "char[]".

Pero insisto, el resto me parece correcto en un primer vistazo.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)