The code works on another system, but when run on another computer (and possible an older compiler), the program either runs in an infinite loop or does not recognize the redirected input file.
Here is the code:
Code:#include <stdio.h> int main() { int prod_num, number, counter=0, major_code=0, minor_code=0, tax_code=0, where=0, total_number=0; double base_cost, minor_factor=0, shipping_costs=0, tax_amount=0, final_unitprice=0,average_final, final_subtotal=0, final_price_product; while ( scanf("%d %lf %d", &prod_num, &base_cost, &number) != EOF) { total_number += number; counter++; major_code = prod_num / 100000; minor_code = (prod_num % 100000) / 100; tax_code = (prod_num % 100) / 10; where = prod_num % 10; if(minor_code >= 0 && minor_code <= 399) { minor_factor = 1.45; } else if ((minor_code>=400 && minor_code <=799) || (minor_code>=950 && minor_code <=955)) { minor_factor = 1.12; } else { minor_factor = 0.89; } switch(where) { case 0: shipping_costs = 7.50; break; case 1: shipping_costs = 8.47; break; case 2: shipping_costs = 6.05; break; case 3: shipping_costs = 10.20; break; default: shipping_costs = 20.00; break; } if(tax_code == 1) { if(major_code>=0 && major_code<=250) tax_amount = 0.12; else if(major_code>=251 && major_code<=450) tax_amount = 0.15; else tax_amount = 0.25; } else if (tax_code == 0) tax_amount = 0; final_unitprice = (base_cost * minor_factor + shipping_costs) * (1 + tax_amount); final_price_product = final_unitprice * number; final_subtotal += final_price_product; printf("---------------------------> PRODUCT [%d]<---------------------------\n", counter); printf("\n"); printf("Product #: %d || Price/Unit: $%.2f || # of Products: %d || Total: $%.2f\n", prod_num, final_unitprice, number, final_price_product); printf("\n"); printf("\n"); } average_final = final_subtotal / total_number; printf("\n"); printf("The total price is: $%.2f\n", final_subtotal); printf("The average price per product is: $%.2f", average_final); printf("\n"); return 0; }