Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    5

    Problema esercizio e ciclo for

    Salve vi pongo un esercizio del mio professore con tanto di soluzione nella parte finale.
    Di questa soluzione però, non riesco a capire le ultime stringhe di comando, quelle evidenziate in Rosso.
    Io purtroppo sono alle prime armi con il C.
    Se qualcuno potesse aiutarmi a decifrarle mi darebbe un grande aiuto.
    Grazie in anticipo a tutti.


    Le richieste per alloggi studenti possono essere gestite attraverso le seguenti costanti e strutture:
    codice:
    const int MAXRIC = 100; 
    const int MAXS = 100; 
    
    typedef enum {Singola, Doppia} Tipo; 
    
    typedef struct{ 
    	char nome[MAXS]; 
    	char cognome[MAXS]; 
    	Tipo tipo; 
    	int punti; 
    } Richiesta; 
    
    typedef struct{ 
    	Richiesta ric[MAXRIC]; 
    	int numRich; 
    } InsiemeRichieste;
    La struttura Richiesta si compone di:
    un campo nome che contiene il nome dello studente che chiede un alloggio, il campo cognome che contiene il cognome dello studente stesso, un campo tipo che indica il tipo di alloggio richiesto (Singola o Doppia) e infine un campo punti che determinerà la sua posizione in graduatoria.
    La struttura InsiemeRichieste è composta da due campi: un array ric che contiene i dati delle richieste, e il campo numRich che indica il numero di richieste effettivamente presenti.

    Scrivere il corpo delle seguenti funzioni C:
    codice:
    int inserisci(InsiemeRichieste* pi, const char no[], const char co[], Tipo ti, bool fu, float re, float me)
    che inserisce nell'insieme una nuova richiesta di alloggio. La nuova richiesta può essere inserita solo se c'è spazio disponibile nell'insieme.
    I parametri no e co indicano rispettivamente il nome e il cognome dello studente che fa la richiesta. Il parametro ti indica se lo studente vuole una camera singola o una doppia.
    Il parametro fu indica se lo studente è fuorisede (1) oppure no (0). Il parametro re indica il reddito della sua famiglia. Il parametro me indica la media dei voti dello studente. I parametri fu, re e me vengono usati per calcolare i punti da associare alla richiesta.
    In particolare:
    Se lo studente è fuorisede vengono attribuiti 5 punti, 0 se non lo è.
    Se il reddito della famiglia è minore di 10000 vengono attribuiti 5 punti, se il reddito della famiglia è maggiore o uguale a 10000 ma minore di 20000 vengono attribuiti 2 punti, se il reddito è maggiore di 20000 non vengono attribuiti punti.
    Per quanto riguarda la media, vengono attribuiti punti in quantità pari alla differenza tra la media arrotondata all'intero più vicino e 18 (per esempio, se lo studente ha come media 23.3 gli verranno attribuiti 5 punti).
    Quando una nuova richiesta viene inserita nell'array ric, questa deve essere inserita in modo tale da lasciare tale array ordinato per valori decrescenti del campo punti. La funzione restituisce 1 se l'inserimento va a buon fine, 0 altrimenti.
    Suggerimento: utilizzare una funzione separata per il calcolo dei punti di una richiesta.

    codice:
    int calcolaPunti(int fuorisede, float reddito, float media){ 
      int p = 0; 
      if(fuorisede) p+=5; 
      if(reddito < 10000) p+=5; 
      else if(reddito < 20000) p+=2; 
      int x = round(media); 
      x -= 18; 
      p += x; 
      return p; 
    } 
    
    int inserisci(InsiemeRichieste* pi, const char no[], const char co[], Tipo ti, int fu, float re, float me) { 
      if(pi->numRich == MAXRIC) return 0; 
      Richiesta r; 
      strcpy(r.nome, no); 
      strcpy(r.cognome, co); 
      r.tipo = ti; 
      r.punti = calcolaPunti(fu, re, me); 
      int i=0;  
     for(; i<pi->numRich && r.punti<=pi->ric[i].punti; i++);   
     for(int j=pi->numRich; j>i; j--)      
    pi->ric[j] = pi->ric[j-1];   
    pi->ric[i] = r;   
    pi->numRich++;  
    return 1;  } 

  2. #2

    Moderazione

    Quando si apre una discussione in questa sezione bisogna sempre specificare nel titolo il linguaggio di riferimento tra parentesi quadre; inoltre è buona norma indentare il codice e racchiuderlo nei blocchi [code] ... [/code], altrimenti perde l'indentazione.
    Ora sistemo io, in futuro ricordatene tu fin da subito.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    5
    OK, chiedo venia, purtroppo sono nuovo.
    In ogni caso grazie mille!

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.