Piccolo programmino di C

di il
31 risposte

Piccolo programmino di C

Sto creando un programma che mi permetta di calcolare i valori della tangente per valori random compresi tra [0,2pi_greco].
So che la tangente non esiste per valori di pi_greco/2+k*pi_greco.
Non so come aggiungere questa condizione al programmino per escludere quei valori e dire che la tangente non esiste. Spero ci sia qualcuno qui ad aiutarmi!!



#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#define PI 3.14159
#define N 20

int main()
{
    int i;
    float f=0.0,x[N];
    srand(time(NULL));

    for(i=0; i<N; i++)
    
    {
       
       x[i]=fmod(rand(),(2.*PI));
        
       f=tan(x[i]);
       printf("Tan(%f)=%f\n", x[i],f);
       
       
   }
   getchar();
}

31 Risposte

  • Re: Piccolo programmino di C

    Imposta una if su x che è l'argomento della tangente
  • Re: Piccolo programmino di C

    Avevo pensato di modificare cosi il seguente programma ma quando esegue mi da tutti 0 praticamente .
    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<time.h>
    #define PI 3.14159
    #define N 20
    
    int main()
    {
        int i;
        float f=0.0,x[N];
        srand(time(NULL));
    
        for(i=0; i<N; i++)
        
        {
           
           x[i]=fmod(rand(),(2.*PI));
           if(x[i]=(1/2)*PI&&(3/2)*PI)
           printf("la tangente non esiste");
           else {                           
           f=tan(x[i]);
           printf("Tan(%f)=%f\n", x[i],f);
           
           
       }
       }
       getchar();
    }
    
  • Re: Piccolo programmino di C

    Guarda che il confronto si fa con == e non con =
  • Re: Piccolo programmino di C

    E' veroooo che sbadatoo!!!
    Comunque adesso funziona , solo che ovviamente provando un paio di volte ad eseguire non mi è capitato nessun caso in cui uscisse fuori che la tangente non esiste , spero sia per caso che non sia spuntato fuori tale caso.
    Esclude quei valori in questo modo giusto?
  • Re: Piccolo programmino di C

    Non mi pare che quella if sia scritta correttamente ...
  • Re: Piccolo programmino di C

    Non capisco perchè...
  • Re: Piccolo programmino di C

    Come hai scritto ?
  • Re: Piccolo programmino di C

    if(x[i]==(1/2)*PI&&(3/2)*PI)
           printf("la tangente non esiste");
           else {                           
           f=tan(x[i]);
           printf("Tan(%f)=%f\n", x[i],f);
           
           
       }
  • Re: Piccolo programmino di C

    Beh, questa if

    if (x == (1/2)*PI && (3/2)*PI)

    non è proprio valida ... In C non si scrive così una if ...
  • Re: Piccolo programmino di C

    Va bene , grazie per il suggerimento.
  • Re: Piccolo programmino di C

    Accetto altri consigli su come aggiustare il programma.. Grazie.
  • Re: Piccolo programmino di C

    Grazie ultrasound, adesso ho capito l'if , ma invece il secondo punto non mi è chiaro...
  • Re: Piccolo programmino di C

    Nella if fai un confronto in due parti.

    Ora, tralasciando per il momento il fatto che il controllo sia effettivamente corretto, la prima parte è

    x == (1/2)*PI

    ed è scritta correttamente. La seconda è

    (3/2)*PI

    e non è un confronto valido. Forse volevi scrivere

    x == (3/2)*PI

    Ma la && non va affatto bene perché non può essere contemporaneamente due valori ... devi inserire la ||

    In questo modo controlli che l'argomento non sia PI/2 o 3PI/2 ...
  • Re: Piccolo programmino di C

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<time.h>
    #define PI 3.14159
    #define N 20
    
    int main()
    {
        int i;
        float f=0.0,x[N];
        srand(time(NULL));
    
        for(i=0; i<N; i++)
        
        {
           
           x[i]=fmod(rand(),(2.*PI));
           if(x[i]==(1/2)*PI||x[i]==(3/2)*PI)
           printf("la tangente non esiste");
           else {                           
           f=tan(x[i]);
           printf("Tan(%f)=%f\n", x[i],f);
           
           
       }
       }
       getchar();
    }

    Ho modificato coosi il programma ma quando eseguo mi da alcuni valori totalmente sballati. Come mai secondo voi ? :/
Devi accedere o registrarti per scrivere nel forum
31 risposte