Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

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 :)

  • Antworten 72
  • Ansichten 11.8k
  • Erstellt
  • Letzte Antwort

Top-Poster in diesem Thema

Danke, das war mein Denkfehler:)

Schönen Abnd noch

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.

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

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?

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

1)

[ ] Ich weiß was Rekursion ist.

[x] Rekursion? Was ist das?

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

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:

Vielelicht mit

getchar() == ' # '

?????:)

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

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

ja ok mach ich dann beim nächsten mal:)

Aber Funktioniert es nicht, dass ich eine Unterfunktion zum Initialisieren erstelle?

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?

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

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.

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

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.

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.

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]

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.