How can I compare a user’s input to keep the loop going? When I input y the program ends and I have no idea where it’s going wrong.
I was expecting this to be outputted
enter data point: 80.0
rolling average = 80.000
more data? y
enter data point: 100.0
rolling average = 90.000
more data? y
enter data point: 100.0
rolling average = 93.333
more data? n
final rolling average = 93.333
<code>program RollingAverage;
#include("stdlib.hhf");
static
sum: real32; // Sum of all entered numbers
count: int32 := 0; // Count of numbers entered
number: real32; // Current number entered by user
avg: real32; // Rolling average
moreData: byte:= 0; // User response for more data
yes: byte:= $79;
begin RollingAverage;
again:
stdout.put("Enter data point: ");
stdin.get(number); // Get floating point input
fld(number);
fadd(sum);
fstp(sum);
inc(count);
// Calculate rolling average
fld(sum);
fild(count);
fdivp();
fstp(avg);
// Display the rolling average
stdout.put("Rolling average = ");
stdout.putr32(avg, 10, 6);
stdout.newln();
// Ask if the user wants to enter more data
stdout.put("More data? (y/n): ");
stdin.flushInput(); // Flush any extra input
stdin.getc();
mov(moreData, al);
cmp(al, yes);
je again;
// Display the final rolling average
stdout.put("Final rolling average = ");
stdout.putr32(avg, 10, 6);
end RollingAverage;
</code>
<code>program RollingAverage;
#include("stdlib.hhf");
static
sum: real32; // Sum of all entered numbers
count: int32 := 0; // Count of numbers entered
number: real32; // Current number entered by user
avg: real32; // Rolling average
moreData: byte:= 0; // User response for more data
yes: byte:= $79;
begin RollingAverage;
again:
stdout.put("Enter data point: ");
stdin.get(number); // Get floating point input
fld(number);
fadd(sum);
fstp(sum);
inc(count);
// Calculate rolling average
fld(sum);
fild(count);
fdivp();
fstp(avg);
// Display the rolling average
stdout.put("Rolling average = ");
stdout.putr32(avg, 10, 6);
stdout.newln();
// Ask if the user wants to enter more data
stdout.put("More data? (y/n): ");
stdin.flushInput(); // Flush any extra input
stdin.getc();
mov(moreData, al);
cmp(al, yes);
je again;
// Display the final rolling average
stdout.put("Final rolling average = ");
stdout.putr32(avg, 10, 6);
end RollingAverage;
</code>
program RollingAverage;
#include("stdlib.hhf");
static
sum: real32; // Sum of all entered numbers
count: int32 := 0; // Count of numbers entered
number: real32; // Current number entered by user
avg: real32; // Rolling average
moreData: byte:= 0; // User response for more data
yes: byte:= $79;
begin RollingAverage;
again:
stdout.put("Enter data point: ");
stdin.get(number); // Get floating point input
fld(number);
fadd(sum);
fstp(sum);
inc(count);
// Calculate rolling average
fld(sum);
fild(count);
fdivp();
fstp(avg);
// Display the rolling average
stdout.put("Rolling average = ");
stdout.putr32(avg, 10, 6);
stdout.newln();
// Ask if the user wants to enter more data
stdout.put("More data? (y/n): ");
stdin.flushInput(); // Flush any extra input
stdin.getc();
mov(moreData, al);
cmp(al, yes);
je again;
// Display the final rolling average
stdout.put("Final rolling average = ");
stdout.putr32(avg, 10, 6);
end RollingAverage;