Frage zu C-Programm das die Zeichenanzahl, die eingeben wird, wieder ausgibt

Hallo,
falls ich dein Problem richtig verstanden hab, ist PixelShaders Lösung doch gut... Ich versuchs einfach nochmal die etwas anders zu formulieren, vielleicht wird dann klarer was gemeint ist:
Code:
do
{
     while(true)
     {
       cout<<"Bitte wählen Sie die Aufgabe: \n 1. ... \n 2. ... \n 3. ... "<<endl;
       unsigned int auswahl;
       cin>>auswahl;
       if(auswahl<4)
       {
             break;
       }
     }
     switch(auswahl)
     {
     case 1:
     cout<<"Bitte wählen Sie die Aufgabe: \n 1. ... \n 2. ... "<<endl;
     int auswahl2;
     cin>>auswahl2;
     if(auswahl2==1)
          //dein Code
     else if(auswahl2==2)
         //dein Code
     else
         cout<<"Falsche Eingabe!!"<<endl;
      break;
      case 2:
      //dein Code
      }
    cout<<"Wollen Sie noch weitere Texte analysieren? (J/N)<<flush;
    char antwort;
    cin>>antwort;
} while(antwort=='J' || antwort=='j');
return 0;

Hab ich aber nur ebenso geschrieben... ist nicht kompiliert oder so... können also ein paar Fehler drin sein!

Hoffe ich konnte helfen.
bastionmancher
 
Zuletzt bearbeitet:
Ja ok,
das mit der endlossschleife läuft jetzt...

Ich habe noch 2 allerletzte Fragen,

einmal,

Wie könnte man am Besten die Wörter zählen?

Ich habs probiert, in dem ich ne while Schleife geschrieben hab und als Abruchbedigung EOF angegeben habe.

Dann kam if-else als Schleifeninhalt. Also wenn ein Leerzeichen eigeben wird, soll eins zur anzahl zugefügt werden, sonst soll nichts passieren..

Nur hier leider ist das dann das Programm immer eingefroren und danach abgestürzt...

Hat da jmd vllt nen schnellen Rat?

-------


Warum muss ich diesen Code benutzen um die Prozentzahlen anzeigen zu können oder gehts auch einfacher?
printf("\n%.2lf%% der zeichen sind ein 'y'.",prozent[24]);
 
Prozentfrage: Das doppelte %% bewirkt, das ein % am Bilds´chirm ausgegeben wird,
wenn es nicht doppelt wäre, würde das printf das mit Sachen wie %d (int) verwechseln.
das %lf steht für eine (long) double Variable,
und das .2 dazwischen bedeutet, das es 2 kommastellen genau ausgegeben wird.

bezüglich deines absturzes wäre hilfreich, wenn wir erfahren wo?

gruß
 
if(auswahl == 3)




{
printf("\nbitte satz eingeben\n>");
fflush(stdin);
gets_s(satz);

satz[999]=s;


while (s !=EOF )
{
if (s == '\n')
anzahl++;

if (s == ' ')
anzahl++;

else
anzahl=0;

}


printf("%d",anzahl);

}

Das ist der Code..
Und hier hängt das Programm direkt nach der Zeicheneingabe...
 
Also wenn ich einmal annehme, dass s ein char ist...
dann kapier ich nichts mehr.
was bringt das, dem satz index 999 das s zuweisen?
und die schleife...ich kann mich nicht erinnern dass du irgendwas mit dateien vorgehabt hast (oder ich werd vergesslich). Was hat as EOF dann da zu Suchen
Das ist doch die Textdatei-begrenzung, nicht die von Strings!
Ausserdem wird deine Schleife sowieso nie aufhören, weil in der schleife das s sich ja nie ändert, es erhöht nur immer seine anzahlen und sonst nichts?!

irgendwo muss die schleife ja wieder aus sein, statt mit einem einzigen buchstaben das anzahl vollzählen!
 
Code:
printf("Bitte Satz eingeben:");
gets(satz);
anzahl=1;
for(int j=0;j<strlen(satz);j++)
{
  if(satz[j]==' ')
    anzahl++;
}

printf("%d Woerter\n",anzahl);

---
EOF ist überflüssig, und soweit ich weiß, kann man mit gets nicht mehrere Zeilen einlesen,
daher ist die Überprüfung auf '\n' auch überflüssig.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück