Untitled

 avatar
unknown
batchfile
2 years ago
2.2 kB
6
Indexable
Algoritmo Ahorro
	
	definir ingresos, meta_ahorro como real;
	definir gastos_fijos, gastos_variables como real;
	definir total_gastos, presupuesto_disponible, ahorro_backtracking, ahorro_actual como real;
	
	escribir "Ingresos:";
	leer ingresos;
	
	escribir "Gastos Fijos:";
	para i <- 1 hasta 5 hacer
		leer gastos_fijos;
	fin para
	
	escribir "Gastos Variables:";
	para i <- 1 hasta 5 hacer
		leer gastos_variables;
	fin para
	
	escribir "Meta de Ahorro:";
	leer meta_ahorro;
	
	total_gastos <- sumarGastos(gastos_fijos, gastos_variables);
	presupuesto_disponible <- ingresos - total_gastos;
	
	si presupuesto_disponible < 0 entonces
		escribir "¡Cuidado! Tus gastos superan tus ingresos.";
	sino
		ahorro_backtracking <- 0;
		ahorro_backtracking <- backtrack(gastos_variables, presupuesto_disponible, 0, 0, meta_ahorro, ahorro_backtracking);
		
		si ahorro_backtracking >= meta_ahorro entonces
			escribir "¡Felicidades! Has alcanzado tu meta de ahorro.";
			escribir "No has alcanzado tu meta de ahorro.";
		fin si
		
		escribir "Ahorro máximo (Backtracking): " + ahorro_backtracking;
	fin si
	
	
	funcion sumarGastos(gastos_fijos, gastos_variables)
		definir suma como real;
		suma <- 0;
		
		para i <- 1 hasta 5 hacer
			suma <- suma + gastos_fijos[i];
		fin para
		
		para i <- 1 hasta 5 hacer
			suma <- suma + gastos_variables[i];
		fin para
		
		retornar = suma;
	fin funcion
	
	funcion backtrack(gastos_variables, presupuesto_disponible, indice, ahorro_actual, meta_ahorro, ahorro_backtracking)
		si indice = 5 entonces
			si ahorro_actual >= meta_ahorro entonces
				ahorro_backtracking <- max(ahorro_backtracking, ahorro_actual);
			fin si
		sino
			ahorro_backtracking <- backtrack(gastos_variables, presupuesto_disponible, indice + 1, ahorro_actual, meta_ahorro, ahorro_backtracking);
			
			si ahorro_actual + gastos_variables[indice] <= presupuesto_disponible entonces
				ahorro_backtracking <- backtrack(gastos_variables, presupuesto_disponible, indice + 1, ahorro_actual + gastos_variables[indice], meta_ahorro, ahorro_backtracking);
			fin si
		fin si
		
		retornar = ahorro_backtracking;
	fin funcion
	
FinAlgoritmo
Editor is loading...