Add problem 8 solution
This commit is contained in:
parent
feab097a60
commit
56ac8c91f8
18
include/p8.h
Normal file
18
include/p8.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#ifndef P8_H
|
||||||
|
#define P8_H
|
||||||
|
|
||||||
|
// 8.a
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int id;
|
||||||
|
char first_name[16];
|
||||||
|
char last_name[16];
|
||||||
|
double gpa;
|
||||||
|
} Student;
|
||||||
|
|
||||||
|
void prompt_student_info(Student* out_student);
|
||||||
|
void print_student(Student* student);
|
||||||
|
double compute_average_gpa(Student* students, int num_students);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
18
src/main.c
18
src/main.c
@ -7,6 +7,7 @@
|
|||||||
#include "p5.h"
|
#include "p5.h"
|
||||||
#include "p6.h"
|
#include "p6.h"
|
||||||
#include "p7.h"
|
#include "p7.h"
|
||||||
|
#include "p8.h"
|
||||||
|
|
||||||
void print_int_arr(int* arr, int size) {
|
void print_int_arr(int* arr, int size) {
|
||||||
for (int i = 0; i < size; ++i) {
|
for (int i = 0; i < size; ++i) {
|
||||||
@ -77,6 +78,23 @@ int main(void) {
|
|||||||
reverse_string(p7_str);
|
reverse_string(p7_str);
|
||||||
printf("\"%s\"\n", p7_str);
|
printf("\"%s\"\n", p7_str);
|
||||||
|
|
||||||
|
// Problem 8
|
||||||
|
printf("Problem 8:\n");
|
||||||
|
|
||||||
|
Student students[5];
|
||||||
|
|
||||||
|
for (int i = 0; i < 5; ++i) {
|
||||||
|
prompt_student_info(&students[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 5; ++i) {
|
||||||
|
print_student(&students[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
double average_gpa = compute_average_gpa(students, 5);
|
||||||
|
|
||||||
|
printf("Average GPA: %.2lf\n", average_gpa);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
40
src/p8.c
Normal file
40
src/p8.c
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#include "p8.h"
|
||||||
|
|
||||||
|
#define _CRT_SECURE_NO_WARNINGS
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
void prompt_student_info(Student* out_student) {
|
||||||
|
printf("Enter student ID: ");
|
||||||
|
scanf("%d", &out_student->id);
|
||||||
|
|
||||||
|
printf("Enter student first name: ");
|
||||||
|
// Our array can only hold 16 characters including the null terminator,
|
||||||
|
// so we can only read 15 non-null characters. Consider what happens
|
||||||
|
// to any remaining characters if the user enters a string longer than
|
||||||
|
// 15 characters.
|
||||||
|
scanf("%15s", out_student->first_name);
|
||||||
|
|
||||||
|
printf("Enter student last name: ");
|
||||||
|
// Same as first name
|
||||||
|
scanf("%15s", out_student->last_name);
|
||||||
|
|
||||||
|
printf("Enter student GPA: ");
|
||||||
|
scanf("%lf", &out_student->gpa);
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_student(Student* student) {
|
||||||
|
printf("%8d%16s%16s%8.2lf\n", student->id, student->first_name,
|
||||||
|
student->last_name, student->gpa);
|
||||||
|
}
|
||||||
|
|
||||||
|
double compute_average_gpa(Student* students, int num_students) {
|
||||||
|
double gpa_sum = 0.0;
|
||||||
|
|
||||||
|
for (int i = 0; i < num_students; ++i) {
|
||||||
|
gpa_sum += students[i].gpa;
|
||||||
|
}
|
||||||
|
|
||||||
|
return gpa_sum / num_students;
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user