#include <iostream.h> #include <stdio.h> #include <conio.h> int main() // written by A. Schiffler, Name: fuechse.cpp { //Deklaration der Konstanten const int min_fuechse = 2, max_fuechse = 1000; const int min_abschuss = 0, max_abschuss = 100; const int min_vermehrungsrate = -10, max_vermehrungsrate = 20; const int max_jahre = 20; //Deklaration der Variablen int wahl, jahr, abschuss; char wiederholung; float max_bestand, fuechse, zuwachsrate; do { jahr = 1; cout <<"\nMit diesem Programm kann der Fuchsbestand vorhergesagt werden\n"; //Einlesen des anfänglichen Fuchsbestandes do { cout<<"\nGeben Sie bitte den derzeitigen Fuchsbestand an: "; cin >> fuechse; if ( fuechse > max_fuechse || fuechse < min_fuechse) { cout<<"\n Der Wert muss zwischen "<<min_fuechse<<" und "<<max_fuechse<<" liegen!\n"; } } while (fuechse > max_fuechse || fuechse < min_fuechse); //Einlesen der Abschussrate do { cout<<"\nGeben Sie bitte die jaehrliche Abschussrate ein: "; cin >> abschuss; if ( abschuss < min_abschuss || abschuss > max_abschuss ) { cout<<"\n Der Wert muss zwischen "<<min_abschuss<<" und "<<max_abschuss<<" liegen!\n"; } } while ( abschuss < min_abschuss || abschuss > max_abschuss ); //Einlesen der Vermehrungsrate do { cout<<"\nGeben Sie bitte die jaehrliche Vermehrungsrate in Prozent ein: "; cin >> zuwachsrate; if ( zuwachsrate < min_vermehrungsrate || zuwachsrate > max_vermehrungsrate ) { cout<<"\n Der Wert muss zwischen "<<min_vermehrungsrate<<" und "<<max_vermehrungsrate<<" liegen!\n"; } } while ( zuwachsrate < min_vermehrungsrate || zuwachsrate > max_vermehrungsrate ); max_bestand = 2*fuechse; cout<<"\nWaehlen Sie die Darstellungsart: Tabelle (1) oder Text (andere Eingabe): "; cin>>wahl; if (wahl != 1) //Darstellungsart Text { printf("\nFuchsbestand am Anfang des 1. Jahres: %4.0f\n", fuechse); do { fuechse = fuechse - abschuss; fuechse = fuechse * ( 1 + zuwachsrate / 100 ); jahr++; if ( fuechse < 0 ) fuechse = 0; printf("Fuchsbestand am Anfang des %i. Jahres: %4.0f\n", jahr, fuechse); } while ( fuechse < max_bestand && fuechse > 0 && jahr <= max_jahre ); }//if (wahl != 1) Darstellungsart Text else //Darstellungsart Tabelle { printf("\n\t\tJahr\t\tAnzahl Fuechse\n"); //Tabellenüberschrift ausgeben printf("\t\t%2.0i\t\t %4.0f\n", jahr, fuechse); do { fuechse -= abschuss; fuechse *= ( 1 + zuwachsrate / 100 ); jahr++; if ( fuechse < 0 ) fuechse = 0; printf("\t\t%2.0i\t\t %4.0f\n", jahr, fuechse); } while ( fuechse < max_bestand && fuechse > 0 && jahr <= max_jahre ); }//else Darstellungsart Tabelle //Es wird festgestellt, weshalb die Schleife verlassen wurde //wurde Scheife verlassen, weil sich die Anzahl der Fuechse verdoppelt hat? if ( fuechse >= max_bestand ) { cout <<"\nDer Fuchsbestand hat sich innerhalb von "<< (jahr - 1 ); cout <<" Jahren verdoppelt\n"; } //wurde Scheife verlassen, weil es keine Fuechse mehr gibt? if ( fuechse <= 0 ) { cout <<"\nNach "<< ( jahr - 1 ) <<" Jahren gibt es keine Fuechse mehr"; } cout<<"\nMoechten Sie eine neue Berechnung durchfuehren lassen? (j/n) "; cin>> wiederholung; } while(wiederholung == 'j'); getch(); return 0; } // end of main |
|