Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hallo ich habe ein Projekt: Ich soll in c++ ein Chat programmieren. Der Benutzer soll sich mit dem Computer "unterhalten". Ich habe 24 Sätze (12 Aussagen + 12 Fragen) auf arrays gelegt und möchte diese 1 mal auslesen. dh. 1 Anwort oder frage. Hier ist der Quellcode, vielleicht kann mir mal einer helfen!!??!! :confused:

#include "stdafx.h"

#include <stdlib.h>

#include <stdio.h>

#include <iostream>

#include <iomanip>

#include <string>

using namespace std;

void main()

{

string Name;

string Antwort;

string Laune;

string Text;

int Alter;

int i=1;

//int x;

string elviraAntwort[12]={"Ehrlich?Das kann ich nicht glauben","Vielleicht, man sollte nichts unversucht lassen",

"Ja sowas finde ich auch nicht nett!", "Nenn mir einen der sowas mag!","hmm, dann ist ja gut",

"Aha, es ist dir also ernst!", "Ich will noch mehr hören.", "Sprich dich ruhig aus.",

"Draußen ist schönes Wetter.", "Ich bin ein bisschen muede.", "Es ist nett sich mit dir zu unterhalten.",

"hmm. Ich weiß nicht..."};

string elviraFrage[12]={"Was genau meinst du?","Jetzt ernsthaft oder was?", "Bestehst du immer auf dein Recht?",

"Warum sollte man soetwas tun?","Sonst noch was?", "Wie bitte?", "Sollten wir nicht nochmal in Ruhe darueber reden?",

"Hat man die keine Manieren beigebracht??", "Was findest du nur daran?",

"Waer es fuer dich denn in Ordungn?", "Meinst du es macht Spass dir zuzuhoeren?", "Und wie gings weiter?"};

cout<<"Hallo ich bin Elvira. Ich moechte mich unterhalten!"<<endl;

cout<<"Wie heissen Sie? ";

cin>>Name;

cout<<"Hallo, "<<Name<<"! Schoen Sie kennenzulernen!"<<endl;

cout<<"Wie alt sind Sie?"<<endl;

cin>>Alter;

if (Alter<=30 )

cout<<"Sehr schoen, ich bin 25."<<endl;

else

cout<<"Oh, so alt? Ich bin 25"<<endl;

cout<<"Darf ich Sie duzen?"<<endl;

cin>> Antwort;

if (Antwort=="ja")

cout<<"Sehr schoen, das ist persoenlicher!"<<endl;

else

cout<<"Das finde ich nicht nett, ich gehe!"<<endl;

cout<<"Wie geht es dir?"<<endl;

cin>> Laune;

if (Laune=="gut")

cout<<"Das ist ja wunderbar!"<<endl;

else

if (Laune=="schlecht")

cout<<"Tut mir leid, was ist denn los?"<<endl;

cin>>Text;

srand(0);

for(i=0; i<12; i++)

{

elviraAntwort = rand(); //x + 1;

cout<<elviraAntwort;

}

cin>>Text;

};

Geschrieben
Ich habe 24 Sätze (12 Aussagen + 12 Fragen) auf arrays gelegt und möchte diese 1 mal auslesen. dh. 1 Anwort oder frage. Hier ist der Quellcode, vielleicht kann mir mal einer helfen!!??!! :confused:

Könntest du nochmal genau beschreiben, wo das Problem liegt? Was genau ist die Aufgabenstellung, und inwiefern weicht das Verhalten deines Codes davon ab?

Geschrieben

in einem array von strings kannst du z.b. den 1. string mit


string Antwort =  elviraAntwort[0];

auslesen. das hast du ja schon am Ende deines Codes versucht ... Hast aber ziemlich mist gebaut *g* guck dir mal genau an was du da machst -_- probiers mal mit:

int randwert = rand() % 12;

cout<<elviraAntwort[randwert] << "\n";

