use the following code as a template to create your personalize grade book. #inc
ID: 3563368 • Letter: U
Question
use the following code as a template to create your personalize grade book.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#pragma warning(disable: 4996)
#define max 100
struct contact { // a node to hold personal details
char name[30];
int phone;
char email[30];
};
struct contact contactbook[max]; // an array of structures, 100 entries
int tail = 0; // global variable
void flush(); // forward declaration of functions
void branching(char c);
int insertion();
int print_all();
int search_contact();
int delete_contact();
int main() { // print a menu for selection
char ch = 'i';
ungetc(' ', stdin); // inject input buffer with a return character
do {
printf("Enter your selection ");
printf(" i: insert a new entry ");
printf(" d: delete an entry ");
printf(" s: search an entry ");
printf(" p: print all entries ");
printf(" q: quit ");
flush(); // flush input buffer
ch = tolower(getchar());
branching(ch);
} while (ch != 113);
return 0;
}
void flush() {
int c;
do {
c = getchar();
} while (c != ' ' && c != EOF);
}
void branching(char c) { // branch to different tasks
switch (c) {
case 'i':
insertion();
break;
case 's':
search_contact();
break;
case 'd':
delete_contact();
break;
case 'p':
print_all();
break;
case 'q':
break;
default:
printf("Invalid input ");
}
}
int insertion() { // insert a new entry at the end
if (tail == max) {
printf("There are no more places to insert. ");
return -1;
}
else {
printf("Enter name, phone, email: ");
scanf("%s", contactbook[tail].name);
// &contactbook[tail].name is an array. No "&" is needed
scanf("%d", &contactbook[tail].phone, sizeof(contactbook[tail].phone));
scanf("%s", contactbook[tail].email);
tail++;
printf("The number of entries = %d ", tail);
return 0;
}
}
int print_all() {
// print name, phone, and email for each contact in the contactbook
int i;
if (tail == 0) {
printf("No entries found.");
}
else {
for (i = 0; i < tail; i++) {
printf(" name = %s ", contactbook[i].name);
printf("phone = %d ", contactbook[i].phone);
printf("email = %s ", contactbook[i].email);
}
}
return 0;
}
int search_contact() { // print phone and email via name
char sname[30]; int i;
printf("Please enter the name to be searched for: ");
scanf("%s", sname); //sname is an array, no & needed
for (i = 0; i<tail; i++)
if (strcmp(sname, contactbook[i].name) == 0) {
printf("phone = %d ", contactbook[i].phone);
printf("email = %s ", contactbook[i].email);
return i;
}
printf("The name does not exist. ");
return -1;
}
int delete_contact() {
int i, k;
k = search_contact();
if (k == -1) {
printf("The name does not exist. "); return -1;
}
else {
for (i = k; i<tail; i++) {
strcpy(contactbook[i].name, contactbook[i + 1].name);
contactbook[i].phone = contactbook[i + 1].phone;
strcpy(contactbook[i].email, contactbook[i + 1].email);
printf("The index deleted is: %d ", k);
}
tail--;
return k;
}
}
In this problem, you will also define a GradeType enumeration which will include a predefine set of categories, e.g. Final, Midterm, Quiz, Project, and Homework.
Users will select from the following options: I, D, P, or Q, which correspond to insert, delete, print, or quit respectively. (Hitting Q will exit the application.) [5]
Use the following formula as a guide:
Final Grade = 0.22 * (Final Exam PE / Final Exam PP) + 0.18 * (Midterm PE / Midterm PP) + 0.10 * (Quizzes PE / Quizzes PP) + 0.20 * (Project PE / Project PP) + 0.30 * (Homework PE / Homework PP);
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#pragma warning(disable: 4996)
#define max 100
struct contact { // a node to hold personal details
char name[30];
int phone;
char email[30];
};
struct contact contactbook[max]; // an array of structures, 100 entries
int tail = 0; // global variable
void flush(); // forward declaration of functions
void branching(char c);
int insertion();
int print_all();
int search_contact();
int delete_contact();
int main() { // print a menu for selection
char ch = 'i';
ungetc(' ', stdin); // inject input buffer with a return character
do {
printf("Enter your selection ");
printf(" i: insert a new entry ");
printf(" d: delete an entry ");
printf(" s: search an entry ");
printf(" p: print all entries ");
printf(" q: quit ");
flush(); // flush input buffer
ch = tolower(getchar());
branching(ch);
} while (ch != 113);
return 0;
}
void flush() {
int c;
do {
c = getchar();
} while (c != ' ' && c != EOF);
}
void branching(char c) { // branch to different tasks
switch (c) {
case 'i':
insertion();
break;
case 's':
search_contact();
break;
case 'd':
delete_contact();
break;
case 'p':
print_all();
break;
case 'q':
break;
default:
printf("Invalid input ");
}
}
int insertion() { // insert a new entry at the end
if (tail == max) {
printf("There are no more places to insert. ");
return -1;
}
else {
printf("Enter name, phone, email: ");
scanf("%s", contactbook[tail].name);
// &contactbook[tail].name is an array. No "&" is needed
scanf("%d", &contactbook[tail].phone, sizeof(contactbook[tail].phone));
scanf("%s", contactbook[tail].email);
tail++;
printf("The number of entries = %d ", tail);
return 0;
}
}
int print_all() {
// print name, phone, and email for each contact in the contactbook
int i;
if (tail == 0) {
printf("No entries found.");
}
else {
for (i = 0; i < tail; i++) {
printf(" name = %s ", contactbook[i].name);
printf("phone = %d ", contactbook[i].phone);
printf("email = %s ", contactbook[i].email);
}
}
return 0;
}
int search_contact() { // print phone and email via name
char sname[30]; int i;
printf("Please enter the name to be searched for: ");
scanf("%s", sname); //sname is an array, no & needed
for (i = 0; i<tail; i++)
if (strcmp(sname, contactbook[i].name) == 0) {
printf("phone = %d ", contactbook[i].phone);
printf("email = %s ", contactbook[i].email);
return i;
}
printf("The name does not exist. ");
return -1;
}
int delete_contact() {
int i, k;
k = search_contact();
if (k == -1) {
printf("The name does not exist. "); return -1;
}
else {
for (i = k; i<tail; i++) {
strcpy(contactbook[i].name, contactbook[i + 1].name);
contactbook[i].phone = contactbook[i + 1].phone;
strcpy(contactbook[i].email, contactbook[i + 1].email);
printf("The index deleted is: %d ", k);
}
tail--;
return k;
}
}
Explanation / Answer
This is how a pointer works in c.stores it ina memory location. I would recommend you to read this:
http://www.tutorialspoint.com/cprogramming/c_pointers.htm
http://www.cprogramming.com/tutorial/c/lesson6.html
It will be very helpful
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.