Zum Inhalt springen

Wort in umgekehrter Reihenfolge ausgeben


Empfohlene Beiträge

  • Antworten 72
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Geschrieben
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.
Geschrieben

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

Geschrieben

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?

Geschrieben
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. ;)

Geschrieben

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:

Geschrieben

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...?!?!

Geschrieben
??? 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.

Geschrieben
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?

Geschrieben
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.
Geschrieben (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 von TDM
Geschrieben
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.

Geschrieben
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.

Geschrieben
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]

Geschrieben
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'?

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...