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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 ... 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [50] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 ... 102
491  Programación / Programación C/C++ / Re: tengo un ejercicio que no se como resolverlo en: 15 Octubre 2019, 23:53 pm
Tienes dos números de 3 dígitos y lo que te piden es multiplicar el primer dígito de cada número con el tercero y ver si coinciden.
Supón los números n1 y n2 y cada uno formado por 3 dígitos tal que:
Código:
n1 = a b c // tal que n1 = a * 100 + b * 10 + c
n2 = d e f  // tal que n2 = d * 100 + e * 10 + f
Lo "complicado" de este ejercicio es obtener el primer y tercer dígito. Para ello hay que usar dos operadores: el de división entera (/) y el de módulo (%). El primero calcula el cociente de dividir un número entre otro y el segundo calcula el resto de dividir un número entre otro.
Para obtener los dígitos <a> y <c> de <n1> podemos hacer:
Código:
n1 = 123; // un ejemplo
n1digito1 = n1 / 100; // el resultado de esto seria 1
n1digito3 = n1 % 10; // el resultado de esto seria 3
Tendrías que hacer lo mismo para <n2> y multiplicar los dígitos que obtienes y comprobar si son iguales o no.

Si tienes algún problema más puedes poner tu código entre etiquetas de Código GeSHi para que podamos verlo y así ayudarte mejor.
492  Programación / Programación C/C++ / Re: ARREGLOS: encontrar la posicion de un elemento en un vector en C en: 15 Octubre 2019, 23:46 pm
No sé si te he entendido bien. Lo que yo entiendo es que tienes dos vectores por ejemplo:
Código:
v1 = {0,2,4,6,8}
v2 = {1,3,5,7,9}
Y por ejemplo te piden buscar el correspondiente en v2 al 4 en v1. El 4 en v1 está en la posición 2 (te recuerdo que los vectores empiezan a contar en la posición 0) entonces el correspondiente sería el elemento 2 de v2, que sería el 5.
Para ello tendrás una variable para el elemento que estás buscando (el 4 en este ejemplo) y un contador que determine su posición. Entonces vas recorriendo el primer vector y vas comparando cada elemento con el que buscas y vas incrementando el contador hasta encontrarlo. Una vez encontrado, recoges el valor de v2 que está en la posición que indica el contador.

Código:
v1 : array de enteros
v2 : array de enteros
INICIO
    PEDIR elementoBuscado // 4 en este caso
    resultado := -1 // aqui estara el resultado si lo encontramos. Si no lo encontramos se quedara con el -1
    i := 0
    MIENTRAS elementoBuscado != v1[i] && i < v1.longitud HACER // la i se va incrementando hasta que v1[i] coincida con 4 o hasta que se acabe v1
        i := i + 1
    FIN MIENTRAS
    // aqui llegamos cuando encontramos el elemento que buscamos, 4 en este caso, o cuando llegamos al final de v1
    SI elementoBuscado == v1[i] HACER // si esto se cumple sera que hemos encontrado el elemento. Si no se cumple es que el elemento buscado no existe y entonces el resultado sera un -1 o el valor que tu elijas para saber que el elemento no se ha encontrado
        resultado = v2[i] // i es el contador que nos dice la posicion del elemento. En este caso i valdria 2 y entonces resultado valdria 5
    FIN SI
FIN
Esto que te he puesto sería un algoritmo (los pasos) para resolver el ejercicio. No está en C por lo que si lo copias tal cual no te va a funcionar. Tienes que leer el algoritmo e intentar entenderlo. Cuando ya lo tengas tienes que hacerlo en C a tu manera.
Si tienes problemas para entenderlo o para escribirlo en lenguaje C puedes exponer los problemas o dudas que tengas y si tienes algo de código hecho puedes ponerlo entre etiquetas de Código GeSHi para que se vea así:
Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5. }
493  Programación / Java / Re: Parametros Clases en: 11 Octubre 2019, 23:56 pm
No sé si a lo que te estás intentando referir es al paso de parámetros por referencia... Es decir, pasar dos parámetros a un método y que el propio método modifique los valores y esos valores se queden modificados una vez haya terminado el método.
En Java hasta donde yo sé no existe el paso por referencia (no como en C/C++ que sí existe) para tipos de datos primitivos, sin embargo, si creas una clase y lo que pasas es un objeto, el objeto está referenciado y eso te permitiría modificar sus atributos. (ACLARO: el objeto está referenciado, no se pasa por referencia, se sigue pasando por valor pero se pasa por valor su referencia).

