Mein Programm ist eigentlich so gut wie fertig, aber hat einen Fehler, bzw. erfüllt einen Punkt nicht und ich komme einfach nicht drauf, wie ich das beheben kann.
Die Aufgabenstellung besagt, man solle einen String einlesen, und diesen auf den Buchstaben "g" (103) kontrollieren.
Stehen 2 oder mehr gs zusammen, sind sie "glücklich",
steht jedoch irgendwo ein g alleine im String, unabhängig davon ob bereits woanders welche zusammenstehen,
soll "unglücklich" ausgegeben werden (oder wenn eben gar kein g im String ist).
Mein Code erfüllt die Punkte, dass er glücklich ausgibt, wenn mehrere gs beisammen stehen, und unglücklich wenn eines allein steht oder gar keines im String ist.
Allerdings...
Wenn erst ein paar gs beisammen stehen und dann eines einzeln auftritt, gibt es fälschlicherweise "glücklich" aus, da es in die "else if" springt.
Wie kann ich das verhindern? Ich steh einfach komplett auf dem Schlauch!
Eigentlich soll es ja unglücklich ausgeben, da eines alleine herumsteht!
Code: Alles auswählen
#include <stdio.h>
int g_happy(void) {
int c;
int happiness[100];
int i=0, j=0;
for(i=0; i<100; i++){
happiness[i]=0;
}
while ((c = getchar()) != '\n') {
happiness[j]=c;
j++;
}
for(i=1; i<100; i++){
if(happiness[i]==103 && !(happiness[i+1]==103 || happiness[i-1]==103)){
printf("G is alone!");
return 0;
}
else if(happiness[i]==103 && (happiness[i+1]==103 || happiness[i-1]==103)){
printf("Happy!");
return 1;
}
else if(happiness[i]!=103) {
continue;
}
else{
printf("No G at all!");
return 0;
}
}
return 0;
}
int main() {
if (g_happy())
printf(" g is :-)\n");
else
printf(" g is :-(\n");
return 0;
}