so bekommst du eine zufallszahl zwischen 0 und 12. anschliessend gibst du den string mit dem index zurück, den "randwert" für dich hält. wenn du alle auslesen willst, dann kannst du das mit:

for(int i = 0; i < 12; i++)

{

   cout << elviraAntwort[i] << "\n";

}

wenn deine frage damit nit beantwortet ist, stell deine frage präziser.

Geschrieben
Hallo, danke schön,

das beantwortet meine frage. habe erst vor 2 mon mit programmieren angefangen, habe deswegen noch kleine schwierigkeiten.

wenn ich ein vorschlag machen darf: lerne die Vorteile einer OOP für dich zu nutzen und missbrauche nicht die Syntax von C++ für klasische C Aufgaben. So lernt man nichts halbes und nix ganzes

Geschrieben
wenn ich ein vorschlag machen darf: lerne die Vorteile einer OOP für dich zu nutzen und missbrauche nicht die Syntax von C++ für klasische C Aufgaben. So lernt man nichts halbes und nix ganzes

erm, so lernt man das leider im informatikunterricht in der berufsschule -_-

jedenfalls bei uns in niedersachsen :-(

Geschrieben
wenn ich ein vorschlag machen darf: lerne die Vorteile einer OOP für dich zu nutzen und missbrauche nicht die Syntax von C++ für klasische C Aufgaben. So lernt man nichts halbes und nix ganzes

Könntest du dich bitte genauer fassen?

Weil cih weiß nicht was dadran falsch sein soll.

Geschrieben

ehm....ich würd auch gern mal nachfragen, was daran falsch sein soll. Die Aufgabe stammt aus BBS Unterricht und auf diese weise müsst ich mich mit schleifen, arrays und abfragen befassen. Hast du nicht auch irgendwann mal klein angefangen, oder bist du so allwissend auf die welt gekommen???:cool:

Geschrieben
wenn ich ein vorschlag machen darf: lerne die Vorteile einer OOP für dich zu nutzen und missbrauche nicht die Syntax von C++ für klasische C Aufgaben. So lernt man nichts halbes und nix ganzes

Ich würde das nicht Missbrauch nennen.

Man kann in C++ objektorientert programmieren, weil die Sprache das unterstützt. C++ unterstützt aber auch andere Programmierparadigmen.

Geschrieben
in einem array von strings kannst du z.b. den 1. string mit


string Antwort =  elviraAntwort[0];

auslesen. das hast du ja schon am Ende deines Codes versucht ... Hast aber ziemlich mist gebaut *g* guck dir mal genau an was du da machst -_- probiers mal mit:

int randwert = rand() % 12;

cout<<elviraAntwort[randwert] << "\n";

so bekommst du eine zufallszahl zwischen 0 und 12. anschliessend gibst du den string mit dem index zurück, den "randwert" für dich hält. wenn du alle auslesen willst, dann kannst du das mit:

for(int i = 0; i < 12; i++)

{

   cout << elviraAntwort[i] << "\n";

}

wenn deine frage damit nit beantwortet ist, stell deine frage präziser.

Klappt soweit ganz gut, danke

:confused: ich will nur 1 zufallsantwort ausgeben. wie funktioniert das??

Geschrieben
Klappt soweit ganz gut, danke

:confused: ich will nur 1 zufallsantwort ausgeben. wie funktioniert das??

wie schon gesagt ...

probiers mal mit:

Code:

int randwert = rand() % 12; cout<<elviraAntwort[randwert] << "\n";

Geschrieben

int randwert = rand() % 12;

...

void antwort()

{for(int i = 0; i < 12; i++)

{

cout << elviraAntwort[randwert] << "\n";

}

}

Es wird 12 mal die selbe Antwort ausgegeben. Ich hätt die gern nur 1 mal ;-)

Meine Ausgabe jetzt: Hamster tod

Aha, es ist dir also ernst!

Aha, es ist dir also ernst!

Aha, es ist dir also ernst!

Aha, es ist dir also ernst!

Aha, es ist dir also ernst!

