/* llegirnum com una acció en C */ /* com que és una acció, és una funció de tipus void */ void llegirnum(int min,int max, int *n) /* i la variable que ha de retornar la passarem des del main per referència (*n) */ { do { scanf("%d", n); /* fixeu-vos que no fem scanf("%d",&n) com solem fer. Això és perquè n JA ÈS UNA POSICIÓ DE MEMÒRIA, recordeu que ha estat declarada com a punter */ if (*n < min || *n > max) /* Això si, com que n es una posició de memòria , per consultar el valor introduït per l'usuari no hem de preguntar per n sinó per *n, que serà el contingut de la posició de memória que li hem passat al scanf, i per tant, on s'haurà guardat el valor introduït */ printf("NO ES VALID "); } while(*n < min || *n > max); } /* ¿Com cridarem a la funció d'aquesta manera?. Molt senzill. Si és una funció tipus void, no torna cap valor directament, per tant no podem fer res tipus "x = llegirnum...". Haurem de cridar a llegirnum, passant-li els paràmetres que hem definit en la seva declaració: llegirnum(1,3,&num) per exemple, llegiria un numero num que ha d'estar entre 1 i 3. */ /* llegir_sn com una acció en C */ /* com que és una acció, és una funció de tipus void */ void llegir_sn(char *siono) /* i la variable que ha de retornar la passarem des del main per referència (*siono) */ { do { scanf("%c", siono); /* fixeu-vos que no fem scanf("%c",&siono). La variable siono, igual que la variable n en la funcio llegirnum, es una posicio de memoria */ } while(*siono != 's' && *siono!= 'S' && *siono != 'n' && *siono != 'N'); /* De nou, per consultar el valor introduït per l'usuari no hem de preguntar per siono sinó per *siono, que serà el contingut de la posició de memoria que li hem passat al scanf, i per tant, on s'haurà guardat el valor introduït */ if (*siono == 's') *siono='S'; if (*siono == 'n') *siono='N'; } /* La crida a la funcio la farem de la mateixa manera que amb el llegirnum. La funció tipus void no torna cap valor directament, per tant no podem fer res tipus "x = llegir_sn...". Haurem de cridar a llegir_sn, passant-li la variable que ha d'omplir, per referencia: llegir_sn(&sn) */