PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kann mir einer helfen?


Gast
2003-09-16, 18:28:24
hi

in der schule haben wir die aufgabe bekommen ein program in c++ zu schreibe. der benutzer soll eingeben ob es hell oder dunkel ist und dann soll das programm bei eingabe hell guten tag ausgeben und bei eingabe dunkel gute nacht ausgeben! aber ich hab kein ahnung wie ich das machen soll

kann mir einer helfen plz!

liquid
2003-09-16, 19:09:47
Schritte:

1. Buffer für die Eingabe erzeugen (nen kleines char-array, 20 Zeichen sollten ja reichen).
2. Ausgabe der Anfrage an den User entweder "hell" oder "dunkel" einzugeben.
3. Eingabe entgegennehmen
4. Eingabe bearbeiten (eventuell alles in Kleinbuchstaben umwandeln, falls ein Hirni "Hell" eingegeben hat)
5. Eingabe vergleichen ("hell", "dunkel" und default)
6. Ausgabe anhand des Vergleiches tätigen (bei default halt ne Fehlermeldung ala "Ungültige Eingabe blablub")
7. Programm beenden :D

So dürfte das ungefähr aussehen.

cya
liquid

Gast
2003-09-16, 19:38:29
Original geschrieben von liquid
5. Eingabe vergleichen ("hell", "dunkel" und default)


kannst du mir helfen ich weiß nämlich nicht wie ich ein char array vergleichen kann (mit if hab ich es nicht hinbekommen)?

liquid
2003-09-16, 19:46:01
Naja, in deinem Falle (C++) würde ich sowieso auf richtige strings ausweichen (std::string) damit kannste dann auch mit if (str == "hell") den string überprüfen.
Sonst (reines C) nimmste strcmp (aus der cstring Header), musste gucken was das genau zurückgibt (hab das grad net im Kopf).

cya
liquid

Gast
2003-09-16, 21:10:42
was meinst du mit (std::string) ?
brauch ich um strings zu benutzen eine zusätzliche header datei?

danke das du mir hilfst

liquid
2003-09-16, 21:18:38
Mit std::string meine ich die String Klasse aus der Standardbibliothek von C++ und Ja, du musst einen zusätzlichen Header einbinden.

#include <string> <-- für den C++ string

#include <cstring> <-- für die C string Funktionen

Bind mal nur string ein (also net cstring) und dann erstell mit
std::string mein_eingabe_string;
einen String in den deine Eingabe fliessen soll. Den String kannste dann mit std::cin (Console In) füllen. Da musste dich dann auch net um Größen kümmern, da String das intern regelt (also Speichermanagement und so).

Ich würd dir empfehlen dir die STL (Standard Template Library) Guide von SGI zu laden. Musste mal Google quälen. Da sind so alle Basistypen erklärt, die C++ (und die STL) dir bietet, unter anderem auch der C++ string.

Und (wie gesagt) den Vergleich kannste dann auch mit == machen.

cya
liquid

