---------------------------------------------------------- -- rich.adb - How long before I'm a millionaire? -- Skansholm pp58-60 ---------------------------------------------------------- with TEXT_IO; use TEXT_IO; procedure rich is -- declare integer and float I/O libraries package int_io is new TEXT_IO.INTEGER_IO( INTEGER ); package float_io is new TEXT_IO.FLOAT_IO( FLOAT ); use int_io, float_io; -- declare any constants and variables required number_of_days : integer := 1; -- days on job days_wage : float := 0.01; -- 1c today total_earnings : float := 0.01; -- on day 1 desired_earnings : float := 1000000.0; ---------------------------------------------------------- begin -- rich -- calculate earnings for each day till a millionaire PUT_LINE (" Day Wage Total Earnings"); while total_earnings < desired_earnings loop number_of_days := number_of_days + 1; days_wage := days_wage * 2.0; -- double pay :-) total_earnings := total_earnings + days_wage; PUT (number_of_days, width=>3); PUT (days_wage, fore=>8, aft=>2, exp=>0); PUT (total_earnings, fore=>8, aft=>2, exp=>0); NEW_LINE; end loop; PUT ("You will be a millionaire in "); PUT (number_of_days, width=>1); PUT_LINE (" days."); end rich;
Day Wage Total Earnings 2 0.02 0.03 3 0.04 0.07 . . . . . 26 335544.31 671088.63 27 671088.63 1342177.25 You will be a millionaire in 27 days.