05/01/10 12:51
riccardobucco
Postato originariamente da Astaroth:
Questa volta devo scrivere una funzione che visualizzi le vocali comprese tra due caratteri inseriti dall'utente e il loro numero. Se i caratteri non sono inseriti nell'ordine corretto (ad esempio se 'z' è inserito prima di 'a'), la funzione restituisce il valore -1. Se dovessi inserire due caratteri separati da uno spazio, come dovrei modificare il codice?
Questa volta devo scrivere una funzione che visualizzi le vocali comprese tra due caratteri inseriti dall'utente e il loro numero. Se i caratteri non sono inseriti nell'ordine corretto (ad esempio se 'z' è inserito prima di 'a'), la funzione restituisce il valore -1. Se dovessi inserire due caratteri separati da uno spazio, come dovrei modificare il codice?
#include<stdio.h> #include<stdlib.h> int Vocali(char c1, char c2); main() { char car1, car2; int voc; printf("Inserire due caratteri separati da spazio: "); scanf("%c%c", &car1, &car2); voc=Vocali(car1, car2); printf("\nIl numero di vocali tra i due caratteri e': %d", voc); printf("\n"); system("pause"); return 0; } int Vocali(char c1, char c2) { int dif=c2-c1; int i; int v=0; if(dif>0) { for(i=0; i<dif; i++) { if(c1=='a' || c1=='e' || c1=='i' || c1=='o' || c1=='u' || c1=='A' || c1=='E' || c1=='I' || c1=='O' || c1=='U') { printf("%c", c1); v++; }c1++; } return v; } else return -1; }
allora, il tuo programma dovrebbe funzionare correttamente solo se i caratteri che tu inserisci in input non sono separati da uno spazio (giusto, no?).
ad es:
input "bf"
output "1" (corretto)
input "b f"
output "-1" (errato)
quindi o ti adegui a scrivere i due caratteri senza separarli dallo spazio altrimenti, invece di leggere in input due caratteri come hai fatto tu
printf("Inserire due caratteri separati da spazio: "); scanf("%c%c", &car1, &car2);
ne leggi tre (il secondo, quello intermedio, è lo spazio). quindi:
printf("Inserire due caratteri separati da spazio: "); scanf("%c%c%c", &car1, &car2, &car3);
il programma risulterà quindi questo (basta sostituire car3 a car2):
#include<stdio.h> #include<stdlib.h> int Vocali(char c1, char c2); main() { char car1, car2, car3; int voc; printf("Inserire due caratteri separati da spazio: "); scanf("%c%c%c", &car1, &car2, &car3); voc=Vocali(car1, car3); printf("\nIl numero di vocali tra i due caratteri e': %d", voc); printf("\n"); system("pause"); return 0; } int Vocali(char c1, char c2) { int dif=c2-c1; int i; int v=0; if(dif>0) { for(i=0; i<dif; i++) { if(c1=='a' || c1=='e' || c1=='i' || c1=='o' || c1=='u' || c1=='A' || c1=='E' || c1=='I' || c1=='O' || c1=='U') { printf("%c", c1); v++; }c1++; } return v; } else return -1; }
aaa