Esercizio di C non funzionale al 100 per cento

di il
20 risposte

Esercizio di C non funzionale al 100 per cento

Devo creare un programma che stampi i valori della funzione coseno per almeno 20 diversi valori della variabile di ingresso tra 0 e 2p (si consideri p = 3.14159)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#define PI 3.14159
#define N 20
main(){
int i;
float f=0.0,x[N];
srand(time(NULL));

for(i=0; i<N; i++){
x[i]=rand()%2*PI;
f=cos(x[i]);
printf("Cos(%f)=%f\n", x[i],f);
getchar(); }
}
Il programma funziona , solo che non mi da i valori compresi tra 0 e 2pi_greco ma solo i due estremi!!!!

20 Risposte

  • Re: Esercizio di C non funzionale al 100 per cento

    Il ciclo devi farlo da 0 a 19 e non da 0 a N

    E perché utilizzi il random? I 20 valori saranno distribuiti da 0 a 2PI dividendo 2PI per 20
    Questo sarà il "passo" dell'argomento del coseno

    P.S. E' possibile che non inserisci mai i tag CODE?
  • Re: Esercizio di C non funzionale al 100 per cento

    Per favore puoi dirmi come inserire il tag CODE che non lo trovo???
  • Re: Esercizio di C non funzionale al 100 per cento

    Quello che ho fatto io è modificare il ciclo for mettendo N<20 ed eliminare il rigo del random , intendevi questo?
  • Re: Esercizio di C non funzionale al 100 per cento

    Controlla il tuo primo messaggio. Fai modifica e vedi cos'è cambiato
  • Re: Esercizio di C non funzionale al 100 per cento

    Skynet non è modificato e non riesco a capire cosa abbia detto oregon!!!
  • Re: Esercizio di C non funzionale al 100 per cento

    [CODE]il tuo codice in mezzo[/CODE]
    Non lo vedi il cambiamento?
    Quelli sono i tag code che fanno si che il tuo codice sembra codice e non testo ovvero
    il tuo codice in mezzo
  • Re: Esercizio di C non funzionale al 100 per cento

    Qualcuno che mi potrebbe aiutare ad individuare gli errori che ho commesso c'è??? grazie
  • Re: Esercizio di C non funzionale al 100 per cento

    L'ho fatto ... ti ho risposto ...
  • Re: Esercizio di C non funzionale al 100 per cento

        
     
    #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=cos(x[i]);
           printf("Cos(%f)=%f\n", x[i],f);
       }
    }
    
    Aiutati e sarai aiutato. Rand funziona solo su interi. Facevi il rad() tra 0 e 1 e poi moltiplicavi per PI. Cosa ti aspettavi?
  • Re: Esercizio di C non funzionale al 100 per cento

    Lo hai fatto con questo messaggio :'' Il ciclo devi farlo da 0 a 19 e non da 0 a N

    E perché utilizzi il random? I 20 valori saranno distribuiti da 0 a 2PI dividendo 2PI per 20
    Questo sarà il "passo" dell'argomento del coseno

    P.S. E' possibile che non inserisci mai i tag CODE?''

    Ti ho detto che non riesco a capire questo messaggio, dico che ti costa modificare il programma che ho scritto sopra?
  • Re: Esercizio di C non funzionale al 100 per cento

    daniele90 ha scritto:


    che ti costa modificare il programma che ho scritto sopra?
    Lo stesso costo che hai tu a "tentare" di modificarlo in base ai miei suggerimenti.

    Se ti chiedono venti valori del coseno non è detto che debbano essere casuali.
    Basta calcolare 20 valori del coseno tra 0 e 2PI (tra 0 e 6,28318). Se dividi 2PI per 19, come di dicevo, ti basta calcolare il coseno di

    0 x 0,3306936842105263
    1 x 0,3306936842105263
    2 x 0,3306936842105263
    3 x 0,3306936842105263
    ...
    19 x 0,3306936842105263

    in cui il primo valore è l'indice i e il secondo, appunto, (2PI/(N-1))

    EDIT: meglio dividere per 19 e non per 20 per avere tutto il range coperto dal calcolo
  • Re: Esercizio di C non funzionale al 100 per cento

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<time.h>
    #define PI 3.14159
    #define N 20
    main(){
    int i;
    float f=0.0,x;
    srand(time(NULL));

    for(i=0;i<19;i++) {
    x=2*PI/20;
    f=cos(x*i);
    printf("Cos(%f)=%f\n", x,f);
    getchar();
    }
    }



    Cosi va bene oregon?
  • Re: Esercizio di C non funzionale al 100 per cento

    Come ho corretto nella mia risposta precedente, è meglio dividere per 19 e non per 20 ...

    Se metti i tag CODE bene, si legge qualcosa ...

    Comunque

    1) la srand non è necessaria, non devi utilizzare valori casuali

    2) neanche l'include <time.h> è necessario (vedi punto 1)

    3) è meglio utilizzare i double al posto dei float

    4) il valore del passo va calcolato fuori dal ciclo una sola volta
    double step = (2*PI)/(N-1)

    5) devi comunque utilizzare il vettore x[ ] come avevi fatto prima
  • Re: Esercizio di C non funzionale al 100 per cento

    Grazie mille ad entrambi per l'aiuto
    Comunque ho notato che non appena mando il programma , esso parte ma rimane aperto solo per pochi istanti... è normale?
Devi accedere o registrarti per scrivere nel forum
20 risposte