|
361
|
Programación / Java / Error en llamada a metodo
|
en: 13 Mayo 2012, 01:12 am
|
Saludos Tengo el siguiente codigo que me calcula los impuestos(ISR, IVA,etc...) de los ingresos y gatos que le voy ingresando de acuerdo al mes que se elija, pero en el método calculaImpuestos cuando me imprime ISR(por_isr) me lo imprime en 0, cuando deberia ser 11%, 15% o 20% de acuerdo al rango en el que se encuentre public class Impuestos { //variables globales de uso interno del programa final int MESES=12; int mes_elegido=1; double rango_monto[][]=new double[3][2]; int porcentaje_ISR[]=new int[3]; //Arreglo de ingresos y gastos final double ingresos[]=new double[MESES]; final double gastos[]=new double[MESES]; final double IVA=16.0; final double POR_RET_IVA=10.0; final double POR_RET_ISR=10.0; public void inicializa (String meses [], double rango_monto [][], int porcentaje_ISR []){ this.meses[0]="Enero"; this.meses[1]="Febrero"; this.meses[2]="Marzo"; this.meses[3]="Abril"; this.meses[4]="Mayo"; this.meses[5]="Junio"; this.meses[6]="Julio"; this.meses[7]="Agosto"; this.meses[8]="Septiembre"; this.meses[9]="Octubre"; this.meses[10]="Noviembre"; this.meses[11]="Diciembre"; this.rango_monto[0][0]=0; this.rango_monto[0][1]=10000.00; this.rango_monto[1][0]=10000.00; this.rango_monto[1][1]=20000.00; this.rango_monto[2][0]=20000.00; this.rango_monto[2][1]=10000000.00; this.porcentaje_ISR[0]=11; this.porcentaje_ISR[1]=15; this.porcentaje_ISR[2]=20; } public double monto(double gan_bruta) { double por_isr; if((gan_bruta>rango_monto[0][0])&&(gan_bruta<=rango_monto[1][0])) por_isr= porcentaje_ISR[0]; else if((gan_bruta>rango_monto[1][0])&&(gan_bruta<=rango_monto[2][0])) por_isr= porcentaje_ISR[1]; else if(gan_bruta>rango_monto[2][0]) por_isr= porcentaje_ISR[2]; else por_isr=0; return(por_isr); } public static void main (String[] args ) { //constantes final int CAPTURA_MES=1; final int CAP_INGRESO=2; final int CAP_GASTOS=3; final int L_INGR_ANUALES=4; final int L_GAST_ANUALES=5; final int CALC_IMPUESTOS=6; final int SALIR=7; final int MESES=12; //variables globales de uso interno del programa int porcentaje_ISR[]=new int[3]; double rango_monto[][]=new double[3][2]; //variables del programa modificables por el usuario Impuestos c=new Impuestos(); c.inicializa(meses,rango_monto,porcentaje_ISR); int opcion; boolean continuar = true; do { c.mostrarMenu(); opcion=ScanF.leeInt(); System. out. println(" "+opcion ); switch(opcion) { case CAPTURA_MES: c.capturaMes(); break; case CAP_INGRESO: c.capturaIngreso(); break; case CAP_GASTOS: c.capturaGasto(); break; case L_INGR_ANUALES: c.listaIngresoAnual(); break; case L_GAST_ANUALES: c.listaGastoAnual(); break; case CALC_IMPUESTOS: c.calculoImpuestos(); break; case SALIR: continuar = false; break; default:System. out. println("Opcion no valida!"); } if(continuar){ System. out. println("Presione tecla para continuar..."); } }while(continuar); } void capturaMes() { System. out. println("Establecer mes para captura"); for(int i=0,indice=0;i<MESES;i++,indice++) System. out. printf("%d) %s\n",indice +1,meses [i ]); System. out. println("Elige el mes (1 a 12):"); mes_elegido=ScanF.leeInt(); System. out. println(" "+mes_elegido ); if(mes_elegido > MESES) System. out. println("Mes no valido!"); else System. out. println("Se ha establecido el mes de captura en "+meses [mes_elegido -1]); } public void capturaIngreso() { float ingreso; System. out. println("Captura ingresos"); System. out. printf("Dame el ingreso del mes de "+meses [mes_elegido -1]+":"); ingreso=ScanF.leeInt(); System. out. println(" "+ingreso ); ingresos[mes_elegido-1] = ingreso; } public void capturaGasto() { float gasto; System. out. println("Captura gastos"); System. out. printf("Dame el gasto del mes de %s: ",meses [mes_elegido -1]); gasto=ScanF.leeInt(); System. out. println(" "+gasto ); gastos[mes_elegido-1] = gasto; } void listaIngresoAnual() { System. out. println("Mostrar lista de ingresos anual"); for(int i=0;i<MESES;i++) System. out. println(" "+meses [i ]+" = "+ingresos [i ]); } void listaGastoAnual() { System. out. println("Mostrar lista de gastos anual"); for(int i=0;i<MESES;i++) System. out. println(" "+meses [i ]+" = "+gastos [i ]); } void calculoImpuestos() { Impuestos r=new Impuestos(); double iva,subtotal,ret_isr,ret_iva,total,gan_bruta,isr,gan_neta,isr_pag,gasto_iva,iva_pag; double por_isr,ingreso_tot=0,gasto_tot=0; for(int i=0;i<MESES;i++) { ingreso_tot+=ingresos[i]; gasto_tot+=gastos[i]; } iva=(ingreso_tot*IVA)/100; subtotal=ingreso_tot+iva; ret_isr=(ingreso_tot*POR_RET_ISR)/100; ret_iva=(ingreso_tot*POR_RET_IVA)/100; total=subtotal-(ret_isr+ret_iva); gan_bruta=(ingreso_tot-gasto_tot); por_isr=r.monto(gan_bruta); isr=(gan_bruta*por_isr)/100; gan_neta=(gan_bruta-isr); isr_pag=(isr-ret_isr); gasto_iva=(gasto_tot*IVA)/100; iva_pag=(iva-gasto_iva-ret_iva); System. out. println("CALCULO DE IMPUESTOS"); System. out. println("***Tabla de Recibo de Honorarios***"); System. out. println("Ingresos\t\t"+ingreso_tot ); System. out. println("(+) IVA\t\t\t"+iva ); System. out. println("(=) Subtotal\t\t"+subtotal ); System. out. println("(-) Retención ISR\t"+ret_isr ); System. out. println("(-) Retención IVA\t"+ret_iva ); System. out. println("(=) Total\t\t"+total ); System. out. println("***Tabla Ganancias***"); System. out. println("Ingresos\t\t"+ingreso_tot ); System. out. println("(-) Gastos\t\t"+gasto_tot ); System. out. println("(=) Ganancia Bruta\t"+gan_bruta ); System. out. println("(-) ISR "+por_isr +"%\t\t"+isr ); System. out. println("(=) Ganancia Neta\t"+gan_neta ); System. out. println("***Tabla ISR***"); System. out. println("ISR "+por_isr +"%\t\t"+isr ); System. out. println("(-) ISR Retenido\t"+ret_isr ); System. out. println("(=) ISR a Pagar\t\t"+isr_pag ); System. out. println("***Tabla IVA***"); System. out. println("IVA\t\t\t"+iva ); System. out. println("(-) Gastos IVA\t\t"+gasto_iva ); System. out. println("(-) Retención IVA\t"+ret_iva ); System. out. println("(=) IVA a Pagar\t\t"+iva_pag ); } void mostrarMenu() { System. out. println("CALCULO DE IMPUESTOS ANUAL"); System. out. println("Menu principal:"); System. out. println("1. Establecer mes para la captura (mes actual es "+meses [mes_elegido -1]+")"); System. out. println("2. Captura de ingresos"); System. out. println("3. Captura de gastos"); System. out. println("4. Mostrar lista de ingresos anual"); System. out. println("5. Mostrar lista de gastos anual"); System. out. println("6. Calculo de impuestos anual"); System. out. println("7. Salir"); System. out. println("Opcion: "); } }
el error esta en la siguiente linea System. out. println("(-) ISR "+por_isr +"%\t\t"+isr );
y no se si se deba a que en la llamada a método estoy haciendo algo indebido por_isr=r.monto(gan_bruta);
de antemano gracias
|
|
|
362
|
Programación / Java / Re: juego del gato
|
en: 8 Mayo 2012, 22:04 pm
|
si el programa en C ya compila bien, en cuanto encuetra ganador termina el programa, lo que sucede es que apenas voy empezando en esto de Java y creo que me fallan algunos conceptos
saludos
|
|
|
363
|
Programación / Java / Re: juego del gato
|
en: 8 Mayo 2012, 21:16 pm
|
la clase ScanF no se necesita porque tengo dos clases en un mismo archivo la clase Gato y la clase ScanF por eso no se ocupa
|
|
|
364
|
Programación / Java / juego del gato
|
en: 8 Mayo 2012, 20:34 pm
|
Saludos Tengo este codigo que es en si una traducción de C, y me salen los siguientes errores en las líneas 35,58 y 78 que dice g cannot be resolved y no se si es porque tengo que utilizar herencia o por que public class Gato { final int MAX_FILA=3; final int MAX_COLUM=3; final int MAX_TURNO=9; char gato[][]; public Gato(){ gato=new char[MAX_FILA][MAX_COLUM]; } public int verificarFilas(){ int i,j,suma=0,ganador; for(i=0;i<MAX_FILA;i++){ for(j=0;j<MAX_COLUM;j++){ suma+=gato[i][j]; } if(suma==264){ System. out. println("El ganador es el jugador X"); ganador=1; return ganador; } else if(suma==237){ System. out. println("El ganador es el jugador O"); ganador=2; return ganador; } else ganador=0; } if(ganador==0) g.verificarColumnas(); return ganador; } public int verificarColumnas(){ int i,j,suma=0,ganador; for(i=0;i<MAX_FILA;i++){ for(j=0;j<MAX_COLUM;j++){ suma+=gato[j][i]; } if(suma==264){ System. out. println("El ganador es el jugador X"); ganador=1; return ganador; } else if(suma==237){ System. out. println("El ganador es el jugador O"); ganador=2; return ganador; } else ganador=0; } if(ganador==0) g.verificarDiagonal(); return ganador; } public int verificarDiagonal(){ int i,suma=0,ganador; for(i=0;i<MAX_FILA;i++) suma+=gato[i][i]; if(suma==264){ System. out. println("El ganador es el jugador X"); ganador=1; return ganador; } else if(suma==237){ System. out. println("El ganador es el jugador O"); ganador=2; return ganador; } else ganador=0; if(ganador==0) g.verificarDiagonalInv(); return ganador; } public int verificarDiagonalInv(){ int i,j,suma=0,ganador; for(i=2,j=0;j<MAX_COLUM;i--,j++) suma+=gato[i][j]; if(suma==264){ System. out. println("El ganador es el jugador X"); ganador=1; return ganador; } else if(suma==237){ System. out. println("El ganador es el jugador O"); ganador=2; return ganador; } else ganador=0; if(ganador==0) return ganador; } public void imprimirTablero(char gato[][]){ int i,j; for(i=0;i<MAX_FILA;i++){ for(j=0;j<MAX_COLUM;j++){ if((gato[i][j])=='X'||(gato[i][j])=='O') System. out. println(" "+gato [i ][j ]); else } } } public void turnoJugador(){ Gato g=new Gato(); final int MAX_JUG=2; int i,fila,columna,turno; char jugador[]={'X','O'},letra; turno=1; do { for(i=0;i<MAX_JUG;i++){ System. out. println("Es turno del jugador "+jugador [i ]); System. out. print("Dime la fila (1 a 3):"); fila=ScanF.leeInt(); System. out. print("Dame la columna (1 a 3):"); columna=ScanF.leeInt(); System. out. println(" "+columna ); letra=jugador[i]; gato[fila-1][columna-1]=letra; g.imprimirTablero(gato); } }while((turno<=MAX_TURNO)); } public static void main (String[] args ) { int i,ganador; final int MAX_JUG=2; System. out. println("Juego del Gato v1.0"); Gato g=new Gato(); g.turnoJugador(); ganador=g.verificarFilas(); if(ganador!=0) i=MAX_JUG+1; } }
gracias
|
|
|
366
|
Programación / Programación C/C++ / Re: Juego del gato
|
en: 30 Abril 2012, 03:20 am
|
pues aqui tengo el codigo, ahora ya compila bien a excepcion de dos errores que encontre, el primero que las primeras veces que le meto X u O a la matriz me verifica perfectamente si hay ganador o no, pero a partir como del 5to turno ya no lo hace me aparece que el ganador es X, cuando en realidad no hay ganador y el segundo que le implemente una bandera ganador para que el do-while me siga iterando mientras el numero de turnos sea menos o igual a 9 y la bandera sea igual a 0(osea que todavia no haya encontrado ganador)pero en vez de romper el ciclo inmediatamente cuando una de estas condiciones no se cumple me itera una vez más antes de salirse del ciclo. #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX_FILA 3 #define MAX_COLUM 3 #define MAX_JUG 2 #define MAX_TURNO 9 #define O_ASCII 79 #define X_ASCII 88 void turno_jugador(); void imprimir_tablero(char gato[MAX_FILA][MAX_COLUM]); int verificar_ganador(char gato[MAX_FILA][MAX_COLUM]); int main() { printf("Juego del Gato v1.0\n"); turno_jugador(); return 0; } void imprimir_tablero(char gato[MAX_FILA][MAX_COLUM]) { int i,j; for(i=0;i<MAX_FILA;i++) { for(j=0;j<MAX_COLUM;j++) { if((gato[i][j]=='X')||(gato[i][j]=='O')) else } } } int verificar_ganador(char gato[MAX_FILA][MAX_COLUM]) { int i,j,suma=0,ganador; for(i=0;i<MAX_FILA;i++) { for(j=0;j<MAX_COLUM;j++) { if((gato[i][j])==X_ASCII)//me falta validar para O tambien, pero eso despues suma=suma+gato[i][j]; } } if(suma==264) { printf("El ganador es el jugador X\n"); ganador=1; } else ganador=0; return ganador; } void turno_jugador() { int fila,columna,i,turno,ganador; char jugador[]={'X','O'},letra; char gato[MAX_FILA][MAX_COLUM]; turno=1; do { for(i=0;i<MAX_JUG;i++) { printf("Es turno del jugador %c\n",jugador [i ]); printf("Dime la fila (1 a 3): "); printf("Dime la columna(1 a 3): "); letra=jugador[i]; gato[fila-1][columna-1]=letra; imprimir_tablero(gato); ganador=verificar_ganador(gato); printf("Pulse enter para continuar...\n"); turno++; } }while((turno<=MAX_TURNO)&&(!ganador)); }
de antemano gracias
|
|
|
367
|
Programación / Programación C/C++ / Re: Juego del gato
|
en: 25 Abril 2012, 04:03 am
|
muchas gracias s00rk ya me fije en donde me estaba equivocando en validar segunda fila no era i=1,j=1 era i=1,j=0 y ya le agregue tambien la diagonal invertida int i,j,suma=0; for(i=0;i<MAX_FILA;i++) { if((gato[i][i])==X_ASCII)//VALIDAR DIAGONAL suma=suma+gato[i][i]; } if(suma==264) printf("El ganador es el jugador X\n"); for(i=2,j=0;j<MAX_COLUM;i--,j++)//VALIDA DIAGONAL INVERTIDA { if((gato[i][j]==X_ASCII)) suma=suma+gato[i][j]; } if(suma==264) printf("El ganador es el jugador X\n"); for(i=0,j=0;j<MAX_COLUM;j++)//VALIDA LA PRIMERA FILA { if((gato[i][j])==X_ASCII)//aqui tambien me falta validar para O pero eso ya despues suma=suma+gato[i][j]; } if(suma==264) printf("El ganador es el jugador X\n"); for(i=1,j=0;j<MAX_COLUM;j++)//VALIDA SEGUNDA FILA { if((gato[i][j])==X_ASCII) suma=suma+gato[i][j]; } if(suma==264) printf("El ganador es el jugador X\n"); for(i=2,j=0;j<MAX_COLUM;j++)//VALIDA TERCER FILA { if(gato[i][j]==X_ASCII) suma=suma+gato[i][j]; } if(suma==264) printf("El ganador es el jugador X\n");
todavia me faltan varias cosas más pero como todavia estoy un poco verde para programar voy a paso de tortuga
|
|
|
368
|
Programación / Programación C/C++ / Re: Juego del gato
|
en: 24 Abril 2012, 20:20 pm
|
saludos, no pude postear el resto del codigo antes por falta de tiempo, pero lo que intente hacer fue validar cuando hay un ganador pero tengo problemas por que no se como hacer que cheque todas las condiciones al mismo tiempo #define MAX_FILA 3 #define MAX_COLUM 3 #define MAX_JUG 2 #define MAX_TURNO 9 #define O_ASCII 237 #define X_ASCII 264 void turno_jugador(); void imprimir_tablero(char gato[MAX_FILA][MAX_COLUM]); void verificar_ganador(char gato[MAX_FILA][MAX_COLUM]); int main() { printf("Juego del Gato v1.0\n"); turno_jugador(); return 0; } void imprimir_tablero(char gato[MAX_FILA][MAX_COLUM]) { int i,j; for(i=0;i<MAX_FILA;i++) { for(j=0;j<MAX_COLUM;j++) { if((gato[i][j]=='X')||(gato[i][j]=='O')) else } } } void verificar_ganador(char gato[MAX_FILA][MAX_COLUM]) { int i,j,suma=0; for(i=0;i<MAX_FILA;i++) { if((suma+=gato[i][i])=X_ASCII)//VALIDAR DIAGONAL printf("El ganador es el jugador X\n"); } for(i=0,j=0;j<MAX_COLUM;j++)//VALIDA LA PRIMERA FILA { if((suma+=gato[i][j])==X_ASCII)//aqui tambien me falta validar para O pero eso ya despues printf("El ganador es el jugador X\n"); } for(i=1,j=1;j<MAX_COLUM;j++)//VALIDA LA SEGUNDA FILA { if((suma+=gato[i][j])==X_ASCII) printf("El ganador es el jugador X\n"); } for(i=2,j=2;j<MAX_COLUM;j++) { if(suma+=gato[i][j]==X_ASCII) printf("El ganador es el jugador X\n");//VALIDAR LA TERCERA FILA }/*para sacar las columnas solo inviertes el gato[j][i]*/ } void turno_jugador() { int fila,columna,i,turno=1; char jugador[]={'X','O'},letra; char gato[MAX_FILA][MAX_COLUM]; do { for(i=0;i<MAX_JUG;i++) { printf("Es turno del jugador %c\n",jugador [i ]); printf("Dime la fila (1 a 3): "); printf("Dime la columna(1 a 3): "); letra=jugador[i]; gato[fila-1][columna-1]=letra; imprimir_tablero(gato); verificar_ganador(gato); printf("Pulse enter para continuar...\n"); turno++; } }while(turno<=MAX_TURNO); }
gracias
|
|
|
369
|
Programación / Java / Re: Herencia
|
en: 20 Abril 2012, 00:46 am
|
muchas gracias oye puntoinfinito a cual de los dos códigos de refieres?? por que el mio aunque ya le quite los errores no me corre, me dice none applicable
|
|
|
370
|
Programación / Java / Re: Herencia
|
en: 19 Abril 2012, 20:04 pm
|
lo que sucede es que segun yo main deberia de ser static pero si lo pongo como static me aparece el siguiente mensaje de error: The method main cannot be declared static y si se lo quito en la linea de: Electrodomestico e=new Electrodomestico("Whirpool",7000.50,1);
me aparece the local variable e is never read saludos
|
|
|
|
|
|
|