Extension of the program below with the following specifications Array of records with file I/O is needed. Program takes two inputs at a time name of a person, and, the coin value as an integer in the range 5 to 95, output change values in multiples of 50, 20, 10 and 5 cents with higher valued coins as possible. Input to the program comes from a data file called coins.txt. There can be 0 and up to 10 input lines with same name repeated in the data file but the coin values different. When name is same program would need to add up the coin amounts to obtain a total amount for that individual before computing the change to be given. Once program has read in the data from coins.txt, your program will close coins.txt first, and then show a console screen menu as illustrated below. The program will continue to show the menu and execute the menu options until "Exit" is selected by entering the value 2 at the menu prompt. 1. Enter name 2. Exit When the user enters the value 1 at the menu prompt program will ask for a name. Change values of 0 are not shown. If the user enters a non-existent name at menu option 1, and therefore would not be in the array of records program will print Not found After the process output for menu option 1, the menu is redisplayed. If the user enters 2 to exit, program will write the coin and change data in CSV format to file called change.csv. After writing the data to the file program will exit. Each data line in change.csv will be in the format: name of person,total coin value,number of 50 cent coins, number of 20 cent coins,number of 10 cent coins,number of 5 cent coins newline. The output data file change.csv cannot have repeated names. #include #include int cent50=0; int cent20=0; int cent10=0; int cent05=0; void calculatechange(int* change) { if(*change>0) { if(*change>=50) { *change-=50; cent50++; } else if(*change>=20) { *change-=20; cent20++; } else if(*change>=10) { *change-=10; cent10++; } else if(*change>=05) { *change-=05; cent05++; } calculatechange(change); } } void printchange() { if(cent50) printf("\n50cents:%d coins",cent50); if(cent20) printf("\n20cents:%d coins",cent20); if(cent10) printf("\n10cents:%d coins",cent10); if(cent05) printf("\n05cents:%d coins",cent05); cent50=0; cent20=0; cent10=0; cent05=0; } void takechange(int* change) { scanf("%d",change); getchar(); } int main() { int change=0; int firstinput=0; while(1) { if(!firstinput) { printf("\nEnter the amount:"); firstinput++; } else { printf("\n\nEnter the amount to continue or Enter -1 to exit:"); } takechange(&change); if(change>=5&&change<=95) { if((change%5)==0) { if(change>=5&&change<=95) { calculatechange(&change); } } } else { if(change==-1) { printf("\nExiting the loop:"); break; } else { printf("Please Enter the value between 5 and 95"); } } printchange(); } printf("\nLoop is terminated"); return 0; }
Extension of the
Array of records with file I/O is needed. Program takes two inputs at a time name of a person, and, the coin value as an integer in the range 5 to 95, output change values in multiples of 50, 20, 10 and 5 cents with higher valued coins as possible.
Input to the program comes from a data file called coins.txt. There can be 0 and up to 10 input lines with same name repeated in the data file but the coin values different. When name is same program would need to add up the coin amounts to obtain a total amount for that individual before computing the change to be given.
Once program has read in the data from coins.txt, your program will close coins.txt first, and then show a console screen menu as illustrated below. The program will continue to show the menu and execute the menu options until "Exit" is selected by entering the value 2 at the menu prompt.
1. Enter name
2. Exit
When the user enters the value 1 at the menu prompt program will ask for a name.
Change values of 0 are not shown.
If the user enters a non-existent name at menu option 1, and therefore would not be in the array of records program will print Not found
After the process output for menu option 1, the menu is redisplayed.
If the user enters 2 to exit, program will write the coin and change data in CSV format to file called change.csv. After writing the data to the file program will exit.
Each data line in change.csv will be in the format:
name of person,total coin value,number of 50 cent coins, number of 20 cent coins,number of 10 cent coins,number of 5 cent coins newline.
The output data file change.csv cannot have repeated names.
#include<stdio.h>
#include<stdlib.h>
int cent50=0;
int cent20=0;
int cent10=0;
int cent05=0;
void calculatechange(int* change)
{
if(*change>0)
{
if(*change>=50)
{
*change-=50;
cent50++;
}
else if(*change>=20)
{
*change-=20;
cent20++;
}
else if(*change>=10)
{
*change-=10;
cent10++;
}
else if(*change>=05)
{
*change-=05;
cent05++;
}
calculatechange(change);
}
}
void printchange()
{
if(cent50)
printf("\n50cents:%d coins",cent50);
if(cent20)
printf("\n20cents:%d coins",cent20);
if(cent10)
printf("\n10cents:%d coins",cent10);
if(cent05)
printf("\n05cents:%d coins",cent05);
cent50=0;
cent20=0;
cent10=0;
cent05=0;
}
void takechange(int* change)
{
scanf("%d",change);
getchar();
}
int main()
{
int change=0;
int firstinput=0;
while(1)
{
if(!firstinput)
{
printf("\nEnter the amount:");
firstinput++;
}
else
{
printf("\n\nEnter the amount to continue or Enter -1 to exit:");
}
takechange(&change);
if(change>=5&&change<=95)
{
if((change%5)==0)
{
if(change>=5&&change<=95)
{
calculatechange(&change);
}
}
}
else
{
if(change==-1)
{
printf("\nExiting the loop:");
break;
}
else
{
printf("Please Enter the value between 5 and 95");
}
}
printchange();
}
printf("\nLoop is terminated");
return 0;
}
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 2 images