Member 14026872 Ответов: 2

Мне нужна помощь со структурами


Эй, так что я пишу программу на структурах, и она использует пользовательский ввод для таких полей, как возраст, пол и т. д., И мне было интересно, как я смогу вывести все имена в строке

Что я уже пробовал:

#include <iostream>
#include <string>
#include <fstream>
#include <exception>
#include <stdexcept>

using namespace std;

// learning structs
struct Student{
    int age;
    string sex,name,f_name,l_name,matricno,religion,bloodgroup;

    };
    // function to view a record in a file.
Student readfunc(){
   fstream things("studentData.txt", ios::in | ios::out | ios::app);

    Student dummystud;

    cout<<"Enter matric number"<<endl;
    cin>> dummystud.matricno;

    cout<<"Enter age"<<endl;
    cin>> dummystud.age;

    cout<<"Enter first name"<<endl;
    cin>>dummystud.f_name;

    cout<<"Enter last name"<<endl;
    cin>>dummystud.l_name;

    cout<<"Enter the sex"<<endl;
    cin>>dummystud.sex;
        if (dummystud.sex!="M" || dummystud.sex!="F"){
            throw runtime_error("Something went wrong");
        }


    cout<<"What is the religion"<<endl;
    cin>>dummystud.religion;
    cout<<"Enter the blood group"<<endl;
    cin>>dummystud.religion;

    return dummystud;

}

int main()
{
   int n;
   cout<<"ENTER THE NUMBER OF STUDENTS"<<endl;
   cin>>n;

   Student student[n];
   int i;

   for(i=0; i <n; i++){
    cout<<"Enter Student's "<<(i+1)<<"details below\n\n"<<endl;
    student[i]=readfunc();
   }

    return 0;
}

2 Ответов

Рейтинг:
20

Richard MacCutchan

for(i=0; i <n; i++)
{
    cout << student[i].name << endl;
    cout << student[i].f_name << endl;
    cout << student[i].l_name << endl;
    cout << student[i].matricno << endl;
    cout << student[i].religion << endl;
    cout << student[i].bloodgroup << endl;
    cout << student[i].age << endl;
    cout << student[i].sex << endl;
}


CPallini

5.

Рейтинг:
0

CPallini

Ричард я уже показал вам решение. Кроме того, вы можете перегрузить ostream оператор вставки (<<), например

#include <iostream>
#include <string>

using namespace std;

struct Student
{
  int age;
  string sex,name,f_name,l_name,matricno,religion,bloodgroup;
};

// ostream operator  << overloading
ostream & operator << ( ostream & os, const Student & st)
{
  os << st.name << "\n";
  os << st.f_name << "\n";
  os << st.l_name << "\n";
  os << st.age << "\n";
  os << st.matricno << "\n";
  os << st.religion << "\n";
  os << st.bloodgroup << "\n";
  return os;
}


int main()
{
  Student foo{ 32, "M", "Foo-Bar", "Foo", "Bar", "A12", "Foobist","A"};
  cout << foo << endl;// now you can feed cout with a Student struct instance
}


Rick York

Я был бы более склонен добавить в структуру метод вывода. Вместе с методом ввода, который запрашивает ввод данных.

CPallini

Что ж, вы очень вольны это сделать. :-)