string nach vokalen durchsuchen,ausgeben
-
versuchs doch selber, und wenn du an einer stelle hängst, dann helfen wir dir gerne.
schau dir auch mal strchr an...
-
also so sollstes nicht machen:
#include <iostream.h> void main() { char* str="hallo"; int count[256]={0}; while(*str) count[unsigned char(*str++)]++; for(int i=0;i<256;++i) if(count[i]!=0) cout<<unsigned char(i)<<": "<<count[i]<<endl; }
aber vielleicht kannste für deine lösung den trick abgucken, ein array mit 256 ints zu nehmen, wo die pro möglichem zeichen einen zeichenzähler hast. das würde viel if und switch und so sparen.
die erste schleife mach wohl wie du vorgeschlagen hast mit strlen und interpretiere str als char-array.
und das mit der eingabe mußte halt auch noch hinkriegen.
-
So, hab dann mal nen Sourcecode zusammen.
Vorerst die wohl kompliziertere Fassung, funktioniert soweit bekomme aber noch
drei fehlermeldungen?
Ansonsten gehts wohl noch kuerzer/compakter komm jedoch nicht zu einem
befriedigenden Erg.#include <stdio.h>
int main(void)
{
int a = 0;
int e = 0;
int i = 0;
int o = 0;
int u = 0;int leerz = 0;
int zaehler = 0;char eingabe [100];
prinft ("Bitte geben sie einen String ein:");
gets (eingabe);
for (zaehler=0; eingabe [zaehler] != '\0'; zaehler++){
if ((eingabe[zaehler] == ('a')) || (eingabe [zaehler] == ('A'*)) {a++;}
else if ((eingabe [zaehler] == ('e')) || (eingabe[]zaehler] == ('E')){e++}
else if ((eingabe [zaehler] == ('i')) || (eingabe[]zaehler] == ('I')){i++}
else if ((eingabe [zaehler] == ('o')) || (eingabe[]zaehler] == ('O'))(o++)
else if ((eingabe [zaehler] == ('u')) || (eingabe[]zaehler] == ('U'))(u++)
else if ((eingabe [zaehler] == ('leerz')) || (eingabe[]zaehler]}
prinft("%s\n" , eingabe);
prinft("Anzahl A bzw. a: %i\n", a); bis leerz
return 0;
}
Linker Fehlermeldungen:
In functionmain': parse error before
)'
character constant too long
parse error before `leerz'Danke für vielleicht noch den ein oder anderen Tip...wie bekomme ich die
Fehlermeldungen los??#include <stdio.h>
#include <strln.h>int main(void)
{
int buchstaben[80];
int i;
char c;
char satz;
A, E, I, O, U und Blanks
/* Feld initialisieren */
printf("\nBitte Satz eingben\n") ;
scanf("%i", &satz);/* nur Buchstaben zählen */
if (c >= 'a' && c <= 'z')
buchstaben[c-'a']++;
/* nächstes Zeichen lesen */
c = getchar();}
/* Ausgabe */
putchar('\n');
for (i = 0; i < 26; i++)
if (buchstaben[i] > 0)
printf("%c: %d\n", i+'a', buchstaben[i]);
return 0;
}
-
So, hab dann mal nen Sourcecode zusammen.
Vorerst die wohl kompliziertere Fassung, funktioniert soweit bekomme aber noch
drei fehlermeldungen?
Ansonsten gehts wohl noch kuerzer/compakter komm jedoch nicht zu einem
befriedigenden Erg.#include <stdio.h> int main(void) { int a = 0; int e = 0; int i = 0; int o = 0; int u = 0; int leerz = 0; int zaehler = 0; char eingabe [100]; prinft ("Bitte geben sie einen String ein:"); gets (eingabe); for (zaehler=0; eingabe [zaehler] != '\0'; zaehler++) { if ((eingabe[zaehler] == ('a')) || (eingabe [zaehler] == ('A'*)) {a++;} else if ((eingabe [zaehler] == ('e')) || (eingabe[]zaehler] == ('E')){e++} else if ((eingabe [zaehler] == ('i')) || (eingabe[]zaehler] == ('I')){i++} else if ((eingabe [zaehler] == ('o')) || (eingabe[]zaehler] == ('O'))(o++) else if ((eingabe [zaehler] == ('u')) || (eingabe[]zaehler] == ('U'))(u++) else if ((eingabe [zaehler] == ('leerz')) || (eingabe[]zaehler] } prinft("%s\n" , eingabe); prinft("Anzahl A bzw. a: %i\n", a); bis leerz return 0; } Linker Fehlermeldungen: In function `main': parse error before `)' character constant too long parse error before `leerz' Danke für vielleicht noch den ein oder anderen Tip...wie bekomme ich die Fehlermeldungen los?? #include <stdio.h> #include <strln.h> int main(void) { int buchstaben[80]; int i; char c; char satz; A, E, I, O, U und Blanks /* Feld initialisieren */ printf("\nBitte Satz eingben\n") ; scanf("%i", &satz); /* nur Buchstaben zählen */ if (c >= 'a' && c <= 'z') buchstaben[c-'a']++; /* nächstes Zeichen lesen */ c = getchar(); } /* Ausgabe */ putchar('\n'); for (i = 0; i < 26; i++) if (buchstaben[i] > 0) printf("%c: %d\n", i+'a', buchstaben[i]); return 0; } [code type="C++" tabs="4"]
[/cpp]
-
ich seh ansätze, die mir gefallen.
aber so ganz klappts noch nicht. so isses mir zu viel mühe, was zu korrigieren. im ersten prog haste viel "prinft" //tippfehler und im zweiten ne datei inkludiert, die es gar nicht gibt. im zweiten fällt mir auf, daß du erst ne zeile einliest und nachher nochmal buchstabenweise.
mach die progs mal fehlerfreier und stell dann pro posting eine konkrete frage. dann mag viel leiber helfen.
edit: `leerz' gehzt natürlich nicht. es soll ' ' heißen.
[ Dieser Beitrag wurde am 30.04.2003 um 05:56 Uhr von volkard editiert. ]
-
funktioniert soweit...
letzter printf Befehl stimmt nicht.
nach a Ausgabe stringt er raus.printf("Anzahl A bzw. a: %i\n", a); bis leerz
Wo liegt der Fehler?
[ Dieser Beitrag wurde am 30.04.2003 um 13:43 Uhr von Animator editiert. ]
-
nicht %i sondern %d
-
Original erstellt von <gast>:
nicht %i sondern %d%i ist richtig.
-
Original erstellt von volkard:
[quote]Original erstellt von <gast>:
[qb]nicht %i sondern %d%i ist richtig.[/QB][/QUOTE]
%d aber genauso
Sicher dass es bei dem printf fliegt? Sieht nämlich recht harmlos aus.
Inwiefern springt er raus? Beim ersten Quellcode ist hinter dem printf nämlich das return von main. Klar, dass das Programm danach vorbei ist.[ Dieser Beitrag wurde am 30.04.2003 um 16:06 Uhr von TriPhoenix editiert. ]
-
printf("Anzahl A bzw. a: %i\n", a); bis leerz /*Fehlermeldung wg bis/* printf("Anzahl A bzw. a: %i\n", a); (leerz); /*springt raus nach auslesen von a/*
Welches Zeichen fehlt hier noch?
-
so, ich hab die eine Version mal lauffähig gemacht...
Du solltest allerdings nochmal das ganze überdenken, was du denkich auch tun wirst, mir würden da spontan einige wesentlich kürzere Lösungen einfallen.
Jedenfalls hattest du da so 10 Klammerfehler, 10 Tippfehler, 10 Semikolonfehler und wasweissich drin
Das ist zwar normal am Anfang, aber du solltest dir mal eine andre Weise zu programmieren angewöhnen.
Nicht erst das Programm fertigschreiben und dann "geht ja nicht" sondern Stück für Stück schreiben und erst weitermachen wenn das Stück geht.
Und Einrücken hilft zum Fehlervermeiden auch ziemlich.#include <stdio.h> #include <conio.h> int main(void) { int a = 0; int e = 0; int i = 0; int o = 0; int u = 0; int leerz = 0; int zaehler = 0; char eingabe [100]; printf ("Bitte geben sie einen String ein:"); gets (eingabe); for (zaehler=0; eingabe [zaehler] != '\0'; zaehler++) { if (eingabe[zaehler] == 'a' || eingabe[zaehler] == 'A' ) {a++;} else if (eingabe[zaehler] == 'e' || eingabe[zaehler] == 'E'){e++;} else if (eingabe[zaehler] == 'i' || eingabe[zaehler] == 'I'){i++;} else if (eingabe[zaehler] == 'o' || eingabe[zaehler] == 'O'){o++;} else if (eingabe[zaehler] == 'u' || eingabe[zaehler] == 'U'){u++;} else if (eingabe[zaehler] == ' '){leerz++;}; } printf("%s\n" , eingabe); printf("Anzahl A bzw. a: %i\n", a); printf("Anzahl E bzw. e: %i\n", e); printf("Anzahl I bzw. i: %i\n", i); printf("Anzahl O bzw. o: %i\n", o); printf("Anzahl U bzw. u: %i\n", u); printf("Anzahl leerz bzw. a: %i\n", leerz); getch(); return 0; }
[ Dieser Beitrag wurde am 30.04.2003 um 16:57 Uhr von dreaddy editiert. ]