Aha, es ist dir also ernst!

Aha, es ist dir also ernst!

Aha, es ist dir also ernst!

Aha, es ist dir also ernst!

Aha, es ist dir also ernst!

Aha, es ist dir also ernst!

Aha, es ist dir also ernst!

möchte gern: Hamster tod

Aha, es ist dir also ernst!

Geschrieben

Ah ja, dazu kommt noch, dass immer die gleiche antwort kommt, auch wenn ich das programm neustarte. kann das sein, dass der die zufallszahl nicht richtig zieht??

Geschrieben

Moin,

das mit den Zufallszahlen ist so eine Sache. Da es nur Pseudozufallszahlen sind mußt du am Besten am Beginn deines Programms den Zufallszahlengenerator mit der aktuellen Systemzeit reseten.

void antwort()

{for(int i = 0; i < 12; i++)

{

cout << elviraAntwort[randwert] << "\n";

}

}

Es wird 12 mal die selbe Antwort ausgegeben. Ich hätt die gern nur 1 mal ;-)

Nun schau dir bitte mal den fetten Code genau an. ;)

EDIT: Ha, habs wieder gefunden!

srand( (unsigned)time( NULL ) );

Geschrieben

Fehlermeldung

int randwert = rand() % 12;

srand( (unsigned)time( NULL ) );//error C3861: "time": Bezeichner wurde nicht gefunden.

...

und was jetzt?

fehlt irgendein include??

#include "stdafx.h"

#include <stdlib.h>

#include <stdio.h>

#include "conio.h"

#include <iostream>

#include <iomanip>

#include <string>

.. ich bilick nicht mehr durch.-... :(

Geschrieben
Fehlermeldung

int randwert = rand() % 12;

srand( (unsigned)time( NULL ) );//error C3861: "time": Bezeichner wurde nicht gefunden.

Öhm...helby...die Initialisierung sollte schon vor dem Benutzen erfolgen, oder?

fehlt irgendein include??

#include "stdafx.h"

#include <stdlib.h>

#include <stdio.h>

#include "conio.h"

#include <iostream>

#include <iomanip>

#include <string>

.. ich bilick nicht mehr durch.-... :(

Ein kleiner Blick in die Hilfe? ;)Ich will mal nicht so sein: #include <time.h>

Geschrieben
Ausserdem sollte die Zufallszahl auch in der Schleife immerwieder neu gesetzt werden ....

Das würde ich nicht tun! Jedenfalls nicht wenn man den Zufallsgenerator mit der Zeit zurücksetz. Die Schleife läuft so schnell durch das dann wieder immer die selben Zahlen heraus kämen!

Geschrieben

ES kommen ja immer die selben zahlen raus, bzw. immer dieselbe aussage.

was kann ich tun?

void antwort()

{sunsigned int randwert = rand() % 12;...

rand((unsigned int) time(NULL));

//srand(time(0));

for(int i = 0; i < 1; i++)

{cout<< elviraAntwort[randwert] << "\n";}

}

So sieht das im dosfenster aus:

Hallo ich bin Elvira. Ich moechte mich unterhalten!

Wie heissen Sie? ol

Hallo, ol! Schoen Sie kennenzulernen!

Wie alt sind Sie?

20

Sehr schoen, ich bin 25.

Darf ich Sie duzen?

ja

Sehr schoen, das ist persoenlicher!

Wie geht es dir?

gut

Das ist ja wunderbar!

jap

Aha, es ist dir also ernst!

natuerlich!

Wie bitte?

klar

Aha, es ist dir also ernst!

ja

Wie bitte?

...

:( ziemlich nervig

Geschrieben
was kann ich tun?
Mit ein wenig mehr Nachdenken an die Sache rangehen, nicht am Code frickeln und schauen, was passiert.

Du musst einmal srand aufrufen, und zwar bevor zum ersten Mal rand aufgerufen wird. Das alles steht schon hier im Thread, es fehlt nur an der Umsetzung durch dich.

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