Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965

    [Pascal] funzione elevamento a potenza

    codice:
    function powto(base,esp:integer) : integer;
    begin
        temp:=0;
        for temp:=1 to esp do
        begin
        if esp=0 then
        returned:=1
        else
        returned:=returned * base;
        end;
        writeln(returned);
        powto:=returned;
    end;
    ho qualche problema nel definire la funzione e specificare il valore di ritorno
    purtroppo il pascal non l'ho mai studiato seriamente e faccio programmi da autodidatta

    ciao

  2. #2
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    Il valore di ritorno nn deve essere uno dei valori immessi. Quindi c'è bisogno di un nuovo dato che chiamo 'comodo':

    codice:
    function powto (base,esp:integer) : integer ;
    
    var temp,comodo:integer ;
    
    begin
    
    comodo:=base ;
    
    for temp:=1 to esp do
    
    begin
    
    esp:=esp+1 ;
    
    comodo:=comodo*base ;
    
    end
    
    powto:=comodo ;
    
    end ;
    Dovrebbe funzionare


  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Originariamente inviato da Lardoman
    codice:
    function powto (base,esp:integer) : integer ;
    
    var temp,comodo:integer ;
    
    begin
    
    comodo:=base ;
    
    for temp:=1 to esp do
    
    begin
    
    esp:=esp+1 ;
    
    comodo:=comodo*base ;
    
    end
    
    powto:=comodo ;
    
    end ;
    Dovrebbe funzionare

    Ehm... non tieni conto che che l'esponente potrebbe essere 0, nel qual caso dovrebbe tornare 1 e in più c'è una cosa strana... perchè hai messo l'istruzione
    codice:
    esp := esp + 1;
    Che fa andare in LOOP il programma??

    Comunque, nel caso tu voglia avere una funzione ricorsiva, hai anche questa possibilità:
    codice:
    function powto (base, esp : integer) : integer;
    begin
       int result;
       result := 1;
       If (esp > 0) Then
          result := base * powto(base, esp-1);
       powto := result;
    end;
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    Ops,che coglione,hai ragione

    Devo averla messa pensando che fosse un ciclo while....

  5. #5
    Utente di HTML.it L'avatar di tom69
    Registrato dal
    Mar 2004
    Messaggi
    150
    Piccolo Consiglio : non usate nella funzione "potenza" le variabili di tipo integer perchè se le passiamo parametri di media grandezza il programma potrebbe segnalare il runtime error, cosa da non sottovalutare!!! :adhone:
    Pochi vivono: la maggior parte della gente esiste e nulla più...

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    non c'è nulla tipo 'long' di c/c++ o bisogna usare i real?

    cmq il pascal e' facile, ma siccome ho affrontato prima altri linguaggi, alcuni particolari mi portano a sbagliare

  7. #7
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    Originariamente inviato da keratox
    non c'è nulla tipo 'long' di c/c++ o bisogna usare i real?

    cmq il pascal e' facile, ma siccome ho affrontato prima altri linguaggi, alcuni particolari mi portano a sbagliare
    Certo che esistee! Si chiama 'longint' ed è compreso tra -2147483648 e 2147483647 (occupa 4 byte)

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    miticooo
    thx

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 © 2024 vBulletin Solutions, Inc. All rights reserved.