[ Foro de C++ ]

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

03-May-2020 09:30
Junior Espaa
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 (+55)

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.






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...