EDIT: Hier der Link zum Guide (http://www.sgi.com/tech/stl/). Irgendwie kann man sich die auch ganz runterladen, ich glaub ich bin zu doof den Download zu finden :(

Gast
2003-09-17, 18:41:59
ich versteh es immer noch nicht
in der schule hab ich das so geschrieben:

#include<iostream.h>
#include<conio.h>

int wahl;

void main()
{
cout<<"Bitte geben Sie ein ob es (1)hell oder (2)dunkel ist! ";
cin>> wahl;

clrscr();

if(wahl==1) cout<<" Guten Tag ";


if(wahl==2) cout<<" Gute Nacht ";

}

aber die lehrerin sagt das der benutzer ein text eingeben soll. kannst du wenn du lust und zeit hast das mal so ändern das das mit strings funktioniert?

es wär wirklich nett wenn du das machen könntest

liquid
2003-09-17, 18:57:52
Original geschrieben von Gast
ich versteh es immer noch nicht
in der schule hab ich das so geschrieben:

#include<iostream.h>
#include<conio.h>

int wahl;

void main()
{
cout<<"Bitte geben Sie ein ob es (1)hell oder (2)dunkel ist! ";
cin>> wahl;

clrscr();

if(wahl==1) cout<<" Guten Tag ";


if(wahl==2) cout<<" Gute Nacht ";

}

aber die lehrerin sagt das der benutzer ein text eingeben soll. kannst du wenn du lust und zeit hast das mal so ändern das das mit strings funktioniert?

es wär wirklich nett wenn du das machen könntest
Die Lehrerin hätte gleich schon bei void main meckern sollen. void main gibt es nicht, auch wenn es die Compiler gerne schlucken. Immer int main schreiben, denn main gibt immer einen Integer zurück (Errorcode des Programms).

Dann include mal so: #include <iostream> (ohne das .h)

#include <iostream>
#include <string>

#include <algorithm>
#include <cctype>

int main()
{
using namespace std;

cout << "Bitte geben Sie ein ob es hell oder dunkel ist!\n";

// clrscr(); // sowas benutzen wir net

std::string my_str;
cin << my_str;

transform (my_str.begin(), my_str.end(), my_str.begin(), tolower);

if (my_str == "hell")
{
cout << " Guten Tag \n";
}
else
{
if (my_str == "dunkel")
{
cout << " Gute Nacht \n";
}
else
{
// default
cout << "ungueltige eingabe!\n";
}
}

return 0;
}

cya
liquid

Gast
2003-09-17, 20:40:32
Danke liquid

aber wenn ich das ohne .h schreibe borland eine fehlermeldung und kann das sein das borland(version 3.1) die <algorithm> datei noch nicht hat oder anders heist?

liquid
2003-09-17, 20:46:45
Ne, müßte eigentlich so gehen. Aber wenns nur mit H geht, dann hat der Borland Compiler vielleicht nen kleinen Schlag weg. Aber wenns klappt machs halt mit .h hinten dran. Hauptsache irgendwie funzt es.
Benutze den MinGW Compiler und hab noch nie mit dem Borland C/C++ Compiler gearbeitet, deshalb kann ich nicht ganz so viel dazu sagen.

cya
liquid

Gast
2003-09-17, 21:52:30
ich hab ms visual c++ installiert. der kennt die algorithm.h aber der compiler zeig mir ein haufen fehler aber so wichtig ist mir die programmiernote auch nicht das du deine ganze freizeit wegen mir verschwendest

aber trotzdem thx

liquid
2003-09-17, 22:15:27
algorithm und cctype wird eigentlich auch nur für transform benötigt. Wenn du das rausschmeisst verlierste zwar die Fähigkeit den string in Kleinbuchstaben zu konvertieren (außer du machst da deine eigenen Funktion), aber du brauchst es halt nicht zwingend.

cya
liquid

Gast
2003-09-18, 15:15:00
Original geschrieben von liquid
algorithm und cctype wird eigentlich auch nur für transform benötigt. Wenn du das rausschmeisst verlierste zwar die Fähigkeit den string in Kleinbuchstaben zu konvertieren (außer du machst da deine eigenen Funktion), aber du brauchst es halt nicht zwingend.

cya
liquid

... was aber dann z.B bei der Eingabe von "Hell" zu einer Fehlermeldung führen würde.

Oder du passt halt die if-Abfrage an und erweiterst sie noch um "Hell" und "Dunkel".

Gast
2003-09-18, 15:18:08
Original geschrieben von liquid
transform (my_str.begin(), my_str.end(), my_str.begin(), tolower);



Wofür steht das zweite my_str.begin()?

transform (Anfangspunkt, Endpunkt, ???, Aktion)

liquid
2003-09-18, 19:17:43
Steht für die Position an die der String geschrieben werden soll. Du könntest da auch nen anderen String angeben, dann wird darein konvertiert.

cya
liquid