|
You last visited: Today at 03:40
Advertisement
Verbesserung/Hilfe C++
Discussion on Verbesserung/Hilfe C++ within the C/C++ forum part of the Coders Den category.
02/23/2012, 16:04
|
#1
|
elite*gold: 0
Join Date: Feb 2012
Posts: 6
Received Thanks: 0
|
Verbesserung/Hilfe C++
Hallo,
da ich noch ein C++ neuling bin und das gefühl habe das ich umständlich viel schreibe obwohl es kürzer ginge, wollte ich euch fragen ob ihr mir bei der verbesserung helfen könnt.
Um in C++ einzusteigen benutzte ich das schritt für schritt einarbeiten, Hilfen beziehe ich dabei aus Google, wenn ich was nicht weiß.
Aber dort kann ich ja sowas nicht nachgucken.
Also mein code bisjetzt :
Code:
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
string Charaktername, Junge, Maedchen;
char Charakterklasse, Geschlecht, AA;
cout <<"Herzlich Willkommen zu meinem kleinen Programm.\n\n";
cout <<"Dann fangen wir mal an, wie moechten Sie Heissen ?\n\n";
cin >> Charaktername;
system("cls");
cout <<"Was für eine Charakterklasse moechten sie wählen ?\n";
cout <<"(O)rg\n";
cout <<"(M)ensch\n";
cout <<"(T)roll\n";
do
{
cin >>Charakterklasse;
switch(Charakterklasse)
{
case('O'):
case('o'):
system("cls");
break;
case('M'):
case('m'):
system("cls");
break;
case('T'):
case('t'):
system("cls");
break;
default:
system("cls");
cout <<"Sie haben eine ungueltige eingabe betaetigt\n";
cout <<"Sie koennen nur die in (Klammern) geschriebenen Buchstaben benutzen !!\n";
cout <<"Bitte wiederholen sie ihr Eingabe\n\n\n";
cout <<"Was für eine Charakterklasse möchten sie waehlen ?\n";
cout <<"(O)rg\n";
cout <<"(M)ensch\n";
cout <<"(T)roll\n";
break;
}
}
while(Charakterklasse != 'O' && Charakterklasse != 'o' && Charakterklasse != 'M' && Charakterklasse != 'm' &&
Charakterklasse != 'T' && Charakterklasse != 't');
cout <<"Sind Sie ein (J)unge oder ein (M)aedchen ?\n\n";
do
{
cin >> Geschlecht;
switch(Geschlecht)
{
case('J'):
case('j'):
system("cls");
break;
case('M'):
case('m'):
system("cls");
break;
default:
system("cls");
cout <<"Sie haben eine ungueltige eingabe betaetigt\n";
cout <<"Sie koennen nur die in (Klammern) geschriebenen Buchstaben benutzen !!\n";
cout <<"Bitte wiederholen sie ihr Eingabe\n\n\n";
cout <<"Sind Sie ein (J)unge oder ein (M)aedchen ?";
break;
}
}
while(Geschlecht !='J' && Geschlecht !='j' && Geschlecht !='M' && Geschlecht !='m');
cout <<"Bitte ueberpruefen sie ihre Angaben\n\n";
cout <<"Ihr Name " <<Charaktername <<"\n"; // Hier wird der name normal wiedergegeben weil man den namen in cin eingibt
cout <<"Ihr Klasse " <<Charakterklasse <<"\n"; // Hier soll nicht O, E oder M kommen sondern "Org", "Elf" oder "Mensch"
cout <<"Ihr Geschlecht " <<Geschlecht <<"\n\n"; // Hier das selbe mit "Junge" oder "Maedchen"...
cout <<"Sind Ihre Angaben korrekt ? \nJa (1)\nNein (2)\n\n";
cin >>AA;
if(AA=1)
{
cout <<"jipidipiduuuuuu, dann kann der spass ja beginnen !!!\n\n\n\n\n\n\n\n\n";
}
else
{
cout <<"Wenn ihre Angaben nicht Korrekt sind, starten sie das Programm neu\n\n\n\n\n\n\n\n\n";
}
return 0;
}
Das soll mal eine kleine Konsolenanwendung sein ohne großen schnick schnack 
So, das war das erste.
Und nun möchte ich fragen, da ich schonmal Poste, wie kann ich die stings so verändern, das wenn z.b. abgefragt wird...
Code:
string Charaktername, Junge, Maedchen;
char Charakterklasse, Geschlecht, AA;
cout <<"Herzlich Willkommen zu meinem kleinen Programm.\n\n";
cout <<"Dann fangen wir mal an, wie moechten Sie Heissen ?\n\n";
cin >> Charaktername;
system("cls");
cout <<"Was für eine Charakterklasse moechten sie wählen ?\n";
cout <<"(O)rg\n";
cout <<"(M)ensch\n";
cout <<"(T)roll\n";
do
{
cin >>Charakterklasse;
switch(Charakterklasse)
{
case('O'):
case('o'):
system("cls");
break;
case('M'):
case('m'):
system("cls");
break;
case('T'):
case('t'):
system("cls");
break;
default:
system("cls");
cout <<"Sie haben eine ungueltige eingabe betaetigt\n";
cout <<"Sie koennen nur die in (Klammern) geschriebenen Buchstaben benutzen !!\n";
cout <<"Bitte wiederholen sie ihr Eingabe\n\n\n";
cout <<"Was für eine Charakterklasse möchten sie waehlen ?\n";
cout <<"(O)rg\n";
cout <<"(M)ensch\n";
cout <<"(T)roll\n";
break;
}
}
while(Charakterklasse != 'O' && Charakterklasse != 'o' && Charakterklasse != 'M' && Charakterklasse != 'm' &&
Charakterklasse != 'T' && Charakterklasse != 't');
Das ich bsp. "T" eingebe, "Charakterklasse" aber nicht "T" wird, sondern "Troll"
das am ende bei der Abfrage auch "Troll" steht und nicht "T"... so wäre es nämlich jetzt. Ich hab danach gesucht, weiß aber nicht wonach ich genau suchen soll, meistens kommt dann was anderes.
Und die letzte Sache, die ich auch so nebenbei, aber jetzt nicht so dringend.
Wie kann ich jetzt aus dieser Datei andere Dateien öffnen, oder diese Sachen in einem Separaten Ordner Speicher und wieder abrufen ?
Sind jetzt nicht so die mega Sachen, aber für mich als neuling kompliziert.
Mit freundlichen Grüßen,
Dr?Acula
|
|
|
02/23/2012, 16:11
|
#2
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
|
|
|
02/23/2012, 16:13
|
#3
|
elite*gold: 0
Join Date: Feb 2012
Posts: 6
Received Thanks: 0
|
Für system("cls"), zumindest hatte ich das so aus einem Tut heraus verstanden...
*Edit
Ok, hab mal "#include <stdio.h>" raus gemacht, geht trotzdem alles
'thx
|
|
|
02/23/2012, 16:16
|
#4
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
system sollte man nicht nutzen.
|
|
|
02/23/2012, 16:20
|
#5
|
elite*gold: 0
Join Date: Feb 2012
Posts: 6
Received Thanks: 0
|
Und was stattdessen ?
Es soll ja ein leeres screen kommen, wo nur das "wichtige" steht...
|
|
|
02/23/2012, 16:25
|
#6
|
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
|
Nja Konsole leeren, gibts in dem Sinn nicht. Soweit ich weiß überschreibt auch der System("cls") Aufruf nur alles mit Leerzeichen. Sowas kann man sich aber auch selbst schreiben. Nur dann bist du immer auch ein Wenigs abhängig vom Betriebssystem. Wie man es unter Windows machen könnte zeigt folgender Artikel:
Weitere hilfreiche Console-Functions unter Windows:
|
|
|
02/23/2012, 16:47
|
#7
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Ich würde statt den ganzen Bedingungen in den do-Schleifen ehr soetwas verwenden:
Code:
bool ready = false;
char geschlecht;
do
{
cin >> geschlecht;
switch(geschlecht)
{
case('J'):
case('j'):
ready = true;
break;
case('M'):
case('m'):
ready = true;
break;
default:
cout << "Fehler" << endl;
}
} while(!ready);
|
|
|
02/23/2012, 17:10
|
#8
|
elite*gold: 0
Join Date: Feb 2012
Posts: 6
Received Thanks: 0
|
Ok, erstmal danke
Wie kann ich denn bei deinem Beispiel machen das bei der eingabe von J oder halt M am ende ein "Junge" oder ein "Mädchen" steht ?
|
|
|
02/23/2012, 17:18
|
#9
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Meinst du so:
Code:
if(geschlecht == 'j' || geschlecht == 'J')
cozt << "Du bist ein Junge" << endl;
else
cout << "Du bist ein Mädchen" << endl;
|
|
|
02/23/2012, 17:45
|
#10
|
elite*gold: 0
Join Date: Feb 2012
Posts: 6
Received Thanks: 0
|
Ok, hab noch ne frage...
Aber erstmal die Situation, ich hab an meinem "Programm" weitergeschrieben und versucht die rand() bez. srand() funktion rein zu bringen.
Aber iwi funktioniert das ganze nicht so wie ichs haben will
Könnt ihr mir da nochmal helfen ?
Hier der code, hab mit Komentaren versucht kurz und knapp zu erklären was Sache ist :
Code:
int Leben, Geld, Entscheidung, VerlustG;
Leben = 100;
Geld = 100;
cout << "Sie haben " << Leben << " Leben und " << Geld << " Goldmünzen... \n\n\n" ;
cout << "Sie gehen durch den Wald, an einer Lichtung kommt ein Gnom zu ihnen und Fordert sie herraus, was wollen sie nun tun ? \n\n" ;
cout << "(A)ngreifen ! \n" ;
cout << "(F)liehen ! \n\n\n\n" ;
cin >> Entscheidung;
switch(Entscheidung)
{
case('A'):
case('a'):
cout << "Der Kampf beginnt";
Sleep(3000);
system("cls");
break; // Hier kommt später noch mehr hinzu
case('F'): // Das ist jetzt die wichtige ecke
case('f'):
do
{
int y;
srand( (unsigned)time( NULL ) ); /*Initialisierung mit der Systemzeit*/
VerlustG = rand()%100; //Umrechnen der Zahlen
y = rand()%10;
VerlustG *= y ;
printf( " %6d\n", VerlustG);
}
while(VerlustG < 10 || VerlustG > 50);
cout << "\n\n";
Geld -= VerlustG; //Soll am ende eine Zahl zwischen 10 und 50 werden, durch die obige "do" schleife
cout << "Sie entscheiden sich davon zu laufen und verlieren dabei " << VerlustG <<" Silbermünzen";
break;
}
Follgende Bibliotheken hab in eingebunden, falls man das so sagen kann :
Code:
#include <iostream>
#include <string>
#include <Windows.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
Die hab ich eig. so aus Tut's und hilfen aus dem Web übernommen.
Dieser Abschnitt soll einfach den Sinn haben, dass wenn man Flieht (F drünkt) eine bestimmte anzahl an Silbermünzen verliert.
Das soll Zufällig generiert werden, deswegen die rand() funktion.
Aber iwi klappt das ganze noch nicht so ganz
|
|
|
02/24/2012, 00:55
|
#11
|
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
|
Hier einmal eine kleine Hilfestellung:
Code:
unsigned int Verlust;
srand( (unsigned)time( NULL ) );
Verlust = rand() % 40 + 10; //Hier wird eine Zufallszahl zwischen 10 - 50 generiert. (Rechenoperationen sollten nachvollziehbar sein ;) )
printf("Verlust : %d\n", Verlust);
Gebraucht wird:
stdio.h
time.h
windows.h
|
|
|
02/24/2012, 07:08
|
#12
|
elite*gold: 0
Join Date: Feb 2012
Posts: 37
Received Thanks: 10
|
Quote:
Originally Posted by .SkyneT.
Hier einmal eine kleine Hilfestellung:
Code:
unsigned int Verlust;
srand( (unsigned)time( NULL ) );
Verlust = rand() % 40 + 10; //Hier wird eine Zufallszahl zwischen 10 - 50 generiert. (Rechenoperationen sollten nachvollziehbar sein ;) )
printf("Verlust : %d\n", Verlust);
Gebraucht wird:
stdio.h
time.h
windows.h
|
Hm, also zum Einen liegt rand() % 40 + 10 im Intervall [10..49], zum anderen sind deine angegebenen Includes etwas holprig.
Da es hier um C++ geht, würde ich statt dem printf() call std::cout benutzen, demnach muss der stdio.h header nicht eingebunden werden.
Ähnliches gilt für time.h. Da wir uns in C++ befinden, heißt der einzubindende header <ctime>. Und ich sehe gerade spontan nicht, an welcher Stelle der von dir gepostete code den windows.h header verwendet.
viele Grüße,
cheesecake
|
|
|
02/24/2012, 13:15
|
#13
|
elite*gold: 0
Join Date: Feb 2012
Posts: 6
Received Thanks: 0
|
Quote:
Originally Posted by käsekuchen11elf
Und ich sehe gerade spontan nicht, an welcher Stelle der von dir gepostete code den windows.h header verwendet.
|
Das ist ja nur ein ausschnitt, davor hab ich noch mehr stehen
Und danke an die Antworten, ich werde es gleich sofort mal einauen...
|
|
|
02/24/2012, 14:35
|
#14
|
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 786
|
Quote:
Originally Posted by käsekuchen11elf
Hm, also zum Einen liegt rand() % 40 + 10 im Intervall [10..49], zum anderen sind deine angegebenen Includes etwas holprig.
Da es hier um C++ geht, würde ich statt dem printf() call std::cout benutzen, demnach muss der stdio.h header nicht eingebunden werden.
Ähnliches gilt für time.h. Da wir uns in C++ befinden, heißt der einzubindende header <ctime>. Und ich sehe gerade spontan nicht, an welcher Stelle der von dir gepostete code den windows.h header verwendet.
viele Grüße,
cheesecake
|
C/C++ ... hab nicht genau geschaut
Ja beim Windows.h Header war ich mir am Anfang auch nicht sicher...
Aber ich kanns dir ja gerne veranschaulichen
(stdlib.h wäre hier anstatt windows.h auch ausreichend ...)
In seinem Fall würde man natürlich einfach iostream nehmen, dann spart man
sich andere header, außerdem wird´s auch noch für std::cout gebraucht
PS: Das ganze sollte auch nur eine Hilfestellung zu der Zufallszahl darstellen, die
der TE vorher "Erzwingen" wollte ...
|
|
|
02/24/2012, 14:36
|
#15
|
elite*gold: 9
Join Date: Sep 2011
Posts: 3,588
Received Thanks: 365
|
thx für das tutorial
|
|
|
 |
