da-beauty Geschrieben 2. Dezember 2008 Autor Geschrieben 2. Dezember 2008 Danke Und wie mach ich es, dass ich dann den Zweiten Buchstabe des eingegeben Wortes einlese? Das müsst dann meine letzte frage sein danke Zitieren
Klotzkopp Geschrieben 2. Dezember 2008 Geschrieben 2. Dezember 2008 Und wie mach ich es, dass ich dann den Zweiten Buchstabe des eingegeben Wortes einlese?Genauso. Dieser Code liest das nächste Zeichen ein. Zitieren
da-beauty Geschrieben 2. Dezember 2008 Autor Geschrieben 2. Dezember 2008 Danke, das war mein Denkfehler:) Schönen Abnd noch Zitieren
perdian Geschrieben 3. Dezember 2008 Geschrieben 3. Dezember 2008 Bekommt man hier nicht ne Antwort auf ne einfache frage?Das hängt sowohl von der Frage als auch von der Art, wie sie gestellt wird, ab. Und wenn ihr keine Antwort für mich habt, dann bringt nicht so Dumme Sprüche sondern antwortet erst garnicht!Du weisst aber schon, dass man nicht beeinflussen kann, wie die Reaktionen auf eine Frage ablaufen, oder? Also nicht aufregen, sondern überlegen was du vielleicht falsch gemacht haben könntest. Zitieren
da-beauty Geschrieben 4. Dezember 2008 Autor Geschrieben 4. Dezember 2008 Hey, sagen wir mal, dass ich den Speicherplatz für 10 Variablen reserviere mit: scanf( %c ,&buchstabe1); scanf( %c ,&buchstabe2); scanf( %c ,&buchstabe3); scanf( %c ,&buchstabe4); ... Wenn ich aber nur ein Wort mir 5 Buchstaben eingebe funktioniert das aber nicht oder? Wie kann ich machen, dass falls das Wort nur 5 Buchstaben hat er mir die Buchstaben nu rin die ersten 5 Variablen Speichert und den Rest einfach leer lässt? Habt ih rmir da ein Tipp?? Hab mir vielelicht überegt, ob das mit einer Schleife oder einer If Anweisung funktionieren würde? Danke Zitieren
Guybrush Threepwood Geschrieben 4. Dezember 2008 Geschrieben 4. Dezember 2008 Wieso stellst du immer wieder die selbe Frage ohne auf die Lösungsvorschläge hier einzugehen :confused: Zitieren
da-beauty Geschrieben 4. Dezember 2008 Autor Geschrieben 4. Dezember 2008 Das ist doch nciht die selber Frage!? Ich wieiß doch jetzt wie man die einzelnen Buchsteben eines eingegebenen Wortes in verschiedene Variable speichert. Aber möchte jetzt wissen, was passiert wenn das Wort kleiner ist als 10 Zeichen!? Dann erwartet der Computer doch andere Zeichen die er reinspeichern kann oder? Zitieren
Guybrush Threepwood Geschrieben 4. Dezember 2008 Geschrieben 4. Dezember 2008 Probiers aus... Zitieren
Hexagon Geschrieben 4. Dezember 2008 Geschrieben 4. Dezember 2008 Wenn ich aber nur ein Wort mir 5 Buchstaben eingebe funktioniert das aber nicht oder? Wie kann ich machen, dass falls das Wort nur 5 Buchstaben hat er mir die Buchstaben nu rin die ersten 5 Variablen Speichert und den Rest einfach leer lässt? Habt ih rmir da ein Tipp?? Hab mir vielelicht überegt, ob das mit einer Schleife oder einer If Anweisung funktionieren würde? Danke Ich beantworte das jetzt mal so: ARGH! Fangen wir nochmal von vorne an: 1) [ ] Ich weiß was Rekursion ist. [ ] Rekursion? Was ist das? Soll nur ein kleiner Schwenk mit der Zaunlatte sein. Zitieren
da-beauty Geschrieben 4. Dezember 2008 Autor Geschrieben 4. Dezember 2008 1) [ ] Ich weiß was Rekursion ist. [x] Rekursion? Was ist das? Zitieren
Hexagon Geschrieben 4. Dezember 2008 Geschrieben 4. Dezember 2008 Okay... dann lege ich Dir mal das hier ans Herz: Rekursive Programmierung ? Wikipedia Zitieren
da-beauty Geschrieben 4. Dezember 2008 Autor Geschrieben 4. Dezember 2008 1) [x] Ich weiß was Rekursion ist. [ ] Rekursion? Was ist das? Aber hab noch ne andere Alternative gefunden^^ Danke für die Gedult hehe Meld mich bestimmt bald wieder;) Zitieren
da-beauty Geschrieben 11. Dezember 2008 Autor Geschrieben 11. Dezember 2008 Jetzt bin ich wieder an ein Problem gestoßen:) Ich möchte in der main eine Fußgesteuerte Schleife einsetzten. Es soll das Programm einmal durchlaufen lassen und dann den Benutzer fragen, ob er das Programm nochmal starten möchte oder es beendet werden soll. Falls er das Programm beenden möchte soll er # eintippen. Doch wie soll ich die Bedinung formolieren? do { blablaaaaa(); blablabbbb(); blablacccc(); } while ( ??? == # ); //??????????? Ich hoff ihr könnt mir weiterhelfen:confused: Zitieren
da-beauty Geschrieben 11. Dezember 2008 Autor Geschrieben 11. Dezember 2008 Vielelicht mit getchar() == ' # ' ????? Zitieren
da-beauty Geschrieben 11. Dezember 2008 Autor Geschrieben 11. Dezember 2008 OK habs aber nun noch eine Frage:) Kann man in einem Programm eine Unterfunktion erstellen in der man die Werte initialisiert und dann die Werte global benutzen? Oder braucht man dafür Rückgabewerte?? BSP: int initialisieren() { int a1 = 0; int a2 = 0; int a3 = 0; int a4 = 0; int a5 = 0; int a6 = 0; int a7 = 0; int anfang = 1; return 0 ; } ??? Irentwie klappt es bei mir nicht, dass ich dann a1 in einer anderen unterfunktion aufrufen kann...?!?! Zitieren
Klotzkopp Geschrieben 11. Dezember 2008 Geschrieben 11. Dezember 2008 ??? Irentwie klappt es bei mir nicht, dass ich dann a1 in einer anderen unterfunktion aufrufen kann...?!?! Das ist auch so beabsichtigt. Variablen sind in C nur innerhalb des Blocks sichtbar, in dem sie definiert sind. Und bevor du fragst: Globale Variablen sind keine Lösung für dieses Problem, sondern ein manchmal notwendiges Übel. Und bitte mach das hier nicht zu deinem persönlichen Supportthread. Ein Thema - ein Thread. Wenn du noch eine Frage zu einem anderen Thema hast, mach bitte einen neuen Thread auf. Zitieren
da-beauty Geschrieben 11. Dezember 2008 Autor Geschrieben 11. Dezember 2008 ja ok mach ich dann beim nächsten mal:) Aber Funktioniert es nicht, dass ich eine Unterfunktion zum Initialisieren erstelle? Zitieren
Klotzkopp Geschrieben 11. Dezember 2008 Geschrieben 11. Dezember 2008 Aber Funktioniert es nicht, dass ich eine Unterfunktion zum Initialisieren erstelle?Nur, wenn du dieser Funktion die zu initialisierenden Variablen übergibst. Und weil die Funktion die Variablen dazu verändern muss, musst du sie "by reference" übergeben, in C also als Zeiger. Warum initialisierst du die Variablen nicht gleich bei der Deklaration? Zitieren
da-beauty Geschrieben 11. Dezember 2008 Autor Geschrieben 11. Dezember 2008 hmmm über Zeiger weiß ich noch garnix, muss mich dann erstmal en wenig informieren. Danke trotzdem für den Tipp Ich möchte sie in der Unterfunktion auch gleich deklarieren.. Zitieren
Klotzkopp Geschrieben 11. Dezember 2008 Geschrieben 11. Dezember 2008 Ich möchte sie in der Unterfunktion auch gleich deklarieren..Das geht nicht, weil Variablen (wie ich bereits geschrieben habe) nur in dem Block gültig sind, in dem sie deklariert wurden. Deine Variablen würden dann außerhalb deiner Initialisierungsfunktion gar nicht existieren. Zitieren
TDM Geschrieben 11. Dezember 2008 Geschrieben 11. Dezember 2008 (bearbeitet) bissl Frustprogrammierung ... #include <stdio.h> #include <conio.h> void reverse1(); void reverse2(); int main(int argc, char* argv[]) { printf("1. Versuch\n"); reverse1(); printf("\n2. Versuch\n"); reverse2(); getchar(); } void reverse1() { char buffer = 0; scanf("%c", &buffer); rewind(stdin); if (buffer != 0x0A) reverse1(); printf("%c", buffer); } void reverse2() { char buffer = getch(); rewind(stdin); if (buffer != 0x0A && buffer != 0x0D) reverse2(); printf("%c", buffer); } [Edit] Tausche rewind gegen fflush. Bearbeitet 11. Dezember 2008 von TDM Zitieren
Klotzkopp Geschrieben 11. Dezember 2008 Geschrieben 11. Dezember 2008 Tausche rewind gegen fflush. Ist genauso unportierbar. Rewind muss nur auf solchen FILE* funktionieren, die Positionierungsanfragen unterstützen. Pipes und Terminals gehören üblicherweise nicht dazu. Die Verwendung von getch und conio.h ist auch nicht portierbar. Zitieren
TDM Geschrieben 12. Dezember 2008 Geschrieben 12. Dezember 2008 Ist genauso unportierbar. Rewind muss nur auf solchen FILE* funktionieren, die Positionierungsanfragen unterstützen. Pipes und Terminals gehören üblicherweise nicht dazu. Wenn ich dann mal alle funktionen durch hab, wirst du mir sicher sagen, welche portierbar ist. Wie stehts mit folgendem: void reverse3() { char buffer = *gets(stdin->_ptr) ; if (buffer != 0x00) reverse3(); printf("%c", buffer); } Die Verwendung von getch und conio.h ist auch nicht portierbar. Das weiß ich, deswegen hab ichs in eine andere Funktion gepackt. Zitieren
Klotzkopp Geschrieben 12. Dezember 2008 Geschrieben 12. Dezember 2008 Wenn ich dann mal alle funktionen durch hab, wirst du mir sicher sagen, welche portierbar ist.Ich kann dir ein wenig Arbeit ersparen: Soweit ich weiß, gibt es keinen portierbaren Weg, mit Standard-C die in einem Eingabestream gepufferten Daten zu entfernen, ohne dass das blockiert, wenn gar keine drin sind. Wie stehts mit folgendem:Wo hast du das denn her? Das sieht ja abenteuerlich aus. Der Standard schreibt nicht vor, dass die FILE-Struktur irgendwelche bestimmten Member haben muss. FILE sollte für den Entwickler opak sein, ein FILE* ist nur ein Handle. Außerdem halte ich es für extrem gefährlich, in einen von der C-Runtime verwalteten Puffer zu schreiben. Ich würde das so machen: void reverse() { char c; scanf( "%c", &c ); if( c != '\n' ) reverse(); printf( "%c", c ); }[/code] Zitieren
TDM Geschrieben 12. Dezember 2008 Geschrieben 12. Dezember 2008 Ich kann dir ein wenig Arbeit ersparen: Soweit ich weiß, gibt es keinen portierbaren Weg, mit Standard-C die in einem Eingabestream gepufferten Daten zu entfernen, ohne dass das blockiert, wenn gar keine drin sind. Menno... Wo hast du das denn her? Das sieht ja abenteuerlich aus. Der Standard schreibt nicht vor, dass die FILE-Struktur irgendwelche bestimmten Member haben muss. FILE sollte für den Entwickler opak sein, ein FILE* ist nur ein Handle. Außerdem halte ich es für extrem gefährlich, in einen von der C-Runtime verwalteten Puffer zu schreiben. Wieso schreiben? Ich lese ja aus. Ich würde das so machen: void reverse() { char c; scanf( "%c", &c ); if( c != '\n' ) reverse(); printf( "%c", c ); } hmm, wenn ich mehrere Zeichen eingeben würde, würde der dann beim ersten Rekursionsdurchlauf von position 0 oder 1 lesen? Angenommene Eingabe: "abc" erster Durchlauf: c = 'a' c != 10 -> reverse zweiter Durchlauf: c = ? 'a' oder 'b'? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.