Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    (l:float list) in (l:int list) o anche solo in l
    Scherzetto, non ho prestato abbastanza attenzione perché facevo altro.
    codice:
    let to_float_list = List.map float;;
    
    
    let rec conta (l:float list) :float = match l with 
    [] -> 0.
    |x::xs -> 1. +. conta xs;;
    let rec somma (l:float list) :float = match l with
    [] -> 0.
    |x::xs -> x +. somma xs;; 
    let rec prodotto (l:float list) :float = match l with
    [] ->1.
    |x::xs -> x*. prodotto xs ;;
    let rec reciproci (l:float list) : float = match l with
    [] -> 0.
    |x::xs -> 1./.x +. reciproci xs;; 
    
    
    let media_aritmetica l = somma l /. conta l;;
    
    
    let media_geometrica l= (prodotto l)**( 1./.(conta l));; 
    
    
    let media_armonica l= ( conta l)**2. /.(reciproci l);;
    
    
    let rec means (l:int list) : (float * float * float) = let l' = to_float_list l in ( media_aritmetica l' , media_geometrica l' , media_armonica l');;
    Ultima modifica di Scara95; 03-11-2015 a 20:13
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  2. #12
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    8
    problema persiste!

    let to_float_list = List.map float;;


    let rec conta l = match to_float_list l with
    [] -> 0.
    |x::xs -> 1. + conta xs;;
    let rec somma l = match to_float_list l with
    [] -> 0.
    |x::xs -> x + somma xs;;
    let rec prodotto l = match to_float_list l with
    [] ->1.
    |x::xs -> x* prodotto xs ;;
    let rec reciproci l = match to_float_list l with
    [] -> 0.
    |x::xs -> 1./x + reciproci xs;;


    let media_aritmetica l :float = somma l / conta l;;


    let media_geometrica l :float= (prodotto l)**( 1./(conta l));;


    let media_armonica l :float= ( conta l)**2. /(reciproci l);;


    let means (l:int list) : (float * float * float) = ( media_aritmetica l , media_geometrica l , media_armonica l );;

  3. #13
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da nicfo Visualizza il messaggio
    problema persiste!

    let to_float_list = List.map float;;


    let rec conta l = match to_float_list l with
    [] -> 0.
    |x::xs -> 1. + conta xs;;
    let rec somma l = match to_float_list l with
    [] -> 0.
    |x::xs -> x + somma xs;;
    let rec prodotto l = match to_float_list l with
    [] ->1.
    |x::xs -> x* prodotto xs ;;
    let rec reciproci l = match to_float_list l with
    [] -> 0.
    |x::xs -> 1./x + reciproci xs;;


    let media_aritmetica l :float = somma l / conta l;;


    let media_geometrica l :float= (prodotto l)**( 1./(conta l));;


    let media_armonica l :float= ( conta l)**2. /(reciproci l);;


    let means (l:int list) : (float * float * float) = ( media_aritmetica l , media_geometrica l , media_armonica l );;
    Ho corretto, sempre per il fatto che non presto attenzione
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #14
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    8
    da errore dicendo riferimento ad un oggetto non impostato su un' istanza di un oggetto.. idee?
    per il resto codice fantastico

  5. #15
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da nicfo Visualizza il messaggio
    da errore dicendo riferimento ad un oggetto non impostato su un' istanza di un oggetto.. idee?
    per il resto codice fantastico
    http://try.ocamlpro.com qui non mi da alcun problema
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #16
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Comunque, dato che non avevo niente da fare mi sono dilettato a modificare un po' il tuo codice, se vuoi fare un po' di casino leggilo pure, altrimenti ignora:
    codice:
    let to_float_list = List.map float;;
    
    let recip x = 1./.x;;
    let const a b = a;;
    let (|-) f g a = f (g a);;
    let fork h f g a = f (h a) (g a);;
    
    
    let rec conta = float |- List.length;;
    let rec somma = List.fold_left (+.) 0.;; 
    let rec prodotto = List.fold_left ( *. ) 1.;;
    let rec reciproci = somma |- List.map recip;; 
    
    
    let media_aritmetica = fork somma (/.) conta;;
    
    
    let media_geometrica = fork prodotto ( ** ) (recip |- conta);; 
    
    
    let media_armonica = fork (fork conta ( ** ) (const 2.)) (/.) reciproci ;;
    
    
    
    
    let rec means l = let l' = to_float_list l in ( media_aritmetica l' , media_geometrica l' , media_armonica l');;
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #17
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    8
    grazie mille! sei stato gentilissimo

  8. #18
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Di nulla
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.