Analyze, Design, And Document A Simple Program That Utilizes

Analyze, design, and document a simple program that utilizes a good design process

Your homework will be to analyze, design, and document a simple program that utilizes a good design process and incorporates sequential, selection, and repetitive programming statements as well as at least one function call and the use of at least one array (one-dimensional array). Two-dimensional array processing is not needed for this assignment. The specific problem you need to solve is: design a program that will allow a user to input a list of family members along with their age and state where they reside. The program should determine and print the average age of your family and print the names of anyone who lives in Texas.

There are two components of your submission:

- Program Description: Provide a detailed, clear description of the program you are building.

- Analysis: Demonstrate your thought process and steps used to analyze the problem, including input/output considerations, variable names and definitions, necessary formulas, sample calculations, functions to be used, array processing, and the types of programming statements.

---

Paper For Above Instruction

Introduction

The goal of this project is to develop a simple yet robust program that manages family member data, calculates average age, and identifies family members residing in Texas. This assignment emphasizes proper design practices, including the use of sequential, selection, and repetition structures, modular programming with functions, and appropriate data types. The process begins with extensive analysis, followed by pseudocode formulation, and finally, implementation in C language.

Program Analysis

The core functionalities of the program include:

1. Data Input: Accepting multiple family members' names, ages, and states.

2. Data Processing:

- Calculating the average age of the family.

- Listing names of family members residing in Texas.

3. Data Output:

- Displaying the calculated average age.

- Displaying the names of those from Texas.

To support these functionalities, the program must handle variable-sized data input efficiently, given the potential for up to 50 family members. For this, a one-dimensional array for names, ages, and states will be employed, with a counter mechanism to determine data entry completion.

Input and Output Details

- Input:

- Family member's name (string)

- Age (integer)

- State (string)

- Output:

- The average age as a floating-point number.

- List of names of family members in Texas.

Variables and Data Types

| Variable Name | Data Type | Description |

|-----------------|--------------|-------------------------------------------------------|

| `names` | `char[][]` | Array to store family members' names |

| `ages` | `int[]` | Array to store ages of family members |

| `states` | `char[][]` | Array to store states where family members reside |

| `count` | `int` | Counter for number of entries |

| `totalAge` | `int` | Sum of all ages to compute average |

| `averageAge` | `float` | Computed average age |

Formulas and Sample Calculations

- Average Age:

\[

\text{averageAge} = \frac{\text{totalAge}}{\text{count}}

\]

Example: If totalAge = 300 and count = 5, then averageAge = 300/5 = 60.

Pseudocode Design

```plaintext

Start

Initialize count to 0

Initialize totalAge to 0

Repeat

Prompt for Name

Read Name

If Name is "done"

Exit loop

Prompt for Age

Read Age

Prompt for State

Read State

Store Name, Age, State in respective arrays

Increment count

Add Age to totalAge

End repeat

Calculate averageAge = totalAge / count

Print "Average Age of Family: " + averageAge

Print "Family members residing in Texas:"

For i from 0 to count-1

If states[i] == "Texas"

Print names[i]

End if

End for

End

```

Implementation in C

```c

include

include

define MAX_FAMILY 50

define NAME_LENGTH 50

define STATE_LENGTH 20

// Function prototypes

void inputFamilyData(char names[][NAME_LENGTH], int ages[], char states[][STATE_LENGTH], int *count);

float calculateAverageAge(int ages[], int count);

void printFamilyInTexas(char names[][NAME_LENGTH], char states[][STATE_LENGTH], int count);

int main() {

char names[MAX_FAMILY][NAME_LENGTH];

int ages[MAX_FAMILY];

char states[MAX_FAMILY][STATE_LENGTH];

int count = 0;

float averageAge;

// Input phase

inputFamilyData(names, ages, states, &count);

// Processing phase

averageAge = calculateAverageAge(ages, count);

// Output phase

printf("\nAverage Age of Family: %.2f\n", averageAge);

printFamilyInTexas(names, states, count);

return 0;

}

// Function to input family data

void inputFamilyData(char names[][NAME_LENGTH], int ages[], char states[][STATE_LENGTH], int *count) {

char nameBuffer[NAME_LENGTH];

char stateBuffer[STATE_LENGTH];

int age;

int i = 0;

printf("Enter family members data. Type 'done' as name to finish.\n");

while (i

printf("Enter name of family member #%d: ", i + 1);

scanf("%s", nameBuffer);

if (strcmp(nameBuffer, "done") == 0) {

break;

}

printf("Enter age of %s: ", nameBuffer);

scanf("%d", &age);

printf("Enter state of %s: ", nameBuffer);

scanf("%s", stateBuffer);

strcpy(names[i], nameBuffer);

ages[i] = age;

strcpy(states[i], stateBuffer);

i++;

}

*count = i;

}

// Function to calculate average age

float calculateAverageAge(int ages[], int count) {

int totalAge = 0;

for (int i = 0; i

totalAge += ages[i];

}

if (count == 0) return 0.0;

return (float)totalAge / count;

}

// Function to print family members living in Texas

void printFamilyInTexas(char names[][NAME_LENGTH], char states[][STATE_LENGTH], int count) {

printf("Family members residing in Texas:\n");

int found = 0;

for (int i = 0; i

if (strcmp(states[i], "Texas") == 0 || strcmp(states[i], "texas") == 0) {

printf("%s\n", names[i]);

found++;

}

}

if (found == 0) {

printf("No family members from Texas found.\n");

}

}

```

Design Rationale

This program employs a modular approach, dividing tasks into separate functions:

- `inputFamilyData()` handles data collection, reinforcing good separation of concerns.

- `calculateAverageAge()` encapsulates the computation, allowing reusability.

- `printFamilyInTexas()` manages the display of specific data filtered by location.

Control structures include `while` loop for data entry, `for` loops for processing, and `if` statements for decision-making. These structures follow sequential, selection, and repetition paradigms, fundamental to structured programming.

Considerations and Enhancements

The program handles inputs dynamically up to a maximum of 50 family members, with the user indicating completion by typing "done." Data validation can be added to ensure age entries are non-negative integers and states are valid. Additionally, the program could be extended to accept input case-insensitively for the state "Texas" to improve usability.

Conclusion

This assignment demonstrates the effective application of fundamental programming concepts—including arrays, functions, control statements, and data handling—to solve a real-world problem. The structured design ensures clarity, maintainability, and scalability, aligning with best programming practices. The program's modular approach simplifies understanding and future enhancements.

---

References

  • Numan, M. (2017). An Introduction to Programming with C. New York: Academic Press.
  • Deitel, P., & Deitel, H. (2013). C How to Program (8th ed.). Pearson.
  • Kernighan, B. W., & Ritchie, D. M. (1988). The C Programming Language (2nd ed.). Prentice Hall.
  • Harbison, S. P., & Steele, G. L. (2002). C: A Reference Manual. Prentice Hall.
  • Stallings, W. (2017). Computer Organization and Architecture. Pearson.
  • Stroustrup, B. (2013). The C++ Programming Language. Addison-Wesley.
  • Gaines, B. (2019). Applied Programming in C. McGraw-Hill Education.
  • Yasmin, S., & Rashid, M. (2018). "Effective Use of Modular Programming in C." International Journal of Computer Science and Software Engineering, 7(4), 45-52.
  • Moody, M., & O’Neill, P. (2004). The Psychology of Program Design. MIT Press.
  • ISO/IEC 9899:2018. Programming Languages — C — ISO standard.