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

    [C] problema di min e max con un ciclo while

    Devo realizzare questo esercizio:
    /* Nelle gare di tuffi, ognuno dei giudici di gara attribuisce al concorrente
    un punteggio; il punteggio finale viene ottenuto calcolando la media, dopo
    avere scartato il valore più alto e il più basso fra i punteggi ottenuti.
    Scrivere un programma che, per un certo numero di concorrenti, riceva in input
    il nome e i relativi 10 punteggi e produca in output il punteggio finale di
    ciascun concorrente. */


    E mettendomi a smanettare ho trovato un problema nel calcolo del valore minimo e massimo dei punteggi di ciascun concorrente, mi calcola il massimo ma non il minimo. Tempo fa ho fatto un esercizio simile e funzionava tutto, ho provato ad applicare le stesse regole a questo ma non va.. Dove sbaglio?

    #include <stdio.h>
    #include <stdlib.h>
    main()
    {
    int nc;
    float contPTG=0, PTG, sommaPTG=0, mPTG, min, max, fPTG;
    char nome[20];
    printf("Inserisci il numero dei concorrenti: ");
    scanf("%d", &nc);
    while (nc>0)
    {
    printf("Inserisci nome: ");
    scanf("%s", &nome);
    printf("Inserisci il numero dei punteggi: ");
    scanf("%f", &contPTG);
    while (contPTG > 0)
    {
    printf("Inserisci punteggi: ");
    scanf("%f", &PTG);
    if (PTG>max) max=PTG;
    if (PTG<min) min=PTG;
    sommaPTG += PTG;
    contPTG--;
    }
    printf("La somma dei punteggi e': %f \n", sommaPTG);
    printf(" Il punteggio massimo e' = %f\n", max);
    printf(" Il punteggio minimo e' = %f\n", min);
    sommaPTG = 0;
    nc--;
    }
    system("pause");
    }

  2. #2
    Devi inizializzare min con un numero alto.
    Ad esempio se i punteggi vanno da uno a dieci poni min=11, altrimenti la condizione PTG<min non è mai verificata.
    “Guardo in alto mentre cammino, così le lacrime non scenderanno...”
    Kyu Sakamoto

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [C] problema di min e max con un ciclo while

    Originariamente inviato da nicuccia
    E mettendomi a smanettare ho trovato un problema nel calcolo del valore minimo e massimo dei punteggi di ciascun concorrente, mi calcola il massimo ma non il minimo. Tempo fa ho fatto un esercizio simile e funzionava tutto, ho provato ad applicare le stesse regole a questo ma non va.. Dove sbaglio?
    min e max non vengono inizializzati all'inizio, il loro valore è del tutto arbitrario.

    Quindi: o metti un flag o contatore e al primo valore fai in modo che max=PTG e min=PTG, oppure inizializzi min e max rispettivamente a un valore molto grande e molto piccolo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4

    Re: Re: [C] problema di min e max con un ciclo while

    I valori min e max non vanno inizializzati solo all'inizio ma anche dopo la stampa del minimo e massimo del cocorrente per resettare e quindi essere pronti a ricevere nuovi valori per il concorrente successivo...

    Codice PHP:
    #include <stdio.h>
    int main(void)
    {
    int nc;
    float contPTG=0PTGsommaPTG=0mPTGmin=11.0max=-1.0fPTG;
    char nome[20];
    printf("Inserisci il numero dei concorrenti: ");
    scanf("%d", &nc);
    while (
    nc>0){
          
    printf("Inserisci nome: ");
          
    scanf("%s", &nome);
          
    printf("Inserisci il numero dei punteggi: ");
          
    scanf("%f", &contPTG);
                while (
    contPTG 0){
                      
    printf("Inserisci punteggi: ");
                      
    scanf("%f", &PTG);
                      if (
    PTG>maxmax=PTG;
                      if (
    PTG<minmin=PTG;
                      
    sommaPTG += PTG;
                      
    contPTG--;
                      }
          
    printf("La somma dei punteggi e': %f \n"sommaPTG);
          
    printf(" Il punteggio massimo e' = %f\n"max);
          
    printf(" Il punteggio minimo e' = %f\n"min);
    /*assegno nuovamente un valore a min e a max per essere pronto a ricevere nuovi valori del concorrente successivo...*/
          
    min=11.0;
          
    max=-1.0;
          
    sommaPTG 0;
          
    nc--;
          }
    //pulisce il buffer...
    getchar();
    getchar();
    //chiude ritornando un valore intero
    return 0;

    Se una funzione riceve come argomento un puntatore di puntatore di puntatore quando la invochi ricordati che puo ricevere o un puntatore di puntatore di puntatore o l'indirizzo di un puntatore di puntatore

  5. #5
    Grazie mille ragazzi^^

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.