Zadanie: Program, który wczytuje w pętli liczby różne od zera i oblicza ich sumę oraz średnią. Wczytanie zera oznacza zakończenie działania pętli i wyświetlenie obliczonych wartości.
0
2
Odpal Dev C++, przestudiuj tutorial http://www.cplusplus.com/doc/tutorial/ i napisz ten program.
Wskazówka: jeśli już musisz korzystać z Dev C++, to (o ile jeszcze nie używasz) weź chociaż wersję Orwella ( https://sourceforge.net/projects/orwelldevcpp/ ). Stary nieaktualizowany Dev C++ 4.9.9.2 możesz sobie spokojnie odpuścić.
15
Wieczny Student napisał(a):
Czekam na odpowiedź.
Naskrobałem coś takiego:
template<typename State>
class Loop
{
enum ReturnValue{
FirstIteration = 0,
ContinueLoop = 1,
BreakLoop = 2
};
public:
Loop(State& s) : state_(s) {}
template<typename Body, typename Condition>
void execute(Body b, Condition c){
switch(setjmp(loopBuffer_)){
case FirstIteration:
case ContinueLoop:
if(!c(state_)){
longjmp(loopBuffer_, BreakLoop);
}else{
b(state_);
longjmp(loopBuffer_, ContinueLoop);
}
}
}
private:
State& state_;
std::jmp_buf loopBuffer_;
};
struct AveragingLoopState
{
int lastRead;
int count;
int sum;
};
void loopBody(AveragingLoopState& s){
if(!(cin >> s.lastRead)){ s.lastRead = 0; }
if(s.lastRead){
++s.count;
s.sum += s.lastRead;
}
}
bool loopCondition(AveragingLoopState const& s){
return s.lastRead;
}
korzystasz z takiej pętli w ten sposób:
int main()
{
AveragingLoopState s;
s.lastRead = -1;
s.count = 0;
s.sum = 0;
Loop<AveragingLoopState> loop(s);
loop.execute(&loopBody, &loopCondition);
cout << "Srednia to: " << static_cast<double>(s.sum) / s.count << endl;
}
http://melpon.org/wandbox/permlink/fM22EeFAvNwGMMyL
Mam nadzieję, że nie za późno.