So, jetzt ist alles geändert
Ich glaube, die EInrückung ist zum Teil immer noch falsch (hab eig nur das vom Switch geändert)
Ja, ich finde es unlogisch, 1000 oder mehr (eigentlich schon ab 500) Kreaturen zu töten. Entweder ist man da imm Krieg, und man bekommt kaum Exp, da alles auf die anderen verteilt wird, oder man ist bereits episch oder so, da kriegt man keine EP mehr für die Monster. --> Nein, es sollen keine beliebig lange Zahlen verwendet werden könne
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <map>
using namespace std;
inline int GetIntVal(const string& str)
{
return atoi(str.c_str());
}
main()
{
string ZwSp;
int ExpTabelle[20][20]={ /*Stufe 1*/{300,600,900,1350,1800,2700,3600,5400,7200,10800,14400,21600,28800,43200,57600,86400,115200,172800,230400,345600},/*Stufe 2*/{300,600,900,1350,1800,2700,3600,5400,7200,10800,14400,21600,28800,43200,57600,86400,115200,172800,230400,345600},/*Stufe 3*/{300,600,900,1350,1800,2700,3600,5400,7200,10800,14400,21600,28800,43200,57600,86400,115200,172800,230400,345600},/*Stufe 4*/{300,600,800,1200,1600,2400,3200,4800,6400,9600,12800,19200,25600,38400,51200,76800,102400,153600,204800,307200},/*Stufe 5*/{300,500,750,1000,1500,2250,3000,4500,6000,9000,12000,18000,24000,36000,48000,72000,96000,144000,192000,288000},/*Stufe 6*/{300,450,600,900,1200,1800,2700,3600,5400,7200,10800,14400,21600,28800,43200,57600,86400,115200,172800,230400},/*Stufe 7*/{263,350,525,700,1050,1400,2100,3150,4200,6300,8400,12600,16800,25200,33600,50400,67200,100800,134400,201600},/*Stufe 8*/{200,300,400,600,800,1200,1600,2400,3600,4800,7200,9600,14400,19200,28800,38400,57600,76800,115200,153600},/*Stufe 9*/{0,225,338,450,675,900,1350,1800,2700,4050,5400,8100,10800,16200,21600,32400,49200,64800,98400,129600},/*Stufe 10*/{0,0,250,375,500,750,1000,1500,2000,3000,4500,6000,9000,12000,18000,24000,36000,48000,72000,96000},/*Stufe 11*/{0,0,0,275,413,550,825,1100,1650,2200,3300,4950,6600,9900,13200,19800,26400,39600,52800,79200},/*Stufe 12*/{0,0,0,0,300,450,600,900,1200,1800,2400,3600,5400,7200,10800,14400,21600,28800,43200,57600},/*Stufe 13*/{0,0,0,0,0,325,488,650,975,1300,1950,2600,3900,5850,7800,11700,15600,23400,31200,46800},/*Stufe 14*/{0,0,0,0,0,0,350,525,700,1050,1400,2100,2800,4200,6300,8400,12600,16800,25200,33600},/*Stufe 15*/{0,0,0,0,0,0,0,375,563,750,1125,1500,2250,3000,4500,6750,9000,13500,18000,27000},/*Stufe 16*/{0,0,0,0,0,0,0,0,400,600,800,1200,1600,2400,3200,4800,7200,9600,14400,19200},/*Stufe 17*/{0,0,0,0,0,0,0,0,0,425,638,850,1275,1700,2550,3400,5100,7650,10200,15300},/*Stufe 18*/{0,0,0,0,0,0,0,0,0,0,450,675,900,1350,1800,2700,3600,5400,8100,10800},/*Stufe 19*/{0,0,0,0,0,0,0,0,0,0,0,475,713,950,1425,1900,2850,3800,5700,8550},/*Stufe 20*/{0,0,0,0,0,0,0,0,0,0,0,0,500,750,1000,1500,2000,3000,4000,6000} };
struct Menge
{
int Spieler;
int Monster;
int Aktoren;
};
Menge Anzahl;
cout << "Bitte lesen sie vor der Benutzung dieses Progrämmchens die LIESMICH.TXT." << endl;
cout << "Geben sie bitte die Anzahl der Spieler an.";
cin >> Anzahl.Spieler;
cout << endl << "Geben sie bitte die Stufe jedes Spielers an." << endl;
int Spielerlvl[Anzahl.Spieler];
for (int a=0; a!=Anzahl.Spieler;++a)
{
cin >> Spielerlvl[a];
}
int Komma = 0;
int k = 0;
cout << "Anzahl aller unterschiedlicher bewältigten Kreaturen: ";
cin >> Anzahl.Monster;
cout << endl;
Neue_Eingabe:
cout << "Geben sie die Anzahl der Monster mit dem dazugehörigen Herausforderungsgrad an:" << endl;
int i = 0;
string Eingabe;
int Monster[Anzahl.Monster][2]; //Par2: Anzahl - HG, Par1: für jedes Monster
//cout << "Marke vor WhileSchleife"; //Testkomment
for(i=0; i != Anzahl.Monster; ++i) {//Neue Schleife für neue Eingabe
cout << "[#' << i+1 << '],[HG]: " << endl;
cin >> Eingabe; //Eingabe von: 1,1 bis 999,20
//cout << "Marke nach einlesen";
if (Eingabe[1]==',')
Komma=1;
else if (Eingabe[2]==',')
Komma=2;
else Komma=3;
//cout << "Marke nach if (1)";
//cout << "Marke1.0";
switch (Komma) { //Zerlegung der Eingabe in Anzahl und HG
case 1: Monster[i][0] = (Eingabe[0]);
Monster[i][1]=GetIntVal(Eingabe.substr(2));
Monster[i][1]=GetIntVal(ZwSp);
//cout << "Marke Switch1"; //Testkomment
break;
case 2: Monster[i][0] = 10*(Eingabe[0]-'0')+ (Eingabe[1]-'0');
Monster[i][1]=GetIntVal(Eingabe.substr(3));
Monster[i][1]=GetIntVal(ZwSp);
//cout << "Marke Switch2"; //Testkomment
break;
case 3: Monster[i][0] = 100*(Eingabe[0]-'0') + 10*(Eingabe[1]-'0') + (Eingabe[2]-'0');
Monster[i][1]=GetIntVal(Eingabe.substr(4));
Monster[i][1]=GetIntVal(ZwSp);
//cout << "Marke Switch3"; //Testkomment
break;
}//Ende Zerlegung
//cout << "Marke2"; //Testkomment
}//Ende for-Schleife
int Summe = 0;
int n = 0;
//cout << "Marke1"; //Testkomment
for (int m=0; m!=Anzahl.Spieler; ++m) {
Summe = 0;
for (n=0; n!=Anzahl.Monster; ++n) {
Summe += (Monster[n][0]*ExpTabelle[(Spielerlvl[n]-1)][Monster[n][1]]);
}
Summe /= Anzahl.Spieler;
cout << "Spieler mit LVL " << Spielerlvl[n] << " erhalten " << Summe << " Erfahrungspunkte." << endl;
}//Ende for-Schleife der ExpBerechnung
return 0;
}
Alles anzeigen
Muss dann jetzt bei der Zuweisung ( Monster[i][1]=GetIntVal(Eingabe.substr(2)); ) noch das GetIntVal hin, oder macht er das selber zu einer Integer Zahl??
Oh stimmt, die Summe war in der falschen for Schleife, geändert
Oh, ich glaube, der Fehler lag an der letzten Schleife, dort stand
for (n=0; n!=Anzahl.Monster; ++i) {
anstatt
for (n=0; n!=Anzahl.Monster; ++n) {
Na super -.-
Okai, dann dank ich dir erstmal Es kommt noch das falsche Ergebnis raus, aber es läuft jetzt durch, das ist das wichtigste
Dann werd ich mir bald mal auch die Regeln der Einrückung, formatierung und den guten Programmierstil anschauen und aneignen,
Danke sehr
Rasensprenger