NumberPtr Number::Read(Input &input) { Integer ten(10); auto_ptr<Integer> intValue(new Integer); while(input.Current() >= '0' && input.Current() <= '9') { Integer digit(input.Current() - '0'); intValue = intValue->Times(&ten)->Plus(&digit); input.Next(); } // Process part after decimal separator if(input.Current() == '.') { // Cast the current value to float (just to prevent compiler warning) auto_ptr<MachineReal> realValue(new MachineReal(intValue)); input.Next(); auto_ptr<MachineReal> factor(new MachineReal(1.0)); MachineReal tenth(0.1); while(input.Current() >= '0' && input.Current() <= '9') { MachineReal digit(input.Current() - '0'); factor = factor->Times(&tenth); realValue = realValue->Plus(factor->Times(&digit).get()); input.Next(); } return NumberPtr(realValue); } else return NumberPtr(intValue); }
//Menu algorithmos condicionais void load_alg_conditional(void) { do { printf("\n\t../Conditional Algorithms \n"); printf("\nPlease choose one of the following options:\n"); printf("______________________________________________________\n\n"); printf("1.------------------------------------------------------\n"); printf("2.------------------------------------------------------\n"); printf("3.------------------------------------------------------\n"); printf("4.------------------------------------------------------\n"); printf("5.------------------------------------------------------\n"); printf("6.------------------------------------------------------\n"); printf("7.------------------------------------------------------\n"); printf("8.------------------------------------------------------\n"); printf("9.------------------------------------------------------\n"); printf("10.-----------------------------------------------------\n"); printf("11.-----------------------------------------------------\n"); printf("12.Return...\n"); printf("13.Exit\n"); printf("_____________________________________________________\n\n"); printf("\t\tEnter Choice: "); scanf("%u", &choice); system("clear"); switch(choice) { case 1: first(); break; case 2: second(); break; case 3: third(); break; case 4: fourth(); break; case 5: fifth(); break; case 6: sixth(); break; case 7: seventh(); break; case 8: eighth(); break; case 9: ninth(); break; case 10: tenth(); break; case 11: eleventh(); break; case 12: load_menu(); break; case 13: printf("\n Quitting program!\n"); exit(FLAG); break; default: printf("\n Invalid choice!\n"); break; } } while (choice != 8); }