Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - m@o_614

#361
Java / Error en llamada a metodo
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

Código (java) [Seleccionar]
public class Impuestos {
//variables globales de uso interno del programa
final int MESES=12;
int mes_elegido=1;
String meses[]=new String[MESES];
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
String meses[]=new String[MESES];
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

Código (java) [Seleccionar]
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
Código (java) [Seleccionar]
por_isr=r.monto(gan_bruta);

de antemano gracias
#362
Java / Re: juego del gato
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
Java / Re: juego del gato
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
Java / juego del gato
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

Código (java) [Seleccionar]
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
System.out.println(" ");
System.out.println("|");
}
System.out.println("\n");
System.out.println("_____");
System.out.println("\n");
}
}
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.println(" "+fila);
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
#365
Foro Libre / Re: ¿A que le tienes miedo?
3 Mayo 2012, 21:28 PM
A las alturas  :( les tengo pavor,terror, pánico
#366
Programación C/C++ / Re: Juego del gato
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'))
                printf("%c",gato[i][j]);
            else
               printf(" ");
               printf("|");
        }
        printf("\n");
           printf("______");
        printf("\n");
    }
}

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): ");
            scanf("%d",&fila);
            printf("Dime la columna(1 a 3): ");
            scanf("%d",&columna);
            letra=jugador[i];
            gato[fila-1][columna-1]=letra;
            imprimir_tablero(gato);
            ganador=verificar_ganador(gato);
            printf("Pulse enter para continuar...\n");
            getch();
            system("cls");
            turno++;
        }
    }while((turno<=MAX_TURNO)&&(!ganador));
}


de antemano gracias
#367
Programación C/C++ / Re: Juego del gato
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 :o 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 C/C++ / Re: Juego del gato
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'))
                printf("%c",gato[i][j]);
            else
               printf(" ");
               printf("|");
        }
        printf("\n");
           printf("______");
        printf("\n");
    }
}

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): ");
            scanf("%d",&fila);
            printf("Dime la columna(1 a 3): ");
            scanf("%d",&columna);
            letra=jugador[i];
            gato[fila-1][columna-1]=letra;
            imprimir_tablero(gato);
            verificar_ganador(gato);
            printf("Pulse enter para continuar...\n");
            getch();
            system("cls");
            turno++;
        }
    }while(turno<=MAX_TURNO);
}


gracias
#369
Java / Re: Herencia
20 Abril 2012, 00:46 AM
muchas gracias ;D

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
Java / Re: Herencia
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:
Código (java) [Seleccionar]
Electrodomestico e=new Electrodomestico("Whirpool",7000.50,1);

me aparece the local variable e is never read

saludos