Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] Problema calcolo media

    Ciao a tutti...
    Devo creare un programma che prenda in ingresso un numero massimo di 10 imbarcazioni, con le seguenti informazioni:
    -num. matricola (12 caratteri alfanumerici)
    -4 variazioni di tensioni (relative non ricordo a cosa, ma non credo sia rilevante) (float)
    -5 rilevazioni di temperatura (float)

    Se le imbarcazioni da registrare sono meno di 10, il programma smette di registrarle quando viene inserito come numero di matricola "0"...

    Fin qui non ho riscontrato nessun errore...

    Dopo aver fatto questo, chiede di calcolare attraverso una funzione, per ogni imbarcazione la media delle temperature rilevate..

    Io sono fermamente convinto di aver agito nel modo corretto, e quindi non sono riuscito a trovare l'errore; in pratica somma soltanto le prime 4 temperature, trascurando l'ultima, e poi divide normalmente per 5, ottenendo naturalmente un valore errato della media..

    Ovviamente per rendervi il tutto più comprensibile, vi allego il codice:

    codice:
    #include <stdio.h>
    
    struct nave {
           char matr[12];
           float V[3];
           float T[4];
           };
           
    float media (struct nave);       
           
    main () {
         
         struct nave nav[9];
         int i, n, x;
         float m;
         
         for (i=0; i<=9; i++) {
             printf("\n\nImbarcazione n.%d:\n", i+1);
             printf("Inserisci n. matricola: ");
             scanf ("%s", nav[i].matr);
             if (!strcmp("0",nav[i].matr)) break;
             for (n=0; n<=3;n++) {
                 printf("Tensione n.%d: ", n+1);
                 scanf ("%f", &nav[i].V[n]);
                 
                 }
             for (n=0; n<=4;n++) {
                 printf("Temperatura n.%d: ", n+1);
                 scanf ("%f", &nav[i].T[n]);
                 
                 }
                 
                 }
                 printf("\n\n\n");
                 
         for (x=0; x<i; x++) {
             printf ("media temperature imbarcazione n. %d matr. %s: ", x+1, nav[x].matr);
             m= media(nav[x]);
             printf("%f\n\n", m);
             }
                 
                 
                 system ("PAUSE");
                 
                 }
    
    
    float media (struct nave nav) {
          int i;
          float n;
          n=0.0;
          
          for (i=0;i<=4;i++) n=n+nav.T[i];
              
              
              
          n=n/5.0;
          
          return n;
    }
    Grazie anticipatamente.

  2. #2
    Add: Successivamente alla media delle temperature, mi chiede di trovare, sempre tramite una funzione, il valore massimo di variazione di tensione per ogni imbarcazione...

    Anche qui riscontro lo stesso problema, cioè, se la tensione massima è l'ultima, non mi considera quella, bensì quella massima tra le prime 3.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Se sono 4 tensioni e 5 temperature allora devi scrivere

    codice:
    struct nave {
           char matr[12];
           float V[4];
           float T[5];
           };
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Oddio, che vergogna.

    Mi ero intestardito sul fatto che si contasse anche lo 0, cosa che invece non significa niente per quanto riguarda l'allocazione.

    Tra l'altro avevo fatto anche questa modifica, però assieme ad altre, e quindi il problema continuava a sussistere.

    Grazie mille.

    Potete chiudere (e anche cancellare ).

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.