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ú

Temas - m@o_614

#181
Programación C/C++ / problema if's anidados
27 Diciembre 2012, 01:11 AM
saludos estoy haciendo un programa que me tiene que:
generar 5 operaciones aritmeticas aleatorias, los números (aleatorios) deben estar comprendidos entre 10 y 1, y las operaciones deberán ser suma, resta multiplicación, división (en el caso de la división se realizará siempre una división entera y el primer número tendrá que ser mayor que el segundo) al final imprimir el número de aciertos t la calificación

pero el problema es que no me da bien el número de los aciertos, no se si es porque tengo muchos ifs anidados o porque no me calcula bien las operaciones que dan resultados negativos como:

5-7 =-2

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define OPERACIONES 5
int main()
{
    int i,numero1,numero2,respuesta,resultado,aciertos=0;
    char operacion;
    srand(time(NULL));
    for(i=0;i<OPERACIONES;i++)
    {
        numero1 = rand()% 11+1;
        numero2 = rand()% 11+1;
        operacion = rand()% 6+42;
        if(operacion==42||operacion==43||operacion==45||operacion==47)
        {
            if(operacion==47)
            {
                if(numero2>numero1)
                {
                    printf("%d %c %d = ",numero2,operacion,numero1);
                    scanf("%d",&respuesta);
                    resultado = numero2/numero1;
                }
                else
                {
                    printf("%d %c %d = ",numero1,operacion,numero2);
                    scanf("%d",&respuesta);
                    resultado = numero1/numero2;
                }
            }
            else
            {
                if(operacion==42)
                {
                    printf("%d %c %d = ",numero1,operacion,numero2);
                    scanf("%d",&respuesta);
                    resultado=numero1*numero2;
                }
                else if(operacion==43)
                {
                    printf("%d %c %d = ",numero1,operacion,numero2);
                    scanf("%d",&respuesta);
                    resultado=numero1+numero2;
                }
                else if(operacion==45)
                {
                    printf("%d %c %d = ",numero1,operacion,numero2);
                    scanf("%d",&respuesta);
                    resultado=numero1+numero2;
                }

            }
            if(respuesta==resultado)
               aciertos++;
        }
        else
            i--;
    }
    printf("\nTuviste %d aciertos, tu calificacion es %d\n",aciertos,aciertos*20);
    return 0;
}

de antemano gracias por sus respuestas  :)
#182
Programación C/C++ / warnings
21 Diciembre 2012, 01:08 AM
saludos

tengo el siguiente código de una lista simplemente enlazada, pero el problema es que me aparece un warning que dice:

return makes pointer from integer without a cast

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

typedef struct nodo
{
    int dato;
    struct nodo*sig;
}NODO;

NODO* crear_nodo(int x);
void insertar_cabeza(NODO **cabeza,int x);
NODO* buscar_elemento(NODO *cabeza);

int main()
{
    int i,num,x;
    NODO *cabeza,*ptr;
    cabeza = NULL;
    printf("Cuantos elementos quieres?\n");
    scanf("%d",&num);
    printf("Lista Simplemente Ligada!\n");
    for(i=0;i<num;i++)
    {
        printf("Dame el elemento %d\n",i+1);
        scanf("%d",&x);
        insertar_cabeza(&cabeza,x);
        system("cls");
    }

    for(ptr=cabeza;ptr!=NULL;ptr=ptr->sig)
        printf("\n%d\n",ptr->dato);
    buscar_elemento(cabeza);
    return 0;
}

NODO* crear_nodo(int x)
{
    NODO *p;
    p = (NODO*)malloc(sizeof(NODO));
    p->dato = x;
    p->sig = NULL;
    return p;
}

void insertar_cabeza(NODO **cabeza,int x)
{
    NODO *nuevo;
    nuevo = crear_nodo(x);
    nuevo->sig = *cabeza;
    *cabeza = nuevo;
}

NODO* buscar_elemento(NODO *cabeza)
{
    int elemento,encontro=0;
    NODO *indice;
    printf("Buscar elemento\n\n");
    printf("Cual elemento quieres buscar?\n");
    scanf("%d",&elemento);
    for(indice=cabeza;indice!=NULL;indice=indice->sig)
    {
        if(indice->dato==elemento)
           encontro=1;
        else
           encontro=0;
    }
    if(encontro)
       return indice->dato;
    else
       return 0;
}

de antemano gracias
#183
Programación General / Teoria del color
26 Noviembre 2012, 23:56 PM
Saludos

Estoy estudiando los diferentes modelos de color (RGB,CMY,CMYK, etc..) y tengo que resolver el siguiente problema que dice:

Transformar el pixel RGB de 8 bits/color primario (64, 128, 192) al modelo CMY normalizado

tengo entendido que la fórmula para transformar de  CMY a RGB es:

C: 1-R
M: 1-G
Y: 1-B

pero creo que con 8 bits es diferente

de antemano gracias
#184
Programación C/C++ / mensaje de error
21 Noviembre 2012, 22:19 PM
Saludos

que significa cuando cada vez que intento correr un programa (en codeblocks) me aparece un mensaje de error que dice la direccion donde tengo guardada la aplicacion y

failed.Nothing to be done.

pero aún asi el programa compila, por eso no entiendo por qué me aparece este mensaje

de antemano gracias
#185
Programación C/C++ / Programa de Gráficas
12 Noviembre 2012, 20:50 PM
Saludos

Estoy haciendo un programa de gráficas que me tiene que dar las coordenadas de una recta,  un circulo y un elipse, aún no lo he terminado porque el programa compila pero cuando entra al ciclo do-while se congela y no hace nada, no se por qué

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

void dibujar_recta();

int main()
{
    int opcion;
    printf("Graficas por Computadora\n");
    printf("Dibujo primitivas 2D\n");
    printf("Que desea hacer?\n");
    printf("1)Linea\n");
    printf("2)Circulo\n");
    printf("3)Elipse\n");
    scanf("%d",&opcion);
    switch(opcion)
    {
        case 1:
           dibujar_recta();
           break;
        case 2://todavia me falta esta parte
           break;
        case 3://todavia me falta esta parte
           break;
        default:
           printf("Opcion no valida\n");
    }
    return 0;
}

void dibujar_recta()
{
    int pi_x,pf_x,pi_y,pf_y,m,inc_x,inc_y,Pk=0,inc_y2,inc_x2,k,num,Xk,Yk;
    printf("Dame el punto inicial(x,y):\n");
    scanf("%d%d",&pi_x,&pi_y);
    printf("Dame el punto final(x,y):\n");
    scanf("%d%d",&pf_x,&pf_y);
    system("cls");

    m = (pf_y-pi_y)/(pf_x-pi_x);

    printf("pixel inicial = (%d,%d)\n",pi_x,pi_y);
    inc_x = pf_x-pi_x;
    inc_y = pf_y-pi_y;
    inc_y2 = 2*inc_y;
    inc_x2 = 2*inc_x;

    printf("%cx = %d\n",30,inc_x);
    printf("%cy = %d\n",30,inc_y);
    printf("2%cy = %d\n",30,inc_y2);
    printf("2%cy - 2%cx = %d - %d = %d\n",30,30,inc_y2,inc_x2,inc_y2-inc_x2);
    Pk = 2*inc_y-inc_x;
    printf("Pk = 2%cy - %cx = %d - %d = %d\n\n",30,30,inc_y2,inc_x,Pk);
    Xk = pi_x;
    Yk = pi_y;

    printf("Hasta que numero quieres calcular?\n");
    scanf("%d\n",&num);
    printf("K\tPk\t(Xk+1,Yk+1)\n");
    k=0;
    do
    {
        printf("%d\t%d",k,Pk);
        if(Pk>=0)
        {
            Pk = Pk+inc_y2-inc_x2;
            Xk++;
            Yk++;
        }
        else
        {
            Pk = Pk+inc_y2;
            Xk++;
        }
        printf("(%d,%d)\n",Xk,Yk);
        k++;
    }while(k<=num);
}


de antemano gracias
#186
Programación C/C++ / función random
5 Noviembre 2012, 19:35 PM
Saludos

Tengo una duda con respecto a la función random

Si quisiera generar numeros aleatorios del 0 al 10 por ejemplo, sería algo como
rand()%11; pero que pasa cuando de esos números del 0 al 10 no quiero que se generen el 6 y el 4, por ejemplo.

¿Cómo podría hacer una excepción de algunos números?

de antemano gracias
#187
Dudas Generales / convertir a decibeles
25 Septiembre 2012, 21:43 PM
Saludos

Alguien que me pueda decir cuál es la fórmula para calcular decibeles, es que tengo una tabla de 3 columnas para completar y me dan potencia inicial, potencia final y decibeles, por ejemplo:

potencia inicial = 60
potencia final = 55mW
decibeles = 29.62 decibeles

yo tenía entendido que la fórmula era

10 log(pot final/potencia inicial)

pero no me da los resultados

de antemano gracias
#188
Dudas Generales / problemas de potencia
21 Septiembre 2012, 21:39 PM
Saludos necesito ayuda para resolver el siguiente problema:

2.¿Con cuánta potencia llegará una señal de 15 decibeles después de recorrer 630 metros de cierto cable que atenúa 2.50 dB cada 500 pies?

1 pie       →  0.3048 metros        x = (500) (0.3048)
500 pies  →  x                           x = 152.4 metros

primero hice una regla de 3 para convertir de pies a metros, después

2.0  atenuación → 36.1% potencia perdida           x = (36.1) (2.5)= 90.25
2.5 atenuación → x                                    x = 90.25/2.0=45.1% potencia perdida

hice otra regla de 3 porque según una tabla 2.0 de atenuación equivale a 36.1% de potencia perdida( y en el problema me están pidiendo la potencia)

y por último dividí 630 sobre 152.4 para saber exactamente cuántas veces se atenúan  2.50 decibeles

630/152.4 = 4.13

pero hasta aquí me quedé ya no sé qué más hacer  :-\ y quería saber si alguien me pudiera dar una pista

de antemano gracias

ES UN POCO URGENTE
#189
Saludos

estoy leyendo un libro de estructuras de archivos y me esta costando un poco entender algunas definiciones y esperaba que alguien me pudiera explicar que quiere decir con que los costos varian en el almacenamiento secundario y por qué es esto:

en el almacenamiento secundario el costo de recuperación varia de unas partes de la información a otras, en RAM todos los accesos tienen el mismo costo

gracias
#190
Saludos estoy haciendo el siguiente código que me tiene que leer un vector de longitud n ordenado ascendente y un elemento x del mismo tipo que los
elementos del vector, intercalar x en el vector v de manera que siga ordenado.
todo esto sin utilizar funciones, solo arreglos

y llevo lo siguiente pero mi problema es en la parte que me tiene que intercalar el elemento x en el vector que no se si esta bien hecha

#include <stdio.h>
#include <stdlib.h>
#define MAX 20

/* Leer un vector de longitud n ordenado ascendente y un elemento x del mismo tipo que los
   elementos del vector, intercalar x en el vector v de manera que siga ordenado.
*/

int main()
{
    int n,i,j,v[MAX],aux,x;
    printf("Dame longitud del vector\n");
    scanf("%d",&n);
    printf("Imprimir vector\n");
    for(i=0;i<n;i++)
    {
        printf("Imprimir elemento %d\n",i);
        scanf("%d",&v[i]);
    }
    printf("Orden ascendente\n");
    for(j=0;j<n;j++)
    {
        for(i=0;i<n;i++)
        {
            if(v[i+1]>v[i])
            {
                aux=v[i+1];
                v[i+1]=v[i];
                v[i]=aux;
            }
        }
    }
    for(i=0;i<n;i++)
    {
        printf("%d\n",v[i]);
    }
    printf("Dame elemento a intercalar\n");
    scanf("%d",&x);
    for(i=0;i<=n;i++)//Aqui le estoy creando una posicion mas al arreglo
    {
        if(x > v[i])
        {
            for(j=n;j>v[i];j--)
            {
                v[j]=v[j-1];/*Aqui recorro los elementos para insertar
                              el elemento x*/
            }
        }
    }
    return 0;
}
me falta todavia la parte en la que se inserta el elemento x en la posicion correcta sin desordenar el vector

gracias
#191
Programación C/C++ / Programa for
30 Junio 2012, 03:33 AM
Saludos estoy haciendo este programa que me lee varios números y me da la suma, promedio, mayor y menor pero el problema que tengo es con el menor ya que no se como hacerlo sin tener que utilizar un vector, solo con el for

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

/*Leer n valores enteros e imprimir la suma, promedio, producto, el mayor y el menor*/

int main()
{
    int cantidad,numero,i,suma=0,producto=1,mayor=0,menor=0;
    float promedio;
    printf("Dame el numero de enteros\n");
    scanf("%d",&cantidad);
    for(i=0;i<cantidad;i++)
    {
        printf("Numero\n");
        scanf("%d",&numero);
        suma+=numero;
        producto*=numero;
        if(numero>mayor)
           mayor=numero;
        else
           menor=numero;
    }
    printf("La suma es: %d\n",suma);
    printf("El producto es: %d\n",producto);
    promedio= (float)suma/cantidad;
    printf("El promedio es: %.2f\n",promedio);
    printf("El mayor es: %d\n",mayor);
    printf("El menor es: %d\n",menor);
    return 0;
}


gracias
#192
Programación C/C++ / series en C
29 Junio 2012, 04:58 AM
Saludos tengo el siguiente programa que me calcula e imprime la siguiente serie:

a) 1/1+1/2+1/3......1/n   n seria el numero que el usuario le de

pero no me imprime el calculo correcto y no se por qué

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

int main()
{
    int i,n;
    float suma=0;
    printf("Dame el numero de terminos\n");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        suma= suma+1/i;
    printf("a) %.2f",suma);
    return 0;
}


de antemano gracias
#193
Programación C/C++ / operaciones aleatorias
26 Junio 2012, 00:42 AM
Saludos tengo que hacer un programa que me genere operaciones aleatorias con numeros aleatorios, tengo entendido que la función random se utiliza así para ue me genere los numeros pero no se como hacer para que me de +, - *, / al azar

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define OPERACIONES 5

int main()
{
    int i,numero,numero2;
    char operacion;
    srand(time(NULL));
    for(i=0;i<OPERACIONES;i++)
    {
        numero = rand()%11;
        numero2 = rand()%11;
        operacion = rand()%???????;// Aqui no se que poner
        printf("%d  %d\n",numero,operacion,numero2);
    }
    return 0;
}


gracias
#194
Java / asociacion y multiplicidad
15 Junio 2012, 23:49 PM
Saludos

Alguien que me diga como puedo traducir de un diagrama UML a codigo una asociación entre dos clases que tiene como multiplicidad 1.......*, tengo entendido que significa que una clase puede tener  ninguna o muchas instancia de la otra clase pero no se como implementarlo

gracias
#195
Java / Vector de objetos
13 Junio 2012, 21:39 PM
Saludos

estoy utilizando el API de Java para crear un vector de objetos tipo Gasto
Código (java) [Seleccionar]
class Gasto{
public String concepto;
public float monto;
public float iva;
public float total;
public Fecha mifecha;

public Gasto(String concepto,float monto,float iva,float total,Fecha mifecha){
this.concepto=concepto;
this.monto=monto;
this.iva=iva;
this.total=total;
this.mifecha=mifecha;
}
}


pero en la clase ManejadorGastos en su método agregar sólo utiliza los atributos concepto,monto y fecha.

Código (java) [Seleccionar]
class ManejadorGastos{
private Gasto gasto=null;//agregacion
private Vector<Gasto> vector;

public ManejadorGastos(){
vector = new Vector<Gasto>();
}

public void agregarGasto(String concepto,float monto,Fecha fecha){
Gasto g;
g = new Gasto(concepto,monto,fecha);
vector.add(g);
}
}
pero en g=new Gasto me aparece un error, la clase Fecha ya la tengo implementada pero no la puse porque es muy larga

gracias
#196
Java / type mismatch
11 Junio 2012, 02:22 AM
Saludos tengo un problema con mi programa que es el siguiente,(no posteo el código completo porque es demasiado largo)

Código (java) [Seleccionar]
class Ingreso{
String concepto[];
String RFC[];
float monto;
int mes;
Ingreso enlace;

public Ingreso(){
String concepto[]=new String[30+1];
String RFC[]=new String[21+1];
monto=0;
mes=1;
enlace=null;
}
}


despues en el main le instancio un objeto de tipo Ingreso:
Ingreso ing= new Ingreso();

y ya que mando a llamar a un método  capturaIngreso

Código (java) [Seleccionar]
public void capturaIngreso(Ingreso ing)
{
float ingreso;
System.out.println("Captura ingresos");
System.out.println("Dame un ingreso para el mes de "+meses[mes_elegido-1]+":");
ingreso=ScanF.leeFloat();
System.out.println(" "+ingreso);
System.out.println("Provee datos para el ingreso "+reg+".");
if(reg>INGRESOS)
System.out.println("no hay mas espacio");
System.out.println("RFC:");
ing.RFC= ScanF.leeString();//aqui es el error
System.out.println("Concepto:");
System.out.println("Monto:");
ing.monto=ScanF.leeFloat();
ing.mes=mes_elegido;
++reg;
}


me sale un error que dice type mismatch cannot convert from String to String[] y no se que estoy haciendo mal

de antemano gracias
#197
Java / variables globales
10 Junio 2012, 00:02 AM
Saludos

Tengo entendido que las variables globales no existen, pero me pregunto si hay alguna manera de declarar alguna variable en el main y que a la hora de mandar llamar un método está pueda utilizarse en el, tal como se hace en el lenguaje C???

gracias

#198
Java / clase Vector
5 Junio 2012, 22:16 PM
Saludos estoy utilizando la clase Vector del API de Java, para un programa que me implementa 3 clases una tupla y dos administradoras de tuplas, esto es lo que llevo hecho por lo pronto:

Código (java) [Seleccionar]
import java.util.Vector;

class Materia{
public String clave,nombre;

public Materia(String clave,String nombre){
this.clave=clave;
this.nombre=nombre;
}
}

class Fila{
private Vector<Materia> fila;

public Fila(){
fila=new Vector<Materia>();
}

public void agregar(String clave,String nombre){
Materia m;
m=new Materia(clave,nombre);
fila.add(m);
}

public Materia dameSiguiente(){
}
}

class Pila{
private Vector<Materia> pila;

public Pila(){
pila=new Vector<Materia>();
}

public void push(String clave,String nombre){
Materia m;
m=new Materia(clave,nombre);
pila.add(m);
}

public Materia pop(){
if(vacia()){
System.out.println("Error!! Pila vacia");
}
return;
}
public boolean vacia(){
return tope == -1;
}
}

public class FilaYPila {

public static void main(String[] args) {
Fila fila= new Fila();
Pila pila= new Pila();
Materia mat;

fila.agregar("CC200","Programación Orientada a Objetos");
fila.agregar("CC201","Taller de Programación Orientada a Objetos");
fila.agregar("CC202","Estructuras de Datos");
fila.agregar("CC203","Taller de Estructuras de Datos");

pila.push("CC200","Programación Orientada a Objetos");
pila.push("CC201","Taller de Programación Orientada a Objetos");
pila.push("CC202","Estructura de Datos");
pila.push("CC203","Taller de Estructuras de Datos");

System.out.println("Imprimiendo elementos de la fila");
mat=fila.dameSiguiente();
System.out.println(mat);  //Imprimase "CC200 Programacion Orientada a Objetos"
mat=fila.dameSiguiente();
System.out.println(mat);  //Imprimase "CC201 Taller de Programacion Orientada a Objetos"
mat=fila.dameSiguiente();
System.out.println(mat);
mat=fila.dameSiguiente();
System.out.println(mat);

System.out.println("Imprimiento elementos de la pila");
mat=pila.pop();
System.out.println(mat);  //Imprimase "CC203 Taller de Estructuras de Datos"
mat=pila.pop();
System.out.println(mat);  //Imprimase "CC202 Estructuras de Datos"
mat=pila.pop();
System.out.println(mat);
mat=pila.pop();
System.out.println(mat);
}

}
mi duda la tengo en la función vacia, que la tengo que utilizar para saber si puedo desapilar un objeto o no, pero no se si tengo que implementarla yo como lo estoy haciendo o si no porque ya esta en el API

gracias
#199
Saludos estoy haciendo el siguiente codigo de listas enlazadas que me ingresen datos por el final de la lista, todavia me cuesta trabajo comprender esto de las listas y es por eso que solamente tengo una funcion de los cases hecha, pero me marca errores como:

dereferencing pointer to incomplete type y no entiendo que es lo que estoy haciendo mal

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

typedef struct info
{
    int dato;
    struct lista *sig;
}L;

void insertar_final(int x,L *lista);

int main()
{
    L *lista;//Aqui coloco el puntero hacia la estructura
    lista= NULL;//Lo inicializo en NULL para indicar que esta vacia
    int opcion,continuar=1,x;
    do
    {
        printf("Menu!\n");
        printf("1) Insertar al final\n");
        printf("2) Mostrar lista\n");
        printf("3) Buscar elemento\n");
        printf("4) Busqueda recursiva\n");
        printf("5) Contar elementos en la lista\n");
        printf("6) Salir\n");
        scanf("%d",&opcion);
        switch(opcion)
        {
            case 1:
               printf("Dame el dato que deseas insertar:\n");
               scanf("%d",&x);
               insertar_final(x,lista);//le paso el dato que deseo colocar como primer nodo y el puntero
               break;
            case 2:
               //no lo he terminado
               break;
            case 3:
            //no lo he terminado
               break;
            case 4:break;
            //no lo he terminado
            case 5:break;
            //no lo he terminado
            case 6:
               continuar=0;
               break;
            default:
               printf("Opcion no valida\n");
        }
    }while(continuar);
    return 0;
}

void insertar_final(int x,L *lista)
{
    L *ultimo;//otro puntero ahora hacia el ultimo nodo
    ultimo->sig=(L*)malloc(sizeof(L));//le asigno memoria (creo nuevo nodo)
    ultimo->sig->dato= x;//le asigno el elemento que queria
    ultimo->sig->sig=NULL;
    ultimo= ultimo->sig;
}
#200
Java / clase abstracta y herencia
27 Mayo 2012, 18:25 PM
Saludos estoy haciendo este programa para aprender de clases abstractas,herencia y polimorfismo

Código (java) [Seleccionar]
abstract class Persona{
private String nombre;
private String direccion;
private String telefono;
private String rfc;

public Persona(String nombrex,String direccionx,String telefonox,
String rfcx){
fijaNombre(nombrex);
fijaDireccion(direccionx);
fijaTelefono(telefonox);
fijaRFC(rfcx);
}

public void fijaNombre(String nombrex){
nombre=nombrex;
}

public void fijaDireccion(String direccionx){
direccion=direccionx;
}

public void fijaTelefono(String telefonox){
telefono=telefonox;
}

public void fijaRFC(String rfcx){
rfc=rfcx;
}

public String dameNombre(){
return nombre;
}

public String dameDireccion(){
return direccion;
}

public String dameTelefono(){
return telefono;
}

public String dameRFC(){
return rfc;
}

public String concatenaInfo(){
return dameNombre()+" "+dameDireccion()+" "+dameTelefono()+" "+dameRFC();
}
}

class PersonaFisica extends Persona{
private String claveIFE;

public PersonaFisica(String nombrex,String direccionx,String telefonox,
String rfcx,String claveIFEx){
super(nombrex,direccionx,telefonox,rfcx);
fijaClaveIFE(claveIFEx);
}

public void fijaClaveIFE(String claveIFEx){
claveIFE=claveIFEx;
}

public String dameClaveIFE(){
return claveIFE;
}

public String concatenaInfo(){
return super.concatenaInfo()+" "+dameClaveIFE();
}
}

class PersonaMoral extends Persona{
private PersonaFisica representante;

public PersonaMoral(String nombrex,String direccionx,String telefonox,
String rfcx,PersonaFisica representantex){
super(nombrex,direccionx,telefonox,rfcx);
fijaRepresentante(representantex);
}

public void fijaRepresentante(PersonaFisica representantex){
representante=representantex;
}

public PersonaFisica dameRepresentante(){
return representante;
}

public String concatenaInfo(){
return super.concatenaInfo()+" "+dameRepresentante();
}
}

public class PolimorfismoRelaciones {

public static void main(String[] args) {
PersonaFisica pf=new PersonaFisica("Juan","Huanatos #2502","36789765","AMA36","457AB");
PersonaMoral pm=new PersonaMoral("Ana","Rio Altar #4562","36895764",
"SA2347",new PersonaFisica("Juan","Huanatos #2502","36356736","XH89NT","489H"));
System.out.println(pf);
System.out.println(pm);
}

}


Lo tuve que hacer siguiendo unos requerimientos obligatorios que me puso mi profesor que son los siguientes:

Entregar un archivo fuente PolimorfirmoRelaciones.java para aplicación de consola
que cumpla con los siguientes requerimientos
2. Codificación de la clase PolimorfirmoRelaciones conteniendo al método main
3. Codificación de la clases Persona, PersonaFisica y PersonaMoral en el mismo
archivo
4. Solo declarar los atributos de cada clase (no definirlos en la misma línea que sean
declarados)
5. Inicializar todos los atributos de las clases por medio de un constructor con
parámetros
6. Declarar y definir los métodos dame() para las clases
7. Declarar y definir los métodos fija() para las clases
8. La inicialización de los atributos haga uso de los métodos fija()
9. La clase Persona no sea instanciable
10. Codificar en el ámbito del método main lo siguiente:
a) Declarar y definir una variable de instancia del tipo PersonaFisica
b) Declarar y definir una variable de instancia del tipo PersonaMoral
c) Mediante un sólo método del objeto de tipo PersonaFisica que devuelva un
String, imprimir en la consola toda su información
d) Mediante un sólo método del objeto de tipo PersonaMoral que devuelva un
String, imprimir en la consola toda su información.

No me marca errores pero a la hora de compilarlo solo me imprime esto
y no se por qué, debería imprimirme toda la información concatenada


PersonaFisica@12dacd1
PersonaMoral@1ad086a

de antemano gracias
#201
Java / validacion fecha
21 Mayo 2012, 03:24 AM
saludos

estaba haciendo un codigo para verificación de fechas que es el siguiente:
Código (java) [Seleccionar]
public class MesesV3 {

public static void main(String[] args) {
//constantes
final int ENERO=1;
final int FEBRERO=2;
final int MARZO=3;
final int ABRIL=4;
final int MAYO=5;
final int JUNIO=6;
final int JULIO=7;
final int AGOSTO=8;
final int SEPTIEMBRE=9;
final int OCTUBRE=10;
final int NOVIEMBRE=11;
final int DICIEMBRE=12;
//variables//
   int dia,mes,año;
   System.out.println("VERIFICADOR DE FECHA v1.0");

   System.out.println("Dame el dia:");
   dia=ScanF.leeInt();
   System.out.println(" "+dia);
   System.out.println("Dame el mes:");
   mes=ScanF.leeInt();
   System.out.println("Dame el año:");
   año=ScanF.leeInt();
   System.out.println(" "+año);
   switch(mes)
   {
       case ENERO:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case FEBRERO:
        if(((año%400==0)||((año%4==0)&&(año%100!=0))&&(dia<=29&&dia>0)))
              System.out.println("Fecha valida!");
           else
           if(dia<=28&&dia>0)
              System.out.println("Fecha valida!");
           else
              System.out.println("Dia no valido!");
           break;
       case MARZO:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!\n");
           break;
       case ABRIL:
        System.out.println((dia<=30&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case MAYO:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case JUNIO:
        System.out.println((dia<=30&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case JULIO:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case AGOSTO:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case SEPTIEMBRE:
        System.out.println((dia<=30&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case OCTUBRE:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case NOVIEMBRE:
        System.out.println((dia<=30&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       case DICIEMBRE:
        System.out.println((dia<=31&&dia>0)?"Fecha valida!":"Dia no valido!");
           break;
       default: System.out.println("Mes no válido!");
   }

}

}


pero mi profesor me dijo que esta parecia mas una practica de programación estructurada y ahora tengo que corregirla y hacerla de nuevo con los siguientes requerimientos

3. Inicializar todos los atributos con datos válidos
por medio de un constructor sin parámetros
4. Declarar y definir todos los métodos dame()
5. Declarar y definir todos los métodos fija()
6. Incluir al menos el método verifica() mostrado (se puede optar por otra forma en
nombre y parámetros, pero igualmente privada)
7. Es optativo y deseable que los otros métodos fija también sean booleanos.
8. Contemple que un año bisiesto es múltiplo de 4, no múltiplo de 100 pero sí múltiplo de
400
9. Programarla lo más completa y sintética posible de forma que siempre represente en sus
atributos una fecha válida
10. Validación en cada uno de los métodos fija para que los atributos en conjunto
representen siempre una fecha correcta sea cual fuere el orden posible de invocación a
los métodos fija() desde main
11. Si al tratar de cambiar algún atributo mediante un método fija(), la nueva fecha no sería
válida, los atributos permanezcan sin modificación.
12. Evitar imprimir mensajes a consola desde métodos al interior de la clase (el método
main no forma parte de la clase)
13. Codificar en el ámbito del método main lo siguiente:
a) Declaración de variable de instancia del tipo MiFecha en una línea independiente
b) Instanciación de un objeto del tipo MiFecha sobre la variable del punto anterior
c) Definición de todos los atributos del objeto instanciado mediante sus 3 métodos de
interfaz
d) Impresión en consola del contenido de cada uno de los atributos, uno por línea
e) Evitar solicitar datos al usuario por consola

y esto es lo que llevo programado pero en los métodos fija no se a que se refiere con Validación en cada uno de los métodos fija para que los atributos en conjunto
representen siempre una fecha correcta si la validación ya la hice en el metodo verificarDia

Código (java) [Seleccionar]
public class MiFecha {
final int ENERO=1;
final int FEBRERO=2;
final int MARZO=3;
final int ABRIL=4;
final int MAYO=5;
final int JUNIO=6;
final int JULIO=7;
final int AGOSTO=8;
final int SEPTIEMBRE=9;
final int OCTUBRE=10;
final int NOVIEMBRE=11;
final int DICIEMBRE=12;
private int dia;
private int mes;
private int año;
public MiFecha(){
dia=26;
mes=MARZO;
año=1992;
}
public boolean fijaDia(int diax){
dia=diax;
return true;
}

public int dameDia(){
return dia;
}

public boolean fijaMes(int mesx){
mes=mesx;
return true;
}

public int dameMes(){
return mes;
}

public boolean fijaAnio(int aniox){
año=aniox;
return true;
}

public int dameAnio(){
return año;
}

private boolean verificaDia(int dia,int mes,int año){

boolean fechaValida= false;
switch(mes){
case ENERO:
case MARZO:
case MAYO:
case JULIO:
case AGOSTO:
case OCTUBRE:
case DICIEMBRE:
if(dia < 0 && dia >31)
fechaValida=true;
else
fechaValida=false;
break;
case FEBRERO:
if(((año%400==0)||((año%4==0)&&(año%100!=0))&&(dia<=29&&dia>0)))
fechaValida=true;
       else if(dia<=28&&dia>0)
        fechaValida=true;
       else
        fechaValida=false;
       break;
case ABRIL:
case JUNIO:
case SEPTIEMBRE:
case NOVIEMBRE:
if( dia > 0 && dia < 30)
fechaValida=true;
else
fechaValida=false;
break;
}
return fechaValida;
}
}
class Encapsulamiento{
public static void main(String[] args) {
MiFecha f=new MiFecha();
System.out.println("la fecha es: "+f.dameDia()+"/"+f.dameMes()+"/"+f.dameAnio());
}
}


de antemano gracias
#202
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
#203
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
#204
Java / Herencia
19 Abril 2012, 04:07 AM
Saludos, estaba haciendo un codigo de tres clases heredadas (padre-hijos) y en las primeras lineas del main me salen errores y no se que estoy implementando mal
Código (java) [Seleccionar]
public class Electrodomestico {
public String marca;
public double precio;
public int numPieza;

public Electrodomestico(String marcax, double preciox, int numPiezax){
fijaMarca(marcax);
fijaPrecio(preciox);
fijaNumPieza(numPiezax);
}
public void fijaMarca(String marcax){
marca=marcax;
}
public void fijaPrecio(double preciox){
precio=preciox;
}
public void fijaNumPieza(int numPiezax){
numPieza=numPiezax;
}
public String dameMarca(){
return marca;
}
public double damePrecio(){
return precio;
}
public int dameNumPieza(){
return numPieza;
}

class Refrigerador extends Electrodomestico{
private String color;
private int numPuertas;
private int numCajones;

public Refrigerador(String marcax,double preciox,int numPiezax,String colorx,
            int numPuertasx,int numCajonesx){
super(marcax,preciox,numPiezax);
fijaColor(colorx);
fijaNumPuertas(numPuertasx);
fijaNumCajones(numCajonesx);
}
public void fijaColor(String colorx){
color=colorx;
}
public void fijaNumPuertas(int numPuertasx){
numPuertas=numPuertasx;
}
public void fijaNumCajones(int numCajonesx){
numCajones=numCajonesx;
}
public String dameColor(){
return color;
}
public int dameNumPuertas(){
return numPuertas;
}
public int dameNumCajones(){
return numCajones;
}
}
class Lavadora extends Electrodomestico{
private int velocidadRPM;
private int anchoCM;
private String modelo;

public Lavadora(String marcax,double preciox,int numPiezax,int velocidadRPMx,
int anchoCMx,String modelox){
super(marcax,preciox,numPiezax);
fijaVelocidadRPM(velocidadRPMx);
fijaAnchoCM(anchoCMx);
fijaModelo(modelox);
}
public void fijaVelocidadRPM(int velocidadRPMx){
velocidadRPM=velocidadRPMx;
}
public void fijaAnchoCM(int anchoCMx){
anchoCM=anchoCMx;
}
public void fijaModelo(String modelox){
modelo=modelox;
}
public int dameVelocidadRPM(){
return velocidadRPM;
}
public int dameAnchoCM(){
return anchoCM;
}
public String dameModelo(){
return modelo;
}        
}
public class Herencia{
public static void main(String[] args) {
Electrodomestico e=new Electrodomestico("Whirpool",7000.50,1);
Refrigerador r=new Refrigerador("LG",2000.00,1,"blanco",3,8);
Lavadora l=new Lavadora("Samsung",3000.50,1,1000,55,"SMO2VY346");
System.out.println("Marca: "+r.dameMarca());
System.out.println("Precio: "+r.damePrecio());
System.out.println("Numero de Piezas: "+r.dameNumPieza());
System.out.println("Color: "+r.dameColor());
System.out.println("Numero de Puertas: "+r.dameNumPuertas());
System.out.println("Numero de Cajones: "+r.dameNumCajones());
        System.out.println("Marca: "+l.dameMarca());
        System.out.println("Precio: "+l.damePrecio());
        System.out.println("Numero de Piezas: "+l.dameNumPieza());
        System.out.println("Velocidad(rpm): "+l.dameVelocidadRPM());
        System.out.println("Ancho(cm): "+l.dameAnchoCM());
        System.out.println("Modelo: "+l.dameModelo());
}
  }
}


de antemano gracias
#205
Programación C/C++ / Juego del gato
12 Abril 2012, 05:09 AM
Saludos
Tengo un problema con mi codigo del Juego del Gato que estoy haciendo, el programa me tiene que inicializar la matriz vacia, y despues cuando le pido al usuario que ingrese la posición de la fila y la columna me tiene que imprimir la letra(X u O) en la casilla.Pero mi codigo por cada vez que le pide al usuario la posicion me las imprime en tableros diferentes en vez de en uno solo

#define MAX_FILA 3
#define MAX_COLUM 3
#define MAX_JUG 2
#define MAX_TURNO 9

void turno_jugador();
void imprimir_tablero(char letra, int fila, int columna);

int main()
{
    printf("Juego del Gato v1.0\n");
    turno_jugador();
    return 0;
}

void imprimir_tablero(char letra, int fila, int columna)
{
    int i,j;
    char gato[MAX_FILA][MAX_COLUM];
    for(i=0;i<MAX_FILA;i++)
    {
        for(j=0;j<MAX_COLUM;j++)
        {
            if((fila==i)&&(columna==j))
               printf("%c",letra,gato[i][j]);
            else
               printf(" ",gato[i][j]);
            if(j<MAX_COLUM)
               printf("|");
        }
        printf("\n");
        if(i<MAX_FILA)
           printf("______");
        printf("\n");
    }
}

void turno_jugador()
{
    int fila,columna,i,turno;
    char jugador[]={'X','O'},letra;
    do
    {
        turno=1;
        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];
            imprimir_tablero(letra,fila,columna);
            turno++;
        }
    }while(turno<=MAX_TURNO);
}


y no tengo idea de como modificarlo
de antemano gracias
#206
Programación C/C++ / conio2!!
1 Abril 2012, 00:52 AM
Saludos

Alguien que me pueda decir como instalar la biblioteca conio2.h para codeblocks?? Necesito utilizar gotoxy en un codigo pero no puedo hacerlo sin esta libreria

gracias
#207
Java / misplaced construct
21 Marzo 2012, 23:21 PM
Tengo el siguiente codigo
y me marca error en la linea del main me dice syntax error on tokens misplaced construct, pero ya lo revise y no falta ni sobra ninguna llave {

Código (java) [Seleccionar]
public class Impuestos {

public static void main(String[] args){
// constantes
final double IVA =16.0;
final double POR_RET_IVA=10.0;
final double POR_RET_ISR=10.0;
final double POR_ISR=11.0;
final int MES_CAPTURA=1;
final int CAPTURA_ING=2;
final int CAPTURA_GAS=3;
final int L_ING_ANUAL=4;
final int L_GASTO_ANUAL=5;
final int CALCULO_IMP=6;
final int MESES=12;
final int SALIR=7;

//variables para entrada de datos//
    double gasto_iva,iva_pag,isr_pag,gan_bruta,
          gan_neta,isr,iva,subtotal,ret_isr,ret_iva,total,ingreso_tot=0,
          gasto_tot=0,ingreso,gasto;

    //variables de uso interno del programa//
    int i,opcion,indice,mes_elegido=1;
    boolean ver_menu;
    char *meses[MESES]={"Enero","Febrero","Marzo","Abril","Mayo","Junio",
                        "Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
    //Arreglo para ingresos y gastos//
    double gastos[];
    double ingresos[];
    for(i=0;i<MESES;i++)
    {
        gastos[i]=0;
        ingresos[i]=0;
    }
    ver_menu=1;
    do
    {
        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: ");
        opcion=leeInt.ScanF();
        System.out.println(" "+opcion);
        switch(opcion)
        {
        case MES_CAPTURA:
           System.out.println("Establecer mes para captura");
           for(i=0,indice=0;i<MESES;i++,indice++)
              printf(" "+(indice+1)+") "+meses[i]);
              System.out.println("Elige el mes (1 a 12):");
              mes_elegido=leeInt.ScanF();
              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]);
           break;
        case CAPTURA_ING:
        System.out.println("Captura de ingresos");
            System.out.println("Dame el ingreso del mes de "+meses[mes_elegido-1]+": ");
            ingreso=leeint.ScanF();
            System.out.println(" "+ingreso);
            ingresos[mes_elegido-1]=ingreso;
            break;
        case CAPTURA_GAS:
        System.out.println("Captura de gastos");
                System.out.println("Dame el gasto del mes de "+meses[mes_elegido-1]+": ");
                gasto=leeint.ScanF();
                System.out.println(" "+gasto);
                gastos[mes_elegido-1]=gasto;
                break;
        case L_ING_ANUAL:
        System.out.println("Mostrar lista de ingresos anual");
            for(i=0;i<MESES;i++)
               System.out.println(" "+meses[i]+" = "+ingresos[i]);
               break;
        case L_GASTO_ANUAL:
        System.out.println("Mostrar lista de gastos anual");
            for(i=0;i<MESES;i++)
               System.out.println(" "+meses[i]+" = "+gastos[i]);
            break;
        case CALCULO_IMP:
        for(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);
                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);                 printf("(=) Total\t\t%.2f\n",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\t\t\t"+isr);
                System.out.println("(=) Ganancia Neta\t"+gan_neta);
                System.out.println("***Tabla ISR***");
                System.out.println("ISR\t\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);
                break;
        case SALIR:
        ver_menu=0;
            break;
        default: System.out.println("Opcion no valida!");
       }
    }while(ver_menu);
}

}


de antemano gracias
#208
Java / class,interface or enum expected
16 Marzo 2012, 00:27 AM
tengo el siguiente codigo pero me salen unos errores que dicen:

class, interface or enum expected

Código (java) [Seleccionar]
class Cuenta{
//atributos
int ncuenta;
double sactual;
String nombre;
//constuctor
public Cuenta(int ncuenta,double sactual,String nombre){
this.ncuenta=ncuenta;
this.sactual=sactual;
this.nombre=nombre;
}
public void mostrarNCuenta(){
System.out.println("NCuenta "+ncuenta);
}
public void mostrarSActual(){
System.out.println("SActual "+sactual);
}
public String regresarNombre(){
return nombre;
}
public void depositar(double cantidad){
if(cantidad>0)
sactual+=cantidad;//sactual=sactual+cantidad
else
System.out.println(cantidad+ "No es valida");
}
public boolean retirar(double cantidad){
if(cantidad>0&&cantidad<=sactual){
sactual-=cantidad;
return true;
}
return false;
}
}//clase
public class CuentaComun extends Cuenta{
//atributo
String nombrecopro;
//constuctor
    public CuentaComun(int ncuenta,double sactual,String nombre,String nombrecopro){
    super(ncuenta,sactual,nombre);//llamando constructor de superclase
    this.nombrecopro=nombrecopro;
    }
}
    public String regresarNombreCoPro(){
    return nombrecopro;
    }
    public static void main(String[] args) {
    CuentaComun cc=new CuentaComun(1234,7500.25,"Manuel","Ingrid");
    cc.mostrarNCuenta();//mensaje
    cc.mostrarSActual();
    System.out.println("NOMBRE= "+cc.regresarNombre());
    cc.depositar(200.25);
    cc.mostrarActual();
    System.out.println("NOMBRECOPRO=" +cc.regresarNombreCoPro());
   
    if(cc.retirar(700.5)==true)
    System.out.println("Transaccion efectuada exitosamente");
    else{
    System.out.println("Error en la transaccion");
    cc.mostrarSActual();
    }
    }//main
}//clase


no tengo idea de por que me salen

de antemano gracias
#209
Java / packages
2 Marzo 2012, 02:29 AM
Alguien que me pueda decir que significa declared package "" does not match the expected package.. y como puedo solucionarlo???

gracias
#210
Java / cannot find class
20 Febrero 2012, 18:10 PM
tengo un error de compilacion en la linea que dice

v1.new Ventana("Ventana 1",false);

del siguiente codigo
Código (java) [Seleccionar]
public class Ventana {
               //atributos
               String titulo;
               boolean estado;
               //constructor
               public Ventana(String t,boolean e){
                       titulo=t;
                       estado=e;
               }
               public boolean checarEstado(){
                if(estado==true)
                return true;
                else
                return false;
               }
               public void mover(){
                if(checarEstado()==true)
                System.out.println("Moviendo la" +titulo);
                else
                System.out.println("No se puede mover la" +titulo);
               }
               
    public static void main(String[] args) {
   
    Ventana v1;//variable de referencia
    v1.new Ventana("Ventana 1",false);
    v1.mover();//mensaje
    }
}


de antemano gracias
#211
Programación C/C++ / comparacion de cadenas
16 Febrero 2012, 23:09 PM
estoy haciendo este programa que me pide que le ingrese datos a 10 personas cualquiera, me pide nombre,edad y estatura. Pero una vez que se los ingreso me pide que le de un nombre cualquiera y este tiene que buscar que si se encuentre, pero tengo un error porque no me esta respetando el strncmp que le puse para comparar las dos cadenas :huh: alguien que me diga donde me estoy equivocando??

#include <stdio.h>
#include <stdlib.h>
#define MAX_PERSONAS 3
#define NOMBRE 20
#define EDAD 20
#define ESTATURA 2

int main()
{
    int i;
    char nombre[NOMBRE],buscarNombre[NOMBRE];
    int edad[EDAD];
    float estatura[ESTATURA];
    printf("Dame los datos de 10 persona:\n");
    for(i=0;i<MAX_PERSONAS;i++)
    {
        printf("Dame el nombre de la persona:\n");
        scanf("%s",&nombre[i]);
        printf("Dame la edad de la persona\n");
        scanf("%d",&edad[i]);
        printf("Dame la estatura:\n");
        scanf("%f",&estatura[i]);
        system("cls");
    }
    printf("Dame el nombre de la persona que deseas buscar:\n");
    scanf("%s",&buscarNombre[i]);
    for(i=0;i<MAX_PERSONAS;i++)
    {
        if(strncmp(buscarNombre,nombre,NOMBRE)!=0)
        {
            printf("Dame la edad de la persona\n");
            scanf("%d",&edad[i]);
            printf("Dame la estatura:\n");
            scanf("%f",&estatura[i]);
        }
        else
           printf("No existe\n");
    }
    return 0;
}


de antemano gracias
#212
Programación C/C++ / problema con while
12 Febrero 2012, 06:43 AM
Tengo un problema con mi programa en la opcion numero 1 que me pide todos los datos para registrarme y despues me vuelve a pedir la contraseña, si esta contraseña coincide con la del registro ingresa y si no entra en el ciclo while hasta darle la correcta. Pero nunca sale del while y no se por que :-(

de antemano gracias

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

typedef struct
{
    char nombre[20];
    char apellidos[20];
    char ciudad[15];
    char pais[15];
    char escuela[25];
    char correo_elect1[15];
    char correo_elect2[15];
    char contrasenia[10];
    int edad;
    char cumpleanios[10];

}registro;

int main()
{
    registro info_p;
    int opcion,situacion;
    char resp;
    printf("Menu\n");
    printf("1)Registrar cuenta\n");
    printf("2)Editar perfil\n");
    printf("3)Mensajes o Notificaciones\n");
    printf("4)Salir\n");
    do
    {
        printf("Elige una opcion:\n");
        scanf("%d",&opcion);
        switch(opcion)
        {
            case 1: printf("Registrarse \n");
                    printf("Nombre\n");
                    fflush(stdin);
                    gets(info_p.nombre);
                    printf("Apellidos\n");
                    fflush(stdin);
                    gets(info_p.apellidos);
                    printf("Correo Electronico\n");
                    fflush(stdin);
                    gets(info_p.correo_elect1);
                    printf("Contrasenia\n");
                    fflush(stdin);
                    gets(info_p.contrasenia);
                    printf("Pais\n");
                    fflush(stdin);
                    gets(info_p.pais);
                    printf("Ciudad\n");
                    fflush(stdin);
                    gets(info_p.ciudad);
                    printf("Edad\n");
                    fflush(stdin);
                    scanf("%d",&info_p.edad);
                    printf("\nBienvenid@ %s!!\n\n",info_p.nombre);
                    printf("Ingresar\n");
                    printf("Dame correo\n");
                    fflush(stdin);
                    gets(info_p.correo_elect2);
                    while(info_p.correo_elect1!=info_p.correo_elect2)
                    {
                        printf("Intentalo otra vez\n");
                        fflush(stdin);
                        gets(info_p.correo_elect2);
                    }
                    printf("El correo es el correcto\n");
                    break;
            case 2: printf("Editar perfil\n");
                    printf("Situacion sentimental\n\n");
                    printf("Elige:\n");
                    printf("1)Soltero\n");
                    printf("2)Casado\n");
                    printf("3)Union libre\n");
                    scanf("%d",&situacion);
                    switch(situacion)
                    {
                        case 1: printf("Soltero\n");
                                break;
                        case 2: printf("Casado\n");
                                break;
                        case 3: printf("Union libre\n");
                                break;
                        default:printf("No mostrar situacion sentimental\n");
                    }
                    printf("Formacion Academica\n");
                    fflush(stdin);
                    gets(info_p.escuela);
                    printf("Cumpleanios\n");
                    fflush(stdin);
                    gets(info_p.cumpleanios);
                    break;
            case 3: printf("Mensajes o Notificaciones\n");
                    printf("Quiere escribir un mensaje? (S/N)\n");
                    scanf("%c",&resp);
                    if(resp=='S')
                       printf("Escriba el mensaje\n");
                    else
                    if(resp=='N')
                       printf("Leer notificaciones\n");
                    else
                       printf("Error\n");
                    break;
            case 4: printf("Salir\n");
                    break;
        }
    }while(opcion!=4);
    return 0;
}
#213
Programación C/C++ / funcion trunc
4 Febrero 2012, 21:41 PM
Hola!! Quiero usar la función trunc en mi programa al que le tengo que ingresar un numero, y este me tiene que devolver si es entero o flotante

lo que yo tengo en mente es que le paso el dato a la funcion, y cuando esta me devuelva la parte entera   le resto de nuevo el dato y si es 0 me devuelve el entero y sus rangos de valores y si no es flotante. Pero en esta ultima parte no compila :huh:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//Este programa muestra los valores de los tipos de datos//

int main()
{
    char dato;
    printf("Dame un dato\n");
    scanf("%c",&dato);
    if(trunc(dato)-dato==0)
        printf("Es un tipo de dato int\nCon un rango de -32,768 a 32,767\n");
    else
    if(trunc(dato)-dato!=0)
        printf("Es un tipo de dato float\nCon un rango de 3.4 E-38 a 3.4 E+38\n");
    return 0;
}
#214
tengo un problema con este codigo que me tiene que ingresar un maximo de 20 registros con listas enlazadas, no se si lo estoy haciendo bien :rolleyes: no se si tengo que definir un nuevo tipo, algo asi como :

ingreso ingresos, y despues pasarle el apuntador ingreso*pIngreso y pasarle la direccion pIngreso=&ingresos :o

#include <stdio.h>
#include <stdlib.h>//funcion malloc()
#include <conio.h> // funcion getch()
#include <string.h> // funcion strcpy()
#define  MAX_REG 20 //Define el maximo numero de registros

// Primero definimos los tipos
typedef struct registro1
{
    char concepto[30+1];
    char RFC[21+1];
    float monto;
    int mes;
    struct registro1* sig;

}ingreso;

int introduceRegistro(ingreso *pIngreso);//le pasamos el puntero original de la lista

int main()
{
    ingreso *pIngreso;
    printf("\nIngresa los datos del registro \n");
    introduceRegistro(pIngreso);//Aqui todavia no estoy segura de ponerle el ampersand, porque me marca un warning:passing arg 1 of `introduceRegistro´ from incompatible pointer type

    getch();
    return 0;
}

int introduceRegistro(ingreso *pIngreso)
{
    int i;
    for(i=0,pIngreso->sig==NULL;i<MAX_REG;i++,pIngreso=pIngreso->sig)
    {
        pIngreso=(ingreso*)malloc(sizeof(ingreso));//A todo puntero hay que asignarle memoria.
        printf("Concepto :");
        fflush(stdin);
        gets(pIngreso->concepto);
        printf("RFC :");
        fflush(stdin);
        gets(pIngreso->RFC);
        printf("Monto :");
        fflush(stdin);
        scanf("%f",&pIngreso->monto);
        printf("Mes :");
        fflush(stdin);
        scanf("%d",&pIngreso->mes);
    }
return 0;
}
#215
Programación C/C++ / Torres de Hanoi
21 Diciembre 2011, 05:47 AM

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define TORRE_INICIAL 1
#define TORRE_AUXILIAR 2
#define TORRE_FINAL 3
#define MAX_DISCOS 5

int hanoi(int numDiscos, int torreInicial, int torreAuxiliar, int torreFinal);
int inicializa_discos(int cantDiscos);
int diametro_discos(int cantDiscos);

int main()
{
    int cantDiscos, movimientos;
    system("Cls");
    printf("TORRES DE HANOI\n\n");
   printf("\nCantidad de discos a mover (max 5): ");
   scanf("%d", &cantDiscos);
   if(cantDiscos>MAX_DISCOS)
       printf("\nError! numero de discos maximo es 5\n");
    else
    {
        printf("\nLa serie de movimientos a realizar es:\n");
        printf("\nDiscos al inicio, se muestra el diametro de los discos:\n");
        printf("Torre1: \n",inicializa_discos(cantDiscos));
        printf("Torre2: \n");
        printf("Torre3: \n");
        movimientos = hanoi(cantDiscos, TORRE_INICIAL, TORRE_AUXILIAR, TORRE_FINAL);
        printf("\nSe realizaron en total %d movimientos\n", movimientos);
        printf("Presione una tecla para continuar...\n");
        getch();

    }
    return 0;
}

int hanoi(int numDiscos, int torreInicial, int torreAuxiliar, int torreFinal)
{
    int cantDiscos;
    static int movimientos = 0;
   if(numDiscos == 1)
   {
      printf("Mover el disco superior de la torre %d a la torre %d\n",torreInicial, torreFinal);
      movimientos++;
      printf("Torre1: \n");
      printf("Torre2: \n");
      printf("Torre3: \n");
   }
   else
   {
      hanoi(numDiscos - 1, torreInicial, torreFinal, torreAuxiliar);
      printf("Mover el disco superior de la torre %d a la torre %d\n",torreInicial, torreFinal);
      movimientos++;
      printf("Torre1: \n");
      printf("Torre2: \n");
      printf("Torre3: \n");
      hanoi(numDiscos - 1, torreAuxiliar, torreInicial, torreFinal);
   }
   return movimientos;
}

int inicializa_discos(cantDiscos)
{
    int i;
    for(i=cantDiscos;cantDiscos>=1;cantDiscos--)
       printf("%d",cantDiscos);

  return(cantDiscos);
}

Tengo un problema en la linea numero 26 de mi codigo, en vez de imprimir:

Torre1: 3 2 1 <- Son el numero de discos con los que se inicializa la torre.
me imprime esto:

321Torre1:  (deberia de ser alreves)
creo que no estoy llamando bien a la funcion inicializa_discos()

gracias de antemano
#216
Programación C/C++ / problema con uso de strcpy
19 Diciembre 2011, 17:42 PM

#include <stdio.h>
#include <stdlib.h>
//constantes//
#define IVA 16.0f
#define POR_RET_IVA 10.0f
#define POR_RET_ISR 10.0f
#define CAPTURA_MES 1
#define CAP_INGRESO 2
#define CAP_GASTOS 3
#define L_INGR_ANUALES 4
#define L_GAST_ANUALES 5
#define CALC_IMPUESTOS 6
#define SALIR 7
#define MESES 12
#define GASTOS 20
#define INGRESOS 20

void mostrar_menu();
void captura_mes();
void captura_ingreso();
void captura_gasto();
void lista_ingreso_anual();
void lista_gasto_anual();
float monto(float ganancia_bruta);
void calculo_impuestos();
void inicializa();

typedef struct registro1
{
    char concepto[30+1];
    char RFC[21+1];
    float monto;
    int mes;
    struct registro1* sig;

}ingreso;

typedef struct registro2
{
    char concepto[30+1];
    char RFC[21+1];
    float monto;
    int mes;
    struct registro2* sig;
}gasto;

//variables globales de uso interno del programa//
char *meses[MESES];
int m,contador=0,mes,reg,indice,porcentaje_ISR[3];
float rango_monto[3][2];
//arreglo de ingresos y gastos//
float gastos_meses[GASTOS],ingreso_meses[INGRESOS];

int main()
{
  //variables de programa modificables por el usuario//
  ingreso *info_registro1;
  gasto *info_registro2;

  int opcion,continuar = 1;
  inicializa();
    do
    {
        mostrar_menu();
        scanf("%d",&opcion);
        switch(opcion)
        {
            case CAPTURA_MES:
                captura_mes();
                break;
            case CAP_INGRESO:
                captura_ingreso();
                break;
            case CAP_GASTOS:
                captura_gasto();
                break;
            case L_INGR_ANUALES:
                lista_ingreso_anual();
                break;
            case L_GAST_ANUALES:
                lista_gasto_anual();
                break;
            case CALC_IMPUESTOS:
                calculo_impuestos();
                break;
            case SALIR:
                continuar = 0;
                break;
            default:printf("Opcion no valida!\n");
        }
        if(continuar){
            system("pause");
        }
    }while(continuar);
    return 0;
}

void inicializa()
{
    reg=0;
    m=0;
    mes=1;
    indice=0;
    meses[0]="Enero";
    meses[1]="Febrero";
    meses[2]="Marzo";
    meses[3]="Abril";
    meses[4]="Mayo";
    meses[5]="Junio";
    meses[6]="Julio";
    meses[7]="Agosto";
    meses[8]="Septiembre";
    meses[9]="Octubre";
    meses[10]="Noviembre";
    meses[11]="Diciembre";
    rango_monto[0][0]=0;
    rango_monto[0][1]=10000.00;
    rango_monto[1][0]=10000.00;
    rango_monto[1][1]=20000.00;
    rango_monto[2][0]=20000.00;
    rango_monto[2][1]=10000000.00;
    porcentaje_ISR[0]=11;
    porcentaje_ISR[1]=15;
    porcentaje_ISR[2]=20;
}

void mostrar_menu()
{
    ingreso*info_registro1;
    ingreso*nuevo;
    nuevo=info_registro1;
    system("cls");
    printf("CALCULO DE IMPUESTOS ANUAL\n\n");
    printf("Menu principal:\n");
    printf("1. Establecer mes para la captura (mes actual es %s)\n",meses[mes-1]);
    printf("2. Captura de ingresos\n");
    printf("3. Captura de gastos\n");
    printf("4. Mostrar lista de ingresos anual\n");
    printf("5. Mostrar lista de gastos anual\n");
    printf("6. Calculo de impuestos anual\n");
    printf("7. Salir\n");
    printf("Opcion: ");
}

void captura_mes()
{
    int indice;
    printf("Establecer mes para captura\n");
    for(contador=0,indice=0;contador<MESES;contador++,indice++)
    printf("%d) %s\n",indice+1,meses[contador]);
    printf("Elige el mes (1 a 12):\n");
    fflush(stdin);
    scanf("%d",&m);
    if(m > 12)
        printf("Mes no valido!\n");
    else
    {
        printf("Se ha establecido el mes de captura en %s\n",meses[m-1]);
        mes = m;
    }
}

void captura_ingreso()
{
    ingreso*info_registro1;
    ingreso*nuevo;
    nuevo=(ingreso*)malloc(sizeof(ingreso));
    nuevo->sig=info_registro1->sig;
    info_registro1->sig=nuevo;

    printf("Captura ingresos\n");
    printf("Dame un ingreso mas para el mes de %s: \n",meses[m-1]);
    printf("Provee datos para el ingreso %d.\n",reg);
    if(reg>INGRESOS)
       printf("no hay mas espacio\n");
    printf("RFC:");
    fflush(stdin);
    gets(nuevo->RFC);
    printf("Concepto:");
    fflush(stdin);
    gets(nuevo->concepto);
    printf("Monto:");
    fflush(stdin);
    scanf("%f",&nuevo->monto);
    nuevo->mes=m;
    ++reg;
}

void captura_gasto()
{
    gasto*info_registro2;
    gasto*nuevo;
    nuevo=(gasto*)malloc(sizeof(gasto));
    nuevo->sig=info_registro2->sig;
    info_registro2->sig=nuevo;

    printf("Captura gastos\n");
    printf("Dame el gasto del mes de %s: \n",meses[m-1]);
    printf("Provee datos para el gasto %d.\n",reg);
    if(reg>GASTOS)
       printf("no hay mas espacio\n");
    printf("Concepto:");
    fflush(stdin);
    gets(nuevo->concepto);
    printf("Monto:");
    fflush(stdin);
    scanf("%f",&nuevo->monto);
    nuevo->mes=m;
    ++reg;
}

void lista_ingreso_anual()
{
    ingreso*info_registro1;
    ingreso*nuevo;
    nuevo=info_registro1->sig;
    printf("Mostrar lista de ingresos anual\n\n");
    printf("Indice  Mes\tMonto\tRFC\t\tConcepto\n");
    printf("%d\t",indice);
    printf("%s",meses[nuevo->mes-1]);
    strcpy("nuevo->monto",ingreso_meses);
    strcpy(ingreso_meses,"nuevo->RFC");
    strcpy(ingreso_meses,"nuevo->concepto");
}

void lista_gasto_anual()
{
    gasto*info_registro2;
    gasto*nuevo;
    nuevo=info_registro2->sig;
    printf("Mostrar lista de gastos anual\n");
    printf("Indice  Mes\tMonto\tCconcepto\n");
    printf("%d\t",indice);
    printf("%s",meses[nuevo->mes-1]);
    strcpy("nuevo->monto",ingreso_meses);
    strcpy(ingreso_meses,"nuevo->concepto");
}

float monto(float gan_bruta)
{
    float 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.00;

    return(por_isr);
}

void calculo_impuestos()
{
    int contador;
    float iva,subtotal,ret_isr,ret_iva,total,gan_bruta,isr,gan_neta,isr_pag,gasto_iva,iva_pag;
    float por_isr,ingreso_total,gasto_total;

    for(contador=0;contador<=MESES;contador++)
    {
        ingreso_total=ingreso_meses[contador];
        gasto_total=gastos_meses[contador];
    }
    iva=(ingreso_total*IVA)/100;
    subtotal=ingreso_total+iva;
    ret_isr=(ingreso_total*POR_RET_ISR)/100;
    ret_iva=(ingreso_total*POR_RET_IVA)/100;
    total=subtotal-(ret_isr+ret_iva);
    gan_bruta=(ingreso_total-gasto_total);
    por_isr=monto(gan_bruta);
    isr=(gan_bruta*por_isr)/100;
    gan_neta=(gan_bruta-isr);
    isr_pag=(isr-ret_isr);
    gasto_iva=(gasto_total*IVA)/100;
    iva_pag=(iva-gasto_iva-ret_iva);
    printf("CALCULO DE IMPUESTOS\n\n");
    printf("***Tabla de Recibo de Honorarios***\n");
    printf("Ingresos\t\t%.2f\n",ingreso_total);
    printf("(+) IVA\t\t\t%.2f\n",iva);
    printf("(=) Subtotal\t\t%.2f\n",subtotal);
    printf("(-) Retención ISR\t%.2f\n",ret_isr);
    printf("(-) Retención IVA\t%.2f\n",ret_iva);
    printf("(=) Total\t\t%.2f\n",total);
    printf("***Tabla Ganancias***\n");
    printf("Ingresos\t\t%.2f\n",ingreso_total);
    printf("(-) Gastos\t\t%.2f\n",gasto_total);
    printf("(=) Ganancia Bruta\t%.2f\n",gan_bruta);
    printf("(-) ISR %.2f%%\t\t%.2f\n",por_isr,isr);
    printf("(=) Ganancia Neta\t%.2f\n",gan_neta);
    printf("***Tabla ISR***\n");
    printf("ISR %.2f%%\t\t%.2f\n",por_isr,isr);
    printf("(-) ISR Retenido\t%.2f\n",ret_isr);
    printf("(=) ISR a Pagar\t\t%.2f\n",isr_pag);
    printf("***Tabla IVA***\n");
    printf("IVA\t\t\t%.2f\n",iva);
    printf("(-) Gastos IVA\t\t%.2f\n",gasto_iva);
    printf("(-) Retención IVA\t%.2f\n",ret_iva);
    printf("(=) IVA a Pagar\t\t%.2f\n",iva_pag);
}

en este codigo me marca unos warnings en la linea 225,226 y 227, tengo problemas con el strcpy

si me pudieran ayudar con eso porfavor
gracuas
#217

int binario(int num);
int invertir(int num);

int main()
{
    int num,complemento,res;
    printf("Bits en la RAM\n\n");
    printf("Dame un valor entero: ");
    scanf("%d",&num);
    if(num>0)
        binario(num);
    else if(num<0)
    {
        complemento=binario(num);
        res=complemento_a_dos(complemento);
    }

    return 0;
}

int binario(int num)
{
    if(num>1)
    {
        binario(num/2);
        num%=2;
        printf("%d",num);
    }
    else
    {
        printf("%d",num);
        return num;
    }
    return 0;
}

int complemento_a_dos(int complemento)
{
    int res;
    while((complemento%=10)!=1){
    complemento/=10;
    }
       res=~(complemento%=10);

return res;
}

tengo un problema con este codigo, hasta la funcion que convierte decimal en binario esta bien, pero despues cuando ingrese un numero negativo me tiene que dar el complemento a dos, y ahí fue donde me perdi completamente. Estaba pensando que tal vez con divisiones sucesivas hasta que me aparezca un 1 de derecha a izquierda y despues los digitos que le siguen cambiar los 0 por unos y viceversa