/* ENUNCIAT PRACTICA DISSENY1 (FI-ETIEI) Ates el moment que estem vivint a la UdG, el Servei Informatic de la nostra universitat necessita un programa informatic per fer el recompte de vots de l'eleccio a rector i ens l'encarrega. Dissenyeu un algorisme que permeti comptar els vots de cada candidat per sectors. El programa llegira en primer lloc els vots dels estudiants, despres els del personal d'administracio i serveis i, finalment, llegira els vots dels professors. El resultat que ha de donar el programa es el nom del candidat que hagi tret mes del 50% dels vots, si n'hi ha algun, o el nom dels dos candidats amb percentatges de vots mes elevats. Com sabeu tenim quatre candidats (Bonet, Duran, Geli, Moreno). Com que encara no sabeu treballar amb variables de mes d'un caracter, cada candidat l'identificarem am la seva inicial en majuscula (B, D, G, M). A efectes de la lectura de dades, cada vot vindra representat per un sol caracter (una lletra). Si aquest caracter no es correspon amb l'identificador d'un dels candidats, el vot es considerara nul. Els percentatges es calcularan sobre els vots valids, una vegada descomptats els nuls. algorisme recompte var votsB,votsD,votsG,votsM, votsValids : enter perB,perD,perG,perM: real vot : caracter grup : enter fvar grup := 0 votsB := 0 votsD := 0 votsG := 0 votsM := 0 votsValids := 0 EscriureFrase("RECOMPTE DE VOTS\n") mentre (grup < 3) fer EscriureFrase("\nIntrodueix els vots (B,D,G,M) ") si (grup = 0) llavors EscriureFrase("dels estudiants") (grup = 1) llavors EscriureFrase("del personal d'administracio") altrament EscriureFraser("dels professors") fsi EscriureFrase(" tots seguits \ni apreta retorn en acabar:\n") vot := LlegirCaracter() mentre (vot <> '\n') fer si (vot = 'B' o vot = 'b') llavors votsB := votsB +1 votsValids := votsValids +1 (vot = 'D' o vot = 'd') llavors votsD := votsD +1 votsValids := votsValids +1 (vot = 'G' o vot = 'g') llavors votsG := votsG +1 votsValids := votsValids +1 (vot = 'M' o vot = 'm') llavors votsM := votsM +1 votsValids := votsValids +1 fsi vot := LlegirCaracter() fmentre grup := grup + 1 fmentre si (votsValids > 0) llavors perB := real(votsB) * 100.0 / votsValids perD := real(votsD) * 100.0 / votsValids perG := real(votsG) * 100.0 / votsValids perM := real(votsM) * 100.0 / votsValids si (perB > 50.0) llavors EscriureFrase( "El guanyador es Bonet\n") (perD > 50.0) llavors EscriureFrase( "El guanyador es Duran\n") (perG > 50.0) llavors EscriureFrase( "El guanyador es Geli\n") (perM > 50.0) llavors EscriureFrase( "El guanyador es Moreno\n") altrament EscriureFrase( "El guanyadors son:\n") si ((perB >= perD i perB >= perG) o (perB >= perD i perB >= perM) o (perB >= perG i perB >= perM)) llavors EscriureFrase( "Bonet\n") fsi si ((perD >= perB i perD >= perG) o (perD >= perB i perD >= perM) o (perD >= perG i perD >= perM)) llavors EscriureFrase( "Duran\n") fsi si ((perG >= perB i perG >= perD) o (perG >= perB i perG >= perM) o (perG >= perD i perG >= perM)) llavors EscriureFrase( "Geli\n") fsi si ((perM >= perB i perM >= perD) o (perM >= perB i perM >= perG) o (perM >= perD i perM >= perG)) llavors EscriureFrase( "Moreno\n") fsi fsi altrament EscriureFrase("No hi ha hagut cap vot vālid !!!\n") fsi falgorisme */ #include "entsort.h" void main () { /* -------------------------------- DEFINICIO DE VARIABLES ---------------------------------------*/ int votsB,votsD,votsG,votsM,votsValids; float perB,perD,perG,perM; char vot; int grup; /* -------------------------------- INICIALITZACIONS ---------------------------------------*/ grup = 0; votsB = 0; votsD = 0; votsG = 0; votsM = 0; votsValids = 0; /* -------------------------------- RECOLLIDA DE VOTS ---------------------------------------*/ EscriureFrase("RECOMPTE DE VOTS\n"); while (grup < 3) { // CONTROLEM QUIN GRUP ESTA VOTANT // INICIALMENT GRUP = 0 I L'AUGMENTEM EN 1 A CADA VOLTA DE BUCLE EscriureFrase("\nIntrodueix els vots (B,D,G,M) "); if (grup == 0) { EscriureFrase("dels estudiants"); } else if (grup == 1) { EscriureFrase("del personal d'administracio"); } else { EscriureFrase("dels professors"); } EscriureFrase(" tots seguits \ni apreta retorn en acabar:\n"); // ARA QUE JA TENIM CLAR EL GRUP, ANEM A LLEGIR TOTS ELS VOTS D'AKEST GRUP //LLEGIM EL PRIMER VOT vot = LlegirCaracter(); // BUCLE MENTRE PER LLEGIR LA RESTA DE VOTS D'AQUEST GRUP, // IDENTIFIQUEM A QUIN CANDIDAT CORRESPON CADA VOT I AUGMENTEM EL COMPTADOR DEL CANDIDAT CORRESPONENT // TAMBE MANTENIM UN COMPTADOR PEL NUMERO TOTAL DE VOTS while (vot != '\n') { if (vot == 'B' || vot == 'b') { votsB = votsB +1; votsValids = votsValids +1; } else if (vot == 'D' || vot == 'd') { votsD = votsD +1; votsValids = votsValids +1; } else if (vot == 'G' || vot == 'g') { votsG = votsG +1; votsValids = votsValids +1; } else if (vot == 'M' || vot == 'm') { votsM = votsM +1; votsValids = votsValids +1; } vot = LlegirCaracter(); } grup = grup + 1; } /* -------------------------------- FI RECOLLIDA DE VOTS ---------------------------------------*/ /* -------------------------------- RECOMPTE DE VOTS ---------------------------------------*/ // CONTROLEM QUE HI HAGI VOTS VALIDS if (votsValids > 0) { // CALCULEM EL PERCENTATGE DE VOTS PER CADA CANDIDAT perB = float(votsB) * 100.0f / votsValids; perD = float(votsD) * 100.0f / votsValids; perG = float(votsG) * 100.0f / votsValids; perM = float(votsM) * 100.0f / votsValids; // CALCUL DEL GUANYADOR: // EN PRIMER LLOC MIRAREM SI ALGUN CANDIDAT SUPERA EL 50% DE VOTS // SI ES AIXI, AQUEST CANDIDAT SERA EL GUANYADOR if (perB > 50.0) { EscriureFrase( "El guanyador es Bonet.\n"); } else if (perD > 50.0) { EscriureFrase( "El guanyador es Duran.\n"); } else if (perG > 50.0) { EscriureFrase( "El guanyador es Geli.\n"); } else if (perM > 50.0) { EscriureFrase( "El guanyador es Moreno.\n"); } else { // EN CAS QUE CAP CANDIDAT SUPERES EL 50% CAL VEURE QUINS SON // ELS DOS CANDIDATS AMB MAJOR PERCENTATGE EscriureFrase( "\nEls guanyadors son:\n"); if ((perB >= perD && perB >= perG) || (perB >= perD && perB >= perM) || (perB >= perG && perB >= perM)) { EscriureFrase(" Bonet\n"); } if ((perD >= perB && perD >= perG) || (perD >= perB && perD >= perM) || (perD >= perG && perD >= perM)) { EscriureFrase(" Duran\n"); } if ((perG >= perB && perG >= perD) || (perG >= perB && perG >= perM) || (perG >= perD && perG >= perM)) { EscriureFrase(" Geli\n"); } if ((perM >= perB && perM >= perD) || (perM >= perB && perM >= perG) || (perM >= perD && perM >= perG)) { EscriureFrase(" Moreno\n"); } } } else { EscriureFrase("No hi ha hagut cap vot valid !!!\n"); } }