Hi guys,
I'm trying to write a program that stores a name, ID number, average test score, and letter grade for up to 20 students. This code here will only store/print one student's information. I can't figure out how to get it to store more than that. Any advice?
I know not all the steps are there for everything, my main concern is how to get it to store/print more than one student. I appreciate any responses.Code:#include <iostream> using namespace std; struct node { char name[20]; // Name of up to 20 letters int idNum; int avgScore[20]; char grade[20]; node *nxt; // Pointer to next node }; node *start_ptr = NULL; node *current; // Used to move along the list int option = 0; void add_record() { node *temp, *temp2; // Temporary pointers //node avgScore; // Reserve space for new node and fill it with data int* a = NULL; // Pointer to int, initialize to nothing. int n; // Size needed for array cout << "\n\t--------------Student Information---------------\n"; cout << "How many test scores this semester? "; cin >> n; // Read in the size a = new int[n]; // Allocate n ints and save ptr in a. for (int i=0; i<n; i++) { a[i] = 0; // Initialize all elements to zero. } int m; cout << "How many students in the course? "; cin >> m; temp = new node; for (int k=0; k<m; k++) { cout << "Please enter the name of student " << (k+1) << ": "; cin >> temp->name; cout << "Please enter the ID Number of the student : "; cin >> temp->idNum; cout << "Please enter student's test scores for the " << n << " tests: "; for (int j=0; j<n; j++) { cout << "\nTest " << (j+1) << ": "; cin >> a[j]; /*for (int p=0; p<j; p++) { temp->avgScore = (temp->avgScore + a[p]) / p; }*/ } } temp->nxt = NULL; // Set up link to this node if (start_ptr == NULL) { start_ptr = temp; current = start_ptr; } else { temp2 = start_ptr; // We know this is not NULL - list not empty! while (temp2->nxt != NULL) { temp2 = temp2->nxt; // Move to next link in chain } temp2->nxt = temp; } } void display_list() { node *temp; temp = start_ptr; cout << endl; if (temp == NULL) cout << "List currently empty." << endl; else { while (temp != NULL) { // Display details for what temp points to cout << "Name : " << temp->name << " "; cout << "idNum : " << temp->idNum << " "; cout << "avgScore : " << temp->avgScore; if (temp == current) cout << " <-- Current node"; cout << endl; temp = temp->nxt; } cout << "End of list!" << endl; } } void main() { start_ptr = NULL; do { display_list(); cout << endl; cout << "Please select an option : " << endl; cout << "1. Create new record." << endl; cout << "2. Exit the program." << endl; cin >> option; switch (option) { case 1 : add_record(); break; } } while (option != 2); }
Thanks!