Similar Threads
|
gameMinLength Verbesserung
10/25/2011 - Diablo 2 Programming - 10 Replies
Bisher prüft ja das Einstiegsscript (NTBot.ntj oder NTBotLeech.ntj) das zwischen 2 Games (Erstellungszeitpunkt) immer mind. die in gameMinLength eingestellte Zeit verstreicht (meist 3min).
Nun kam mir die Idee das es doch sinnvoller wäre den Durchschnitt der letzten Games für diese Kontrolle zu verwenden. Wenn er also nach 2 Games (zu je 6 Minuten) ein Game nach nur einer Minute wieder verlässt, brauch er theor. nicht 2 Minuten warten da die letzten Games signifikant länger als 3 Minute...
|
[Verbesserung] der TBM-bewertungen
01/08/2011 - Off Topic - 16 Replies
Hallo liebes Forum,
Mir schoss ebend eine Idee in den Kopf und deshalb erstell ich dieses Thema :D
So nun zu der Idee:
Man sieht ja immermehr Leute die ihr E*g verschenken (sei es an weihnachten o.ä) und dafür dann eine Positive Tbm bekommen.
Ich wäre dafür Das man soetwas nicht bewerten kann, da es so ganz leicht ist jemanden zu scammen.
|
Udobot Verbesserung
10/23/2010 - Browsergames - 5 Replies
Wie wärs,wenn Udobot mal auch so eine ähnliche leiste wie Adbot bekommt wo die Acc´s die Hinzugefügt sind immer gleichzeit starten kann und Stoppen und Das man nciht mehr mit UID und SID sein acc eintragen kann sondern wie beim Adbot mit Loginname und Passwort ?
Es ist benutzerfreundlicher,keine wrong Dosid immer,mehrere Acc´s können mit einem Klick gestartet werden.
|
Fps|Piing|-Verbesserung ? :S
06/13/2010 - CrossFire - 2 Replies
Konnt ihr miir sagen wie man seiin Ping und fps verbessern kann ( programme ) oder ähnliches .
|
Bot verbesserung
05/26/2009 - Nostale - 5 Replies
Hallo
wie die meisten mein Bot schon kennen suche ich jetz verbesserungen.
Ich will wissen was ich verbessern kann und nicht sowas:
"Ich will das er dahingeht und mich lvlt"
oder sowas
"Ich will das der Bot bei xxx HP sich hinsetzt"
der bot arbeitet ohne pointer der ist ganz leicht aufgebaut und soll so bleiben
|
All times are GMT +1. The time now is 03:41.
|
|