Home > Mobile >  Asking for conditional information in C
Asking for conditional information in C

Time:11-11

Not sure how I was supposed to formulate the title.

I'm writing a program that asks for a students name, and if the name is not "stop", then it asks for a course name. If the course name is not "stop", it asks for a grade, then returns to ask for another course until the course name is "stop". Then it asks for another student and does the whole thing again until the student name is "stop". Then it prints all the students with their courses and grades.

Here is my code:

#include <iostream>
#include <vector>

using namespace std;

struct student{

public:
    string name;
    string course;
    int grade;

}student_t;

void input(){
    cout << "Please type the name of a student: " << endl;
    getline(cin, student_t.name[i]);

    if (student_t.name.compare("stop")){
        break;
    }
    else {
        cout << "Please type a course name: " << endl;
        getline(cin, student_t.course);

        if (student_t.course.compare("stop")) {
            break;
        }
        else {
            cout << "Please type the grade: " << endl;
            cin >> student_t.grade;
            }
        }
    }


int main() {

    int i;

    vector<student> input(i);

for (i = 0; i < 20;   i){
    student[i].input();
}

    cout << student_t.name << " - " << student_t.course << " - " << student_t.grade << endl;


    return 0;
}

It does not work at all..

I'm new to C so I dont really know why.

Any ideas?

CodePudding user response:

I can give one or two recommendations.

  1. Instead of checking if every step is wrong (i.e. equals "stop"), focus on what is right (i.e. what's the next things to read). From a mental perspective, I find it much easier to think about what has to be right for the program to progress as intended, as opposed to "What can go wrong here?" at every step. Your input() could then be (in pseudo code):
if (student_t.name is not "stop")
   {
   Read_course_name();
   if (student_t.course is not "stop")
      {
      Read_grades();

      // Done
      return(StudentInfo);
      }
   }

// Ending up here means "stop" was typed so deal with that
// in a meaningful way
...
  1. Take a look at https://en.wikipedia.org/wiki/Separation_of_concerns and then ask yourself, -Is the input() function really an input or are there more than one concern that coud be broken out in a separate function?

Cheers /N

  • Related