forschleifen Problem
-
Hallo,
dieses Programm soll die Anzahl eines vorkommenen Zeichen in einer Zeichenkette zählen. Irgendwie will meine 2te forschleife unten in main nicht richtig mit "zaehler" arbeiten. zaehler soll die gesamte Anzahl Buchstaben der Zeichenkette ausgeben.#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 100; int anzahl(char s[],char c){ int i = 0; int zahl = 0; for(i=0;s[i]!='\0';i++){ if(c == s[i]){ zahl = zahl + 1; } } return zahl; } int main (){ char feld[100]; printf("Geben Sie ihre Zeichenkette ein:!\n"); fgets(feld,100,stdin); char lala; printf("Geben Sie das gesuchte Zeichen ein:!\n"); scanf("%c", &lala); int x = 0; x = anzahl(feld, lala); int i = 0; int zaehler = 0; for(i=0;feld[i]!='\0';i++){ zaehler = zaehler + 1; } int homofuerst = 0; printf("Die Anzahl der gesuchten Buchstaben in %s ist: %d und %f in Prozent und es sind %d Zeichen!\n", feld, x, homofuerst, zaehler); system("Pause"); return 0; }
-
Deine Funktion Anzahl ist Falsch:
/*Die Anzahl von Leerzeichen wird mitberechnet*/ int anzahl(char s[],char c){ int i; for(i=0; s[i] != '\0';i++) continue; return i-1; }
Die klappt schon besser
-
int sollte %d in printf haben.
-
...ja,
nur dass sie nicht die anzahl der zeichen mitzählt. das ist ja der sinn der funktion, wie ich mitbekommen habe.
so siehts bei mir aus:int anzahl(char s[],char c){ int i = 0; int zahl = 0; int len=strlen(s); for(i=0;i<len;i++){ if(c == s[i]){ zahl = zahl + 1; } } return zahl; }
-
hast ja lustige variablen namen, naja jeder eben so wie er es sich am besten merken kann
hab das jetzt schon öfter gesehen, system("Pause"); denk das sind unklarheiten mit der ide aber ich verwende keine vc++ evtl. kann das mal jemand erklären wie man das macht dass das dos fenster nicht abhaut...
-
einfach
getch();
...das wartet auf 1 Tastatureingabe.
-
-
Schließen verhindern:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-797103.html
-
_matze schrieb:
Schließen verhindern:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-797103.html
Die FAQ sollte eventuell mal überarbeitet werden? Mit dieser setvbuf Geschichte scheint es doch tatsächlich nicht immer zu funzen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-258078-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html
-
und zur zweiten For-Schleife hat niemand was zu sagen?
^^
-
Sieht gut aus, wo liegt das Problem?
-
Big Brother schrieb:
Sieht gut aus, wo liegt das Problem?
Es sieht alles grauenhaft aus.
Daß man jetzt Vars irgendwo im Quelltext anlegen darf, war eine echt besch ... eidene Idee, aber ohne Einrückungen dazu wird jeder Quelltext zum Quältext.
-
(1) "zaehler" zählt das '\n' mit und (2) printf enthält einen fatal falschen Formatierungsparameter.
-
-
pointercrash() schrieb:
Daß man jetzt Vars irgendwo im Quelltext anlegen darf, war eine echt besch ... eidene Idee...
naja, es ist eigentlich ganz angenehm dass es das gibt, allerdings ist es manchmal übersichtlicher, alle variablen oben in der funktion zu haben. ich erwische mich manchmal dabei, dass ich sogar in Java-programmen variablen so anlege wie in C89, wo das nun echt noch nie sein musste. aber schleifenzähler z.b. packe ich immer direkt in den for-ausdruck (aber da gibts ja noch for-each *fg*).
-
wie zaehler zählt das n mit?
kannst du plz mal hinschreiben wies sein müsste
-
Die Funktion fgets speichert das '\n' Zeichen an das Ende der Eingabe, wenn genug Platz im Puffer ist.
Du müsstest das '\n' Zeichen entfernen, wenn es nicht mitgezählt werden soll.