Programmbsp. Problem

Gorefiend

Grünschnabel
Hi!
Bin noch nicht sehr geübt in C++ und habe mir ein kleines Bsp ausgemalen und wollte es mal drauflosprogrammieren. Aber keine Angst, beherrsche die Grundkenntnisse.

Die Idee: Eine Zahl(z) 2teilen mit 2 Prozentsätze, so oft man will(h)
Quasi bsp:
Zahl:100
Prozent:60% bzw 40%
3 mal


100

(1.mal):60 40
(2.mal):36 24 24 16
(3.mal):21,6 14,4 14,4 9,6 14,4 9,6 9,6 6,4
// (4.mal): Die 21,6 wieder 60% und 40%, 14,4 60% und 40% usw...
usw.

Bin schon halb verrückt weil mir keine Idee kommt wie ich eine allgemeine Methode schreibe die die neuberechneten Zahlen wieder aufteilt und das h mal! Hab schon jede möglich schleife ausgedacht wie ich das machen könnte! Grrrrr
Wär super wenn mir wer helfen würde!


Hier mein bisheriger code:

#include <iostream>
#include <iomanip>
#include <cctype>
using namespace std;

class Division {

public:
int h;
float p;
double z, r;

void eingabe();
void ausgabe();
};

void Division::eingabe(void) {

cout<<"Gib die Zahl ein die du gerne zerlegen willst: ";
do {
cin.clear();
cin.sync();
cin>>z;
if (cin.fail()) {
cout<<"Das war keine Zahl: ";
}
}

while (cin.fail());

cout<<"Mit welchem Prozentsatz soll die Zahl zerlegt werden: ";
do {
cin.clear();
cin.sync();
cin>>p;
if (cin.fail()) {
cout<<"Das war keine Zahl: ";
}
} while (cin.fail());
cout<<"Wie oft soll die Zahl zerlegt werden: ";
do {
cin.clear();
cin.sync();
cin>>h;
if (cin.fail()) {
cout<<"Das war keine Zahl: ";
}
} while (cin.fail());

}

void Division::ausgabe(void) {
jo was kommt da rein...

}

int main() {
Division erste;
erste.eingabe();
erste.ausgabe();
}
 
Jo das habe ich mir auch schon angeschaut, nur wie formuliere ich es, dass jede enstandene Zahl wieder mit bspweise 0.6 und 0.4 und diese Zahlen wieder mit 0.6 und 0.4 multipliziere usw.
Mit der Rekursion bring ichs nur zusammen dass eine Zahl immer übergeben wird und mit 0.6 und 0.4 berechnet wird.
Man kann sich es sich vereinfacht in einer pyramidenform vorstellen(Kann es hier nur schwer darstellen):


100
60 40
36 24 24 16
usw.(h mal)
 
Hast du es dir ungefähr so vorgestellt?

C++:
#include <stdio.h>

void divide_by_percent( double z, int h ) {

   if( h <= 0 ) { return; }

   double _z = z * 0.6,
          z_ = z * 0.4;

   printf( "h[%i]: ° 60P = %.2f ° 40P = %.2f ° von %.2f \n", h, _z, z_, z ); 
   
   h--;
   
   divide_by_percent( _z, h );
   divide_by_percent( z_, h );
   
   return;

}

int main() {

   divide_by_percent( 100.0, 3 );

   return 0;

}

Wegen der Ausgabe musst du noch was machen weil die nicht
geordnet ist. Ich würde ein Structbaum vorschlagen. (http://www.galileo-press.de/openbook/c_von_a_bis_z/c_024_003.htm#RxxobKap02400304002BF91F04C1A8)

*Note*: Das ist nicht die beste Lösung aber eines der vielen Lösungsmöglichkeiten.
 
Zuletzt bearbeitet von einem Moderator:
Kannst du mir die ausgabe in c++ übersetzen?Quasi printf( "h[%i]: ° 60P = %.2f ° 40P = %.2f ° von %.2f \n", h, _z, z_, z );
bin in c nicht geübt!
Aber ich glaube so stelle ich mir das vor!
 
Code:
printf( "h[%i]: ° 60P = %.2f ° 40P = %.2f ° von %.2f \n", h, _z, z_, z );

ist(fast)gleich

Code:
cout << "h[" << h << "]" << " ° 60P = " << _z << " ° 40P = " << z_ << " ° von " << z << endl;

Glaube ich. Benutze C++ sehr sehr selten...
 
Code:
printf( "h[%i]: ° 60P = %.2f ° 40P = %.2f ° von %.2f \n", h, _z, z_, z );

ist(fast)gleich

Code:
cout << "h[" << h << "]" << " ° 60P = " << _z << " ° 40P = " << z_ << " ° von " << z << endl;

Glaube ich. Benutze C++ sehr sehr selten...

ist korrekt.
Aber wers abschreibt beim includieren aufpassen
Code:
#include <iostream> 
using namespace std;
statt
Code:
#include <stdio.h>
 
Zurück