Si por ejemplo en tu caso tienes una clase <dimensionespantalla> que contiene dos atributos (o más): <largo> y <ancho>; y quieres guardar estos atributos en otras variables lo que te recomendaría sería usar dos métodos <getter>: <getLargo()> y <getAncho()> y que cada uno te devuelva un atributo de la instancia.

PD: Los códigos ponlos entre etiquetas de Código GeSHi y selecciona como lenguaje: Java para facilitar la lectura a los demás y evitar problemas de formato...
494  Programación / Programación General / Re: consulta en: 11 Octubre 2019, 23:47 pm
Todo depende de tus intereses. No sé si buscas un lenguaje con el que situarte en el mundo laboral o quieres seguir con la programación por afición, pero una vez que conoces la lógica de la programación (que ya la habrás aprendido con Java) es casi igual siempre. Por ejemplo con Java tienes muchas puertas abiertas y si quieres lenguajes similares tienes por ejemplo C++. Si lo que prefieres son lenguajes de más alto nivel tienes por ejemplo Python o también puedes ir hacia javascript u otros.
Como ya te digo, todo depende de para qué lo quieras.
495  Programación / Programación C/C++ / Re: ayuda ejercicio pseudocodigo c en: 11 Octubre 2019, 23:42 pm
Echarte una mano sí podemos. Hacerte la tarea no... :silbar: :silbar:
Y la verdad es que esta parte la veo un poco rebuscada y creo que la condición está mal ya que es la misma:
Código:
sino
    si n<100 entonces
        digitos :=((n div 10) + (n mod 10 )) mod 3 =0 ;
    sino
___________________________________

___________________________________
496  Programación / Programación C/C++ / Re: Ayuda en: 11 Octubre 2019, 23:37 pm
La función <main()> puede recibir dos parámetros: un <int> y un <char*[]>. El primero indica el número de parámetros que le pasas al programa cuando lo ejecutas desde línea de comandos y el segundo es como una matriz donde cada fila es uno de los parámetros y cada columna es una letra. El nombre que le des da igual, siempre es lo mismo.

Como te han dicho, una pila internamente se puede implementar con un <array>. Entonces lo que tienes que hacer es un <array> de números en donde guardar los números hasta encontrar un operador. Yo estoy hablando para una notación polaca inversa, es decir, 3 4 +.
Te dejo el siguiente pseudocódigo. Esto es para que lo entiendas. Cuando entiendas cómo funciona tienes que pasarlo a C ya que el pseudocódigo no está escrito en C.
Código:
INICIO
    posicionActual := 0
    PEDIR expresion
    PARA i := 0 HASTA expresion.longitud - 1 HACER
        SEGUN expresion[i] HACER
            numero:
                numeros[posicionActual++] = expresion[i]
            +:
                numeros[posicionActual - 2] := numeros[posicionActual - 2] + numeros[posicionActual - 1]
                posicionActual := posicionActual - 2
            *:
                numeros[posicionActual - 2] := numeros[posicionActual - 2] + numeros[posicionActual - 1]
                posicionActual := posicionActual - 2

            //...igual para el resto de operadores

        FIN SEGUN
    FIN PARA

    MOSTRAR numeros[0]
FIN
497  Programación / Java / Re: Ayuda Ejercicio java ¡Urgente! en: 11 Octubre 2019, 02:05 am
Lo primero no pongas los códigos en plataformas externas si no son demasiado extensos. Es mejor que los agregues a tu comentario entre etiquetas de Código GeSHi donde puedes elegir el lenguaje que quieras (java en este caso).
Ese código no está bien... Tu código es este:
Clase: Rectangulo.
Código
  1. public class Rectangulo{
  2.    private double punto1; // que indica el punto 1?
  3.    private double punto2; // que indica el punto 2?
  4.    private double punto3; // que indica el punto 3?
  5.    private double punto4; // que indica el punto 4?
  6.  
  7.    public Rectangulo(double punto1, double punto2, double punto3, double punto4){
  8.        this.punto1 = punto1;
  9.        this.punto2 = punto2;
  10.        this.punto3 = punto3;
  11.        this.punto4 = punto4;
  12.    }
  13.  
  14.    public double area(double p1, double p2){ // para que pasas dos parametros...
  15.        double areaRec = punto1 * punto2; // ...si luego no los usas
  16.        return areaRec;
  17.    }
  18.  
  19.    public double perimetro(double p1, double p2, double p3, double p4){ // para que pasas 4 parametros...
  20.        double perimetro = punto1 + punto2 + punto3 + punto4; // ...si tampoco los usas
  21.        return perimetro;
  22.    }
  23. }
