elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5
31  Programación / Java / Problema con clases y objetos en Java. en: 30 Enero 2019, 17:55 pm
Hola amigos. Les pido ayuda porque estoy intentando hacer un ejercicio en Java, usando el programa NetBeans. El único error aparente que hay es que al importar la clase, el programa me dice "Import from the same package". El programa consiste en que hay una clase que es un Polígono regular. El ejercicio persigue que se nos devuelva el valor de sus angulos (todos será iguales ya que es regular), según el numero de lados que le introduzcas. Aquí os dejo el código. Gracias.

Esta es la parte principal del programa.
Código:
package ejercicio4;
import ejercicio4.Poligono;

public class Ejercicio4 {

   
    public static void main(String[] args) {
        Poligono poli=new Poligono (4);
        System.out.println("La medida de los ángulos de este polígono regular es "+poli.getAngulo());
       
    }
   
}

Esta es la clase del Polígono.

Código:
package ejercicio4;


public class Poligono {
    private int numLados;
    private int angulo;
   
   
    public Poligono(int x){
    numLados=x;
    }
   
    public void calcularAngulo(int numLados){
        angulo=(360/numLados);
    }
    public int getAngulo(){
        return angulo;
    }
}



Muchas gracias a todos. Un saludo.
32  Programación / Programación C/C++ / Re: Programa no entra en el if en: 12 Diciembre 2018, 22:51 pm
Para la próxima, en vez de postear dos veces, modifica el primer mensaje y añade lo quieras ahí.

Te recomiendo que pases el parámetro por referencia, así no se copia toda la estructura cada vez que llamas a la función y no necesitas devolver nada. Imagina llamar a la función (copias toda la estructura en memoria), buscas un DNI, este no existe y devuelves toda la estructura... Muy cansado no? Mejor pasar por referencia y si no existe lo que buscas, se acabó, ni hacemos copias ni las devolvemos...
Código
  1. void modificaDatos(setClientes &variosClientes);
Y por mucho que pongas...
Código
  1. x = false;
  2. break;
...después de cada <case> no se ejecutan nunca ya que una vez llegas a un <return> la función termina.

Asegúrate de que la función <leer...()> trata correctamente los saltos de línea. Puede que introduzcas como DNI "12345678\n" (el "\n" por el enter del final) y el DNI a comparar es sólo "12345678". Entonces no van a ser iguales. Esto puedes arreglarlo también usando <strncmp()> y ahí puedes especificar cuantos caracteres deben compararse:
Código
  1. if(strncmp("12345678\n", "12345678", 8) == 0) // para esa instruccion esas dos cadena son iguales

PD: No entiendo para qué sirve <bool x>. Me parece una variable innecesaria, además de que ni el nombre aporta información sobre su uso. Simplifícalo todo con un <if> y un <else>, no te hacen falta condicionales anidados.
Otra cosa, cuando mandes código elige el lenguaje en el desplegable de "código GeSHi" o añade "=cpp" sin las comillas de seguido al "code" de la primera etiqueta. Para que se resalte el código y salgan los números de línea. Es más fácil de ver y de señalar algo en una línea específica. :-X

Suerte. :-X


Muchas gracias por los consejos. De todas formas no he conseguido solucionar el problema. No se que es lo que hace que sin el else if funcione y con el, el programa ignora el primer if y va directo hasta el else if.
33  Programación / Programación C/C++ / Re: Programa no entra en el if en: 12 Diciembre 2018, 22:16 pm
Amigos, me he dado cuenta que si comento el else if, ya entra en el primer if. Lo que no se es como implementar el else if para que funcione todo.  :( gracias.
34  Programación / Programación C/C++ / Programa no entra en el if en: 12 Diciembre 2018, 22:12 pm
Hola amigos.

Tengo un pequeño problema. Tenía un programa que funcionaba, y cerré el ordenador y dejó de funcionar, no se por que. Quizás toqué algo y no me di cuenta. De todas formas, por mucho que miro el código no consigo ver el error. De hecho el código compila, pero no entra dentro del primer if, por mucho que la condición se cumpla. Aquí les dejo el código.

Código:
int menu3(){//menu asociado a la funcion de modificar los datos//
 {
        int opcion3;
cout <<"¿Que desea modificar?";//no he incluído la fecha ya que cuando alguien va a modificar sus datos, es porque ya está dado de alta, entonces la fecha no es un dato que se pueda modificar//
    do{
    cout <<"\n1. Nombre";
    cout << "\n2. DNI";
    cout << "\n3. Domicilio";
    cout << "\n4. Numero de cuenta";
    cout << "\n5. Tipo de cuenta";
    cout << "<\n6. Salir";
    opcion3=leerEntero ("\nOpcion: ");
    }while (opcion3<1 || opcion3>6);

    return opcion3;
    }
}
setClientes modificarDatos(setClientes variosClientes){
    int menu3();
    bool x=true;
    char comparacionDNI[10];
    char t[7]="ahorro";
    char p[10]="corriente";
    int longitud=9, longitud1=10, opcion3;
    int n=variosClientes.numClientes, i=0;
    leerCadena("Introduzca el DNI del cliente que desea modificar ", comparacionDNI);
    for (i=0;i<n;i++){
        if (strcmp(variosClientes.Clientes[i].DNI, comparacionDNI)==0){
            cout<<"El cliente cuyos datos desea modificar es "<<variosClientes.Clientes[i].nombre<<endl;
            opcion3=menu3();
            switch(opcion3){
            case 1:
                leerCadena("Nombre\n",variosClientes.Clientes[i].nombre);
                return (variosClientes);
                x=false;
                break;
            case 2:
                do {leerCadena("DNI\n", variosClientes.Clientes[i].DNI);
                }while (longitud!=strlen(variosClientes.Clientes[i].DNI));
                return (variosClientes);
                x=false;
                break;
            case 3:
                leerCadena("domicilio\n", variosClientes.Clientes[i].domicilio);
                return (variosClientes);
                x=false;
                break;
            case 4:
                do {leerCadena("NumCuenta\n", variosClientes.Clientes[i].numCuenta);
                }while (longitud1!=strlen(variosClientes.Clientes[i].numCuenta));
                return (variosClientes);
                break;
            case 5:
                do{leerCadena("tipoCuenta\n", variosClientes.Clientes[i].tipoCuenta);
                }while ((strcmp(variosClientes.Clientes[i].tipoCuenta, p)!=0)&&(strcmp(variosClientes.Clientes[i].tipoCuenta, t)!=0));
                return (variosClientes);
                x=false;
                break;
            }}

        else if ((strcmp(variosClientes.Clientes[i].DNI, comparacionDNI)!=0)&&(x==true)){
            cout<<"El cliente insertado no se encuentra en nuestros datos"<<endl;
            return (variosClientes);
        }
}
}

Un saludo y gracias.

P.D.: Cabe mencionar que no es un programa completo, sólo una función del programa.
35  Programación / Programación C/C++ / Re: restricción de fecha enc++ en: 10 Diciembre 2018, 19:31 pm
Hola muchacho, puedes usar esta funcion que acabo de hacer recien para ti  ;-)
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. typedef struct tfecha{
  5. int dia;
  6. int mes;
  7. int anyo;
  8. };
  9.  
  10. bool validar_fecha(tfecha fecha)
  11. {
  12. switch(fecha.mes){
  13. case 1: case 3: case 5: case 7: case 8: case 10: case 12:
  14. if(fecha.dia>0 && fecha.dia<32)
  15. return true;
  16. else
  17. return false;
  18. break;
  19. case 4: case 6: case 9: case 11:
  20. if(fecha.dia>0 && fecha.dia<31)
  21. return true;
  22. else
  23. return false;
  24. break;
  25. case 2: if(fecha.anyo%4==0){
  26. if(fecha.dia>0 && fecha.dia<30)
  27. return true;
  28. else
  29. return false;
  30. }
  31. else{
  32. if(fecha.dia>0 && fecha.dia<29)
  33. return true;
  34. else
  35. return false;
  36. }
  37. break;
  38. default: return false;
  39. }
  40. }
  41.  
  42. int main()
  43. {
  44. tfecha fecha;
  45. do{
  46. cout<<"Ingrese dia: ";
  47. cin>>fecha.dia;
  48. cout<<"Ingrese mes: ";
  49. cin>>fecha.mes;
  50. cout<<"Ingrese año: ";
  51. cin>>fecha.anyo;
  52. }while(validar_fecha(fecha)==false);
  53. cout<<"Fecha: "<<fecha.dia<<"/"<<fecha.mes<<"/"<<fecha.anyo<<endl;
  54. system("pause");
  55. }
PD: No se hacen tareas, esto es solo un mini ejemplo

Muchos gracias. Me ha servido perfectamente. Aunque como creo que te han comentado por abajo el año bisiesto no se determina por esto solamente, (año%4==0), sino que depende de estas condiciones (año%4==0)&& (año% 100 != 0 || caño% 400 == 0).

Gracias y un saludo.
36  Programación / Programación C/C++ / restricción de fecha enc++ en: 10 Diciembre 2018, 17:43 pm
Hola amigos.

Necesito ayudar urgente, ya que non consigo que esta parte del programa me funcione. Esta parte del programa intenta hacer que por ejemplo en año bisiesto te permita introducir hasta 29 dias, pero en año no bisiesto hasta 28. O por ejemplo que si metes la fecha 2/13/2018 te vuelva a pedir la fecha; entre otras cosas... El problema es que no cumple su función tal y como debería, por ejemplo si introduces la fecha 31/4/2000, el programa creee que es valida, cuando no debería. Echenle un vistazo por favor. Aqui les dejo la parte del codigo que falla. El codigo compila. Un saludo.

Código:
do{variosClientes.Clientes[variosClientes.numClientes].fecha.dia=leerEntero("Fecha\n dia");
    variosClientes.Clientes[variosClientes.numClientes].fecha.mes=leerEntero("Fecha\n mes");
    variosClientes.Clientes[variosClientes.numClientes].fecha.anho=leerEntero("Fecha\n anho");
    a=variosClientes.Clientes[variosClientes.numClientes].fecha.anho;
    b=variosClientes.Clientes[variosClientes.numClientes].fecha.mes;
    c=variosClientes.Clientes[variosClientes.numClientes].fecha.anho;
if ((a % 4 == 0) && (a % 100 != 0 || a % 400 == 0)&&(b==2)&&((a>29)||(a<1))){ //febrero en año bisiesto
        x=true;
        break;}
    if ((b==1||b==3||b==5||b==7||b==8||b==10||b==12)&&(a>31||a<1)){ //meses con 31 dias
        x=true;
        break;}
    if ((b==4||b==6||b==9||b==11)&&(a>30||a<0)){ //meses con 30 dias
        x=true;
        break;}
    if (b<1||b>12){ //meses inexistente
        x=true;
        break;}
    if ((b==2)&&(a<1||a>28)&&(a % 4 != 0)){//febrero en año no bisiesto
        x=true;
        break;}
}while (x);
37  Programación / Programación C/C++ / Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila en: 6 Diciembre 2018, 23:11 pm
Muchas gracias amigos. Solucionado!!!
38  Programación / Programación C/C++ / do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila en: 6 Diciembre 2018, 22:47 pm
Hola a todos.

He estado haciendo este programa, y lo que pretendo conseguir con esta porcion de codigo, es que al leer una cadena, me la vuelva a pedir siempre y cuando sea distinta de las palabras "ahorro" o "corriente". Aqui os dejo la parte del codigo.

Código:
do{leerCadena("tipoCuenta\n", variosClientes.Clientes[variosClientes.numClientes].tipoCuenta);
    }while (strcmp(variosClientes.Clientes[variosClientes.numClientes].tipoCuenta, ("corriente"||"ahorro"))!=0);

El error que le programa me dice que da es:  cannot convert 'bool' to 'const char*' for argument '2' to 'int strcmp(const char*, const char*)'|

No lo entiendo. Gracias.
39  Programación / Programación C/C++ / El programa no entra en este "if" en: 6 Diciembre 2018, 17:36 pm
Hola amigos.

Estoy haciendo un proyecto en el cual debemos hacer un programa de gestion de un banco, y una de las opciones que tenemos que habilitar al programa es para eliminar clientes, yo lo he habilitado para que permita buscar a los clientes por DNI o por Numero de cuenta.
El problema en este codigo, en el cual pretendo comparar la longitud de una cadena con un entero dentro de un if, el programa no lo "coge". Esto se ve en el "case 2", que es donde lo estoy intentando implementar primero (cuando funcione irá en los dos case). Es el if en el cual si se cumple, tendrá que ejecutar el cout<<"Se ha detectado un error en el formato de escritura. Escriba de nuevo: "<<endl;

Por favor, ayuda. Espero que no les resulte mucho problema por tantas variables que hay.

Código:
setClientes eliminarClientes (setClientes variosClientes ){
int menu1();
bool x=false;
int n=variosClientes.numClientes,i=0, opcion1;
char comparacionDNI[22];
char comparacionCuenta[22];
    opcion1=menu1();
    switch (opcion1) {
    case 1:
        do{
        x=true;
        leerCadena("Introduzca el DNI\n",comparacionDNI);
        for(int i=0;i<n;i++){
            if (strcmp(variosClientes.Clientes[i].DNI, comparacionDNI)==0){
            cout<<"DNI valido"<<endl;
            x==false;
            for(int j=i;j<n;j++){
                variosClientes.Clientes[j] = variosClientes.Clientes[j+1];
            }break;}
            else if(x==true&&i==(n-1)){
                i++;
                cout<<"Este DNI no existe en nuestros datos"<<endl;
                x==true;
            }
            }}while(x==true);

        break;
    case 2:
        do{
            int t=10, p=0;
            x=true;
        leerCadena("Introduzca el numero de cuenta\n", comparacionCuenta);
        for(int i=0;i<n;i++){
            p=strlen(comparacionCuenta);
            if (p!=t){
                cout<<"Se ha detectado un error en el formato de escritura. Escriba de nuevo: "<<endl;
                }
            else if (strcmp(variosClientes.Clientes[i].numCuenta, comparacionCuenta)==0){
                cout<<"DNI valido"<<endl;
                x==false;
        }
                else if(x=true&&i==n-1){
                    i++;
                    cout<<"Este DNI no existe en nuestros datos"<<endl;
                for(int j=i;j<n;j++){
                    variosClientes.Clientes[j] = variosClientes.Clientes[j+1];
               }}}}
        while(x!=false);
            break;
    }

cout<<"\nEl cliente ha sido eliminado del sistema";
variosClientes.numClientes--;
return variosClientes;
}
40  Programación / Programación C/C++ / Re: do while actua en bucle continuo en: 5 Diciembre 2018, 12:44 pm
Muchas gracias a todos, me han sido de gran ayuda. Problema solucionado. Un saludo  :laugh: ;-)
Páginas: 1 2 3 [4] 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines