Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    1

    media costante dei numeri inseriti

    Salve a tutti!! Sono nuovo del forum e spero di trovarmi bene!! ;-)

    Sto frequentando il corso di "fondamenti di informatica 1" nella mia università: alla fine del corso dovremo presentare un programma di esempio creato da noi!

    Oggi ho avuto "l'ispirazione" x l'esempio. Un mio amico ha nella sua macchina un computer di bordo: questo, una volta premuto un pulsante x resettarlo, calcola i kilometri orari in media percorsi.
    L'idea è questa: simulare questo procedimento!!

    E' possibile secondo voi creare un programma ke, immettendo i km orari(che chiaramente vanno inseriti dall'utente, ma tanto è una simulazione!! ;-) ) ogni, ke so, 10 secondi, ogni volta ricalcola la media dal momento in cui l'ho
    fatto partire??

    Per esempio:

    All'inizio inserisci 80: ti da 80.
    Successivamente inserisci 90: ti da 85.
    Succ. inserisci 70: ti da 80 (la media tra 80, 90 e 70)

    In pratica, ogni numero inserito, ti ricalcola la media utilizzando tutti i numeri inseriti fino a quel momento.

    E questo iterato all'infinito, se possibile.

    Sfortunatamente non ho conoscenze molto approfondite del linguaggio di programmazione (il corso è iniziato un mese fa!), quindi potete anche omettere il codice, e spiegarmi solo i procedimenti (ricorsioni, composizioni....) necessari!

    Grazie a tutti... soprattutto x la pazienza!!!

    ViRuS

  2. #2
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    1,414
    Visto che nessuno rispondeva ci provo io...

    Sono un autodidatta principiante e ho pure io cominciato da poco, quindi i piu` grandi non storcano il naso se non e` il massimo :quipy:

    Non hai specificato con che linguaggio lo vuoi, ma io conoscendo solo il C ...

    ho pensato una cosa come questa, dimmi se va bene, eventualmente la correggi come vuoi e ci fai le varie modifiche, questa e` la versione di base:

    codice:
    #include <stdio.h>
    
    main() {
    
    float vel, tot, count, media;
    
    tot = 0;
    count = 0;
    
    printf ("programma di calcolo per la media di un viaggio\n");
    printf ("inserisci la velocita` \n");
    
    do {
    scanf ("%f" ,&vel);
    tot = tot+vel;
    count++;
    media = tot/count;
    printf ("la media e` %f\n" ,media);
    }
    while (vel != 0);
    printf ("fine del programma\n");
    return 0;
    }
    Allora il source e` banalissimo...

    in due parole:
    Ho usato un ciclo Do While itinerante per far si che venga immessa la velocita`, che sia sommata alle precedenti e che il contatore venga aumentato di 1, venga eseguita a divisione e stampato il risultato.

    Il programma tu lo volevi infinito, ma ho pensato che potesse essere comodo poterlo per te chiuderlo quando vuoi, per questo basta inserire '0' come velocita` e il prgramma si chiudera` automaticamente.

    Fammi sapere se ti va bene, se hai bisogno di ulteriori spiegazioni o modifiche...


  3. #3
    Utente di HTML.it L'avatar di Angioletto
    Registrato dal
    Jan 2004
    Messaggi
    1,246
    ho provato anche io a scriverti il programma..non volendo l'ho fatto grossomodo come ti era già stato proposto. Il trucco è semplice: è sufficiente crearti di volta in volta un nuovo vettore che contenga tutte le velocità inserite e calcolarne la media..

    #include <iostream.h>
    #include <stdlib.h>

    const int nmax=100;
    typedef int vettore[nmax];

    void crea_vettore(vettore, int&, int);
    float media(const vettore, const int);

    int main()
    {
    int speed;
    int size=0;
    int conteggi=0;
    vettore vett;

    do {
    cout << "Inserire la velocita' attuale: ";
    cin >> speed;
    conteggi++;
    cout << endl;
    crea_vettore (vett, size, speed);
    cout << "La media e': "<< media(vett, size)<<endl<<endl;
    } while (conteggi>0 && conteggi<nmax-1);

    system("PAUSE");
    return 0;
    }

    void crea_vettore (vettore vett, int& size, int speed)
    {
    size++;
    vett[size-1] = speed;
    }

    float media (const vettore vett, int size)
    {
    int somma = 0;
    for(int i=0; i<size; i++) somma=vett[i]+somma;

    return somma/size;

    }


    l'unica cosa che ancora non ho capito è che come valore di media mi restituisce sempre un intero e mai un float..
    prova un pò....

    Fammi sapere se ti è tutto chiaro!!

    Ciao!

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.