Programma che non va.

di il
17 risposte

Programma che non va.

Creare un programma che allochi in maniera dinamica un vettore di 1000 valori di tipo
double. Il programma inizializzi il vettore con valori pseudo-casuali tra 0.0 e 1.0 e ne calcoli la somma e la media.


#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>


#define N 10

void stampavettore(float vect[N]);
     main() {
        
        int i;
        float somma;
        float media ;
        somma=0.00;
        media=0.00;
        float vect[N];
        srand(time(NULL));
        for(i=0;i<N;i++)
        //vect[i]=rand()%5;
        vect[i]=fmod(rand(),(3));
        
        printf("\n Genero un vettore di dimensioni %f:\n\n",N);
        stampavettore(vect);
        for(i=0;i<N;i++)
        somma=somma+vect[i];
      
        media=(somma)/(N);
      
        printf("\n\nSomma=%f\tMedia%f\n\n",somma,media);
        getchar();
        }
        
        
        
        
        
        
        void stampavettore(float vect[N])
{
     int i;
     for(i=0;i<N;i++){
     
                     printf("%4f",vect[i]);
                     printf("\n\n");
                     }                                    
     
}


Il programma entra in esecuzione perfettamente , solo che i valori che mi stampa sullo schermo sono tutti : 0.0000., e anche la somma e la media ovviamente viene stampata 0.00000.
Qualcuno sa dirmi il perchè o indicarmi la retta via ? grazie

17 Risposte

  • Re: Programma che non va.

    Per cominciare l'esercizio parla di

    double

    e di "allocazione dinamica"

    ma non ne vedo né i double né l'allocazione dinamica
  • Re: Programma che non va.

    Erroraccio sui double , hai ragione , ma per quanto riguarda l'allocazione dinamica io ho pensato di risolvere con un ciclo for !!
  • Re: Programma che non va.

    Cosa c'entra l'allocazione dinamica con il ciclo for ?
  • Re: Programma che non va.

    Non ho capito..
  • Re: Programma che non va.

    Hai scritto

    "per quanto riguarda l'allocazione dinamica io ho pensato di risolvere con un ciclo for !!"

    e non capisco cosa c'entri l'allocazione dinamica e il ciclo for ...
  • Re: Programma che non va.

    Sisi ho capito, sono totalmente fuori strada!!!
  • Re: Programma che non va.

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    main()
    {
    double *a;
    int i,n;
    int b;
    double somma,media;
    srand(time(NULL));
    somma=0.0;
    media=0.0;
    
    printf("Immettere dimensione: ");
    scanf("%d",&n);
    
    a=(double*)malloc(n*sizeof(double));
    for(i=0;i<=n;i++)
    {
    b=rand();
    a[i]=b;}
    
    for(i=0;i<n;i++)
    somma=somma+a[i];
    
    media=somma/n;
    
    printf("Somma=%lf\tMedia=%lf\n\n",somma,media);
    
    
    system("pause");
    }
    Come mai l'exe per somma e media mi da numeri del genere: '' 95467.0000''?
    Adesso l'allocazione penso ci sia... :/
  • Re: Programma che non va.

    Adesso va bene l'allocazione dinamica (con la malloc) ma l'esercizio ti chiede

    1000

    elementi molto chiaramente, non ti chiede n elementi da far decidere all'utente !
  • Re: Programma che non va.

    Oregon ma come mai quando mando in exe il programma visualizzo cifre per la somma e la media del genere:'' 108185.0000'', ''21637.000''? ??
    Io per semplicità ho inserito N=5 per avere dimensioni ridotte ma visualizzo sempre lo stesso problema!!!
  • Re: Programma che non va.

    Intanto deve essere

    for(i=0;i<n;i++)

    e non

    for(i=0;i<=n;i++)

    Il problema dei valori è causato dalla

    b=rand();

    dato che rand restituisce un valore intero compreso tra 0 e 32767

    Se devi ridurlo a 0 o 1 devi scrivere

    b=rand() % 2;
  • Re: Programma che non va.

    Si adesso funziona perfettamente , ti ringrazio moltissimo oregon
  • Re: Programma che non va.

    Sì però l'esercizio voleva dei double ... quindi penso volesse dei valori random compresi tra 0 e 1, anche 0.4 o 0.5 ...

    Quindi

    a=((double) rand() / (RAND_MAX+1)) ;
  • Re: Programma che non va.

    @Oregon ma devo impostare minimo massimo somma media a double?
  • Re: Programma che non va.

    .
Devi accedere o registrarti per scrivere nel forum
17 risposte