du studierst nicht zufällig in aachen seto? das kommt mir alles bis ins kleinste detail vertraut vor =P
naja... will dir mal helfen weil ich eigentlich nicht glaube dass es so laufen kann wie du es da auch im letzten post stehen hast. und dazu als tip: lerne unbedingt mit call by reference, pointern und addressplätzen umzugehen sonst bist du da verloren. meine überarbeitung sieht so aus (alle zahlen von 20-39 getestet und ca 10 zufällige zahlen außerhalb des bereichs getestet):
#include <iostream>
#include <string>
using namespace std;
void zahlen(short z, string* zt);
int main()
{
string zahlentext;
short zahl;
while(true)
{
cout << "Zahl = ? ";
cin >> zahl;
zahlen(zahl, &zahlentext);
cout << zahl << " = " << zahlentext << endl;
}
return 0;
}
void zahlen(short z, string* zt)
{
string einer[9] = {"ein", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun"};
string zehner[2] = {"zwanzig","dreissig"};
if(z == 20)
{
*zt = zehner[0];
}
else if(z == 30)
{
*zt = zehner[1];
}
else if(z>20 && z<=39)
{
*zt = einer[(z%10)-1] + "und" + zehner[(z/10)-2];
}
else if(z<20 || z>39)
{
*zt = "unbekannt";
}
}
sollte die einfachste art sein denke ich... man kann natürlich die funktion im kopf machen aber aus irgendeinem grund mag das unser prof nicht (welcher mir extrem schleierhaft ist da ich nicht wirklich eine sinnvolle optimierung darin erkennen kann).