Probleme mit Schulaufgabe!
-
Bei einer Zeidauer größer 5 Stunden wird mir trotzdem die Anzahl der Bakterien berechnet kann mir jemand weiterhelfen.
In dem Link könnt ihr die Aufgabenstellung einsehen.
http://www.bilder-space.de/bilder/ba4dfa-1308214521.jpg
#include <iostream>
using namespace std;
void berechneAnzahlBakterien(int bakterien, int stunden);
void berechneAnzahlBakterien(int bakterien, int stunden){
int lv;
for(lv=1;lv<=stunden;lv++){
bakterien=bakterien*2;}
cout<<"Nach ablauf der eingegebenen Stunden betraegt die Bakterienanzahl: "<<bakterien;if(stunden>5){
cout<<"Fuer eine Zeitdauer groesser 5h ist keine Berechnung moeglich: "<<endl;
}}
int main()
{
int zeit;
int anzbak;
cout<<"***Berechnung des Wachstums eines Bakterienstammes***"<<endl;
cout<<"Eingabe der Anzahl der Bakterien zu Beginn: ";
cin>>anzbak;
cout<<endl;
cout<<"Eingabe der Anzahl der Stunden: ";
cin>>zeit;
cout<<endl;
berechneAnzahlBakterien(anzbak, zeit);
return 0;
}
-
#include <iostream> using namespace std; void berechneAnzahlBakterien(int bakterien, int stunden); // unnötig erst zu deklarieren und direkt im anschluss zu definieren ! void berechneAnzahlBakterien(int bakterien, int stunden) { int lv; for(lv = 1; lv <= stunden; lv++){ bakterien = bakterien*2; } cout << "Nach ablauf der eingegebenen Stunden betraegt die Bakterienanzahl: " << bakterien; if ( stunden > 5 ) { cout<<"Fuer eine Zeitdauer groesser 5h ist keine Berechnung moeglich: "<<endl; } } int main() { int zeit; int anzbak; cout << "***Berechnung des Wachstums eines Bakterienstammes***" << endl; cout << "Eingabe der Anzahl der Bakterien zu Beginn: "; cin >> anzbak; cout << endl; cout << "Eingabe der Anzahl der Stunden: "; cin >> zeit; cout << endl; berechneAnzahlBakterien(anzbak, zeit); return 0; }du berechnest erst die anzahl der baktieren und prüfst dann ob es nicht zu viele stunden waren. mach das if an den anfang der funktion und setz die schleife in den else teil
(kennst du exponential funktionen? f(x) = b * ax wobei bei dir das hier gilt:
anzahlbaktieren(stundenAnzahl) = startanzahl * 2stundenAnzahl )
geht schneller und sauber als mit schleifeedit: die vorwärtz deklaration deiner funktion wäre nur nötig wenn die definition hinter der main funktion wäre...
-
Das Program wird von oben nach unten abgearbeitet. Die Ausgabe (und Berechnung) der Bakterienanzahl steht vor der Abfrage, ob es mehr als 5 Stunden sind. Also wird das auch vorher schön alles berechnet und ausgegeben und danach erst geprüft, ob es überhaupt berechnet werden durfte. Du musst also die Reihenfolge der Anweisungen etwas ändern und noch einen else-Zweig oder ein return einbauen.
Ansonsten sieht es aber gut aus.
Edit: zu spät
@Skym0sh0: In der Aufgabe steht, die Berechnung muss in einer "geeigneten Wiederholungsstruktur" erfolgen und ich gehe mal davon aus, dass man diese nicht an eine Libraryfunktion delegieren darf.
-
Anweisung: Schreiben sie ein C-Programm.
Ist C+ erlaubt?
-
Vielen Dank!
Skym0sh0 schrieb:
#include <iostream> using namespace std; void berechneAnzahlBakterien(int bakterien, int stunden); // unnötig erst zu deklarieren und direkt im anschluss zu definieren ! void berechneAnzahlBakterien(int bakterien, int stunden) { int lv; for(lv = 1; lv <= stunden; lv++){ bakterien = bakterien*2; } cout << "Nach ablauf der eingegebenen Stunden betraegt die Bakterienanzahl: " << bakterien; if ( stunden > 5 ) { cout<<"Fuer eine Zeitdauer groesser 5h ist keine Berechnung moeglich: "<<endl; } } int main() { int zeit; int anzbak; cout << "***Berechnung des Wachstums eines Bakterienstammes***" << endl; cout << "Eingabe der Anzahl der Bakterien zu Beginn: "; cin >> anzbak; cout << endl; cout << "Eingabe der Anzahl der Stunden: "; cin >> zeit; cout << endl; berechneAnzahlBakterien(anzbak, zeit); return 0; }du berechnest erst die anzahl der baktieren und prüfst dann ob es nicht zu viele stunden waren. mach das if an den anfang der funktion und setz die schleife in den else teil
(kennst du exponential funktionen? f(x) = b * ax wobei bei dir das hier gilt:
anzahlbaktieren(stundenAnzahl) = startanzahl * 2stundenAnzahl )
geht schneller und sauber als mit schleifeedit: die vorwärtz deklaration deiner funktion wäre nur nötig wenn die definition hinter der main funktion wäre...
-
ipsec schrieb:
@Skym0sh0: In der Aufgabe steht, die Berechnung muss in einer "geeigneten Wiederholungsstruktur" erfolgen und ich gehe mal davon aus, dass man diese nicht an eine Libraryfunktion delegieren darf.
ups, nicht gesehen...
-
shisha schrieb:
Anweisung: Schreiben sie ein C-Programm.
Ist C+ erlaubt?
Vielen Dank euch allen. Ich hab meinen Fehler erkannt. C++ ist erlaubt wir schreiben generell nur c++ in der Schule.
-
tobifeli schrieb:
shisha schrieb:
Anweisung: Schreiben sie ein C-Programm.
Ist C+ erlaubt?
Vielen Dank euch allen. Ich hab meinen Fehler erkannt. C++ ist erlaubt wir schreiben generell nur c++ in der Schule.
das zielte eher darauf ab, dass gleich eine lösung als template meta programm hier herausgeschossen wird, was du und wahrscheinlich nicht mals dein lehrer versteht...
-
Skym0sh0 schrieb:
das zielte eher darauf ab, dass gleich eine lösung als template meta programm hier herausgeschossen wird, was du und wahrscheinlich nicht mals dein lehrer versteht...
Viel mehr als
bakterien *= 1 << stunden;ist, glaube ich, nicht drin.