Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Need help with a C project. I cannot get my chart that i need to make to fit the books requirment so im looking format

Need help with a C project.

I cannot get my chart that i need to make to fit the books requirment so im looking format help

My programs

image text in transcribed

How it should look

image text in transcribed

My code

#include #include

int main(void) { char title[50]; char col1[50]; char col2[50];

int point[50]; char names[50][50] = {'\0'};

int count = 0; char dataPoint[50];

int commas = 0;

int i = 0, j = 0, k = 0, p = 0, len; int intFound = 0; char integerValue[5] = ""; int commaAfterInt = 0;

printf("Enter a title for the data: "); fgets (title, 50, stdin); printf("You entered: %s ", title);

printf("Enter the column 1 header: "); fgets (col1, 50, stdin); printf("You entered: %s ", col1);

len = strlen(col1); if (len > 0 && col1[len-1] == ' ') { col1[--len] = '\0'; }

printf("Enter the column 2 header: "); fgets (col2, 50, stdin); printf("You entered: %s ", col2);

while (count

if (dataPoint[i] == ',') { commas++; if (!isdigit(dataPoint[i+1]) && !isdigit(dataPoint[i+2])) { commaAfterInt = 1; } } else if (commas == 0) { names[count][i] = dataPoint[i]; } else if (isdigit(dataPoint[i])) { intFound = 1; for (j = 0; integerValue[j] != '\0'; j++); integerValue[j] = dataPoint[i]; integerValue[j + 1] = '\0'; } i++; }

if (commas == 0) { printf("Error: No comma in string. "); } else if (commas > 1) { printf("Error: Too many commas in input. "); } else if (commaAfterInt == 1) { printf("Error: Comma not followed by an integer. "); } else { point[count++] = atoi(integerValue);

k = 0; p = 0; strcpy(names[count], "");

while(dataPoint[p] != ',') { names[count][k] = dataPoint[p]; k++; p++; }

names[count][k] = '\0'; names[count][k+1] = '\0';

printf("Data string: %s ", names[count]); printf("Data integer: %d ", point[count - 1]); } }

printf(" %40s ", title); printf(" %-20s | %20s ", col1, col2); printf(" ----------------------------------------------------- ");

i = 0; while (i

printf(" \t\t\tFORMATTED HISTOGRAM "); i = 0; while (i

return 0; }

Here is the full problem if you have questions

(1) Prompt the user for a title for data. Output the title. (1 pt) Ex:

Enter a title for the data: Number of Novels Authored You entered: Number of Novels Authored 

(2) Prompt the user for the headers of two columns of a table. Output the column headers. (1 pt) Ex:

Enter the column 1 header: Author name You entered: Author name Enter the column 2 header: Number of novels You entered: Number of novels 

(3) Prompt the user for data points. Data points must be in this format: string, int. Store the information before the comma into a string variable and the information after the comma into an integer. The user will enter -1 when they have finished entering data points. Output the data points. Store the string components of the data points in an array of strings. Store the integer components of the data points in an array of integers. (4 pts) Ex:

Enter a data point (-1 to stop input): Jane Austen, 6 Data string: Jane Austen Data integer: 6 

(4) Perform error checking for the data point entries. If any of the following errors occurs, output the appropriate error message and prompt again for a valid data point.

If entry has no comma

Output: Error: No comma in string. (1 pt)

If entry has more than one comma

Output: Error: Too many commas in input. (1 pt)

If entry after the comma is not an integer

Output: Error: Comma not followed by an integer. (2 pts)

Ex:

Enter a data point (-1 to stop input): Ernest Hemingway 9 Error: No comma in string. Enter a data point (-1 to stop input): Ernest, Hemingway, 9 Error: Too many commas in input. Enter a data point (-1 to stop input): Ernest Hemingway, nine Error: Comma not followed by an integer. Enter a valid data point: Ernest Hemingway, 9 Data string: Ernest Hemingway Data integer: 9 

(5) Output the information in a formatted table. The title is right justified with a width of 33. Column 1 has a width of 20. Column 2 has a width of 23. (3 pts) Ex:

 Number of Novels Authored Author name | Number of novels -------------------------------------------- Jane Austen | 6 Charles Dickens | 20 Ernest Hemingway | 9 Jack Kerouac | 22 F. Scott Fitzgerald | 8 Mary Shelley | 7 Charlotte Bronte | 5 Mark Twain | 11 Agatha Christie | 73 Ian Flemming | 14 J.K. Rowling | 14 Stephen King | 54 Oscar Wilde | 1 

(6) Output the information as a formatted histogram. Each name is right justified with a width of 20. (4 pts) Ex:

 Jane Austen ****** Charles Dickens ******************** Ernest Hemingway ********* Jack Kerouac ********************** F. Scott Fitzgerald ******** Mary Shelley ******* Charlotte Bronte ***** Mark Twain *********** Agatha Christie ************************************************************************* Ian Flemming ************** J.K. Rowling ************** Stephen King ****************************************************** Oscar Wilde * 
Enter a data point (-1 to stop input) Number of Novels Authored Author name Number of novels Jane Austen I Charles Dickens I 20 Ernest Hemingway Jack Kerouacg way I F. Scott Fitzgerald Mary Shelley zgerald I Charlotte Bronte Mark Twain Bronte Agatha Christie l Ian Flemmingtie J. K. Rowling 14 Stephen King 54 Oscar Wildeg

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started