Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Primo programma in C con funzioni

    Salve a tutti, riuscite a capire che cosa non funziona in questo semplice programma in C?

    #include <stdio.h>
    #include <stdlib.h>
    int FR(int v);
    int main()
    {
    int k;
    int a;
    scanf("%d",&k);
    a=FR(k);
    printf("%d\n",a);
    system("pause");
    return 0;
    }

    int FR(int v)
    {
    if (v=1)
    { return 1;
    }else{
    return v+FR(v-1);
    }
    }
    /*
    Dovrebbe fare la stessa cosa di questo programma in Visual Basic 6...

    Option Explicit
    Dim k As Integer

    Private Sub cmdMain_Click()
    k = CInt(InputBox("Inserisci un numero", ""))
    MsgBox FR(k)
    End Sub

    Private Function FR(v As Integer)
    If v = 1 Then
    FR = 1
    Else
    FR = v + FR(v - 1)
    End If
    End Function */

  2. #2
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447

    Re: Primo programma in C con funzioni

    Personalmente non so dirti dove sia l'errore perchè non so in che linguaggio è scritto il secondo programma...

    La prossima volta ricordati di inserire il codice all'interno del tag CODE.

  3. #3
    Il secondo programma è scritto in VB6
    (Cos'è il tag CODE?)

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    codice:
    int FR(int v)
    {
      if (v=1){
          return 1;
      } else {
          return v+FR(v-1); 
      }
    }
    Scusa, ma qual è l'errore che riscontri?

    Nel blocco condizionale della funzione FR non dovrebbero esserci due segni di uguale? Altrimenti, così come l'hai scritta tu, è un'assegnazione e non un confronto.

  5. #5
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao . . . Il problema sta nell' istruzione
    codice:
     if(v=1)
    In questo caso verrà eseguita sempre questa istruzione . . . Se volevi effettuare un confronto devi scrivere
    codice:
     if(v==1)
    Edit: come non detto
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    OT

    Scusa nicola92, ma che succede se alla funzione FR passi un valore v negativo?
    Non hai un'uscita dalle chiamate ricorsive

  7. #7
    Grazie, l'errore stava nell'istruzione (v=1), se metto un doppio uguale funziona.
    Se metto un numero negativo il programma si chiude, perché? Devo cambiare tipo di variabile?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Perché non provi a spiegartelo da solo il motivo? Secondo te, con un numero negativo cosa succede nella funzione ricorsiva? La variabile viene decrementata... cioè se all'inizio è -1 diventa -2, -3, -4... e quando si ferma la ricorsione? E soprattutto... si ferma la ricorsione?
    every day above ground is a good one

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Originariamente inviato da nicola92
    Grazie, l'errore stava nell'istruzione (v=1), se metto un doppio uguale funziona.
    Se metto un numero negativo il programma si chiude, perché? Devo cambiare tipo di variabile?
    Io, nel codice che hai postato, non vedo nessun controllo sul numero che acquisisci e passi a FR. Quindi, se metti un numero negativo, la funzione FR sarà richiamata all'infinito.

  10. #10
    Ok, grazie mille per l'aiuto!

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.