Necesito ayuda… con unas funciones del ADAgide para HASKEL!!!


  • 0

    Buenas chicos.. necesito que me ayudeis a compilar 4 funciones bajo ADA para HASKEL.. no tengo ni idea de como hacerlas.

    Son:

    fSUma
    fProducto
    fNumeroCifrasPares
    fSumaCifrasPares

    Las 2 primeras tratan de sumar o multiplicar todas los digitos de la cifra que le meta:

    Ej: 355 –> 3 + 5 + 5 = 13 o 3 * 5 * 5 = 75

    La 3ª trata de que me dige cuantos digitos de la cifra son pares:

    EJ: 4576 --> el 4 y 6 pro lo tanto 2

    Y la 4ª es para que me sume esos digitos de la cifra que sean pares

    Alguna sabe? :nono:

    Saludos



  • 1

    with ada.integer_text_io; use ada.integer_Text_io;
    procedure fsuma is
    n,m: integer;
    begin
    put ("introduce un numero: ");
    m:=0;
    while not end_of_line loop
    get(n);
    m:=m+n;
    end loop;
    new_line;
    put ("la suma de las cifras es: ");
    put (m);
    end fsuma;

    with ada.integer_text_io; use ada.integer_Text_io;
    procedure fproducto is
    n,m: integer;
    begin
    put ("introduce un numero: ");
    m:=1;
    while not end_of_line loop
    get(n);
    m:=m*n;
    end loop;
    new_line;
    put ("el producto de las cifras es: ");
    put (m);
    end fproducto;

    with ada.integer_text_io; use ada.integer_Text_io;
    procedure fnumerodecifraspares is
    n,m: integer;
    begin
    put ("introduce un numero: ");
    m:=0;
    while not end_of_line loop
    get(n);
    if mod 2 (n)=0 then –esta creo que era así, no me acuerdo mu bien :p
    m:=m+1;
    end if;
    end loop;
    new_line;
    put ("En tu numero hay: ");
    put (m);
    put ("cifras pares.");
    end fnumerodecifraspares;

    with ada.integer_text_io; use ada.integer_Text_io;
    procedure fsumacifraspares is
    n,m: integer;
    begin
    put ("introduce un numero: ");
    m:=0;
    while not end_of_line loop
    get(n);
    if mod 2 (n)=0 then
    m:=m+n;
    end if;
    end loop;
    new_line;
    put ("La suma de las cifras pares es: ");
    put (m);
    end fsumacifraspares;

    Bueno, pues algo así creo que funcionaria (de lo que no estoy muy seguro es de que el mod funcionara así, pero bueno... Habrá más maneras de hacerlo, pero esta es la primera que se me ha ocurrido.

    1 saludo



  • 2

    :muerto: :o

    FLIPA:. ni guarra de nada de lo que has puesto

    Yo debo hacerlo asi:

    fSuma :: Integer -> Integer
    –PRE
    --fSuma
    --POST
    fSuma(num) = ....

    Y asi con las 4... con funciones matematicas... con div, mod.. con otherwise..

    Vamos algo simple.. te juro que eso ni lo entiendo... :nono:



  • 3

    Mmmm, igual no estamos hablando de lo mismo :p
    Lo que tu dices que es? para hacer un package o algo o es q… joder, no entiendo nada :muerto:
    Bueno, es igual. A ver si alguien te puede ayudar con lo que pides pues



  • 4

    ¿pero como que "ADAgide para HASKELL"?

    el adagide es un editor de ADA, puedes hacer programas de haskell usando cualquier editor…

    la 1ª:
    355 rem10 + (355 div 10) rem10 + ((355 div 10) div10) rem 10 = 5 + 5 + 3

    suma (num) = if num == 0 then 0 else num rem10 + suma (num div 10)

    la 4ª:
    sumapares (n) = if n == 0 then 0
    else if even (n rem10) then (n rem10) + sumapares (n div 10)
    else sumapares (n div 10)

    la 3ª hazla tú, que es muy fácil teniendo la 4ª

    para empezar con haskell lo mejor es que te mires el prelude.hs y hagas pruebecillas. tu no serás de la FI, ¿no?





Has perdido la conexión. Reconectando a Hardlimit.