Clase principal: mainRectangulo.
Código
  1. public class mainRectangulo{
  2.    public static void main(String[] args){
  3.        int p1 = 0, p3 = 0; // estas variables para que si no se van a usar...
  4.        int p2 = 0, p4 = 0; // estas tampoco se van a usar...
  5.  
  6.        Rectangulo rec = new Rectangulo(3,2,3,2);
  7.        System.out.println("El area es: " + rec.area(p1, p2) + " m2"); // en vez de poner un espacio y luego m2 se puede poner junto
  8.        System.out.println("El perimetro es: " + rec.perimetro(p1, p2, p3, p4));
  9.    }
  10. }

Lo que yo te diría sería que crearas una clase <Punto> que tenga dos coordenadas: <x> e <y> y los métodos <set> y <get> habituales. Una clase <Rectangulo> que contenga 4 Puntos (es decir, 4 objetos de la clase Punto que indiquen las coordenadas de cada esquina del rectángulo).
Para calcular las longitudes de los lados del rectángulo tendrás que hacer un poco de trigonometría básica con las coordenadas y con ello calcular el área y el perímetro.
498  Programación / Java / Re: necesito ayuda con un ejercicio en: 11 Octubre 2019, 01:47 am
Yo diría que la estructuración de las clases está un poco mal hecha. Una clase sirve para encapsular una serie de características... Imagina que tienes un programa en el que tienes muchos productos y cada uno tiene un código, un precio, una cantidad de unidades disponibles y una cantidad de unidades vendidas. En ese caso sí tendría sentido crear una clase <Producto> tal que así:
Código
  1. public class Producto{
  2.    private String codigo;
  3.    private float precio;
  4.    private int unidadesDisponibles;
  5.    private int unidadesVendidas;
  6.  
  7.    // metodos correspondientes...
  8. }
No sé si te han pedido que crees esas clases o lo estás haciendo así por idea tuya... :rolleyes:
499  Programación / Programación C/C++ / Re: Ayuda en: 11 Octubre 2019, 01:33 am
No está mal aunque hay que pulir un par de cosas:
Antes de nada, los códigos ponlos entre etiquetas de Código GeSHi porque sino los índices no se ven y la i entre corchetes se convierte en cursiva y la u entre corchetes, en subrayado...
  • Para pedir una cadena al usuario no se usa <scanf()>, se usa <fgets()>
Código
  1. #define SIZE 100 // definimos un maximo de longitud para la cadena. Esto se pone justo despues de las librerias
  2. char cadena[SIZE];
  3. printf("Introduce una cadena: ");
  4. fgets(cadena, SIZE, stdin);
El siguiente problema es que al introducir una cadena y pulsar ENTER, el ENTER también se guardará en la cadena. Esto lo arreglamos rápido así:
Código
  1. cadena[strlen(cadena)-1] = '\0';
  • La segunda condición de tu bucle <while()> es innecesaria. Preguntas si <c> es un dígito Y si no es un espacio... Siempre que se cumpla que es un dígito, se cumplirá también que no es un espacio. Y si no es un dígito, la segunda condición dará igual.

Si lo que quieres conseguir es el resultado de calcular la expresión en notación polaca inversa, te falta esa parte.
500  Programación / Programación C/C++ / Re: Problema en C - Numeros aleatorios sin que se repitan en: 10 Octubre 2019, 23:26 pm
Lógicamente. generarAleatorio() e intercambiar() son "funciones" en pseudocódigo para que entiendas cuál es el proceso pero no existe ninguna función en C que se llame así...
Lo que tienes que hacer es implementar tú esa parte ya sea directamente en esa línea o crear una función y llamarla en esa línea.
Aparte de eso:
  • La variable limiteGenerados no tiene ningún valor por lo que no sabes cuántos números tienes que generar.
  • El array numeros[90] no tiene ningún valor.
Y tendrás que hacer algo con los números aleatorios supongo. Lo que yo te puse era el algoritmo que genera los números aleatorios, el resto del programa corre de tu cuenta.
Páginas: 1 ... 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [50] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 ... 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines