Ошибки в коде из-за нескольких функций error C2065, error C2182, error C2064, error C2365

Пишу в Visual Studio 2019. У меня было такое задание:

Создать структуру, описывающую студенческую группу. Данные структуры: номер (название) группы (например, АА-14), количество студентов в группе, количество иногородних студентов, количество иностранных студентов. Создать функции: вывод на экран общего количества студентов, вывод на экран общего количества иногородних студентов в потоке, вывод на экран количества иностранных студентов в потоке, перезапись данных структуры в исходный файл.

Файл создал, в него все писалось.

#include <stdexcept>       
#include <iostream>      
#include <fstream>       
#include <vector>

using namespace std;

void inostran(society& akvt);
void inogorodnie(society& akvt);
void obsh_kol(society& akvt);
void rewriting(society& akvt);

struct society
{
    string name_group;       // наименование группы
    int number_group;        // номер группы
    int amount_student;      // количество студентов
    int inogorodnie;         // иногородние студенты
    int inostran;            // иностранные студенты
};

int main()
{
    int i = 0, a = 0, n = 1, x = 0;
    setlocale(LC_ALL, "rus");
    society akvt;
    string name;
    fstream Fout("D:\\structura.txt"); // открываем основной файл для записи в него значений
    cout << " Введите название Группы - ";
    cin >> name;
    akvt.name_group = name;
    Fout << name << "; "; // наименование группы

    cout << " Введите номер Группы - ";
    cin >> x;
    akvt.number_group = x;
    Fout << x << "; "; // номер группы

    cout << " Введите количество студентов - ";
    cin >> x;

    Fout << x << "; "; // количество студентов

    cout << " Введите кол-во иногородних студентов в группе - ";
    cin >> x;
    akvt.inogorodnie = x;
    Fout << x << "; "; // кол-во иногородних студентов

    cout << " Введите кол-во иностранцев в группе - ";
    cin >> x;
    akvt.inostran = x;
    Fout << x << "; "; // кол-во иностранцев
    Fout.close();

    while (a != 5)
    {
        cout << " 1)Bывод на экран общего количества студентов. " << endl;
        cout << " 2)Bывод на экран общего количества иногородних студентов в потоке. " << endl;
        cout << " 3)Bывод на экран количества иностранных студентов в потоке. " << endl;
        cout << " 4)Перезапись данных структуры в исходный файл. " << endl;
        cout << " 5)Для выхода нажмите пятерочку(5) " << endl;
        cin >> a;
        switch (a)
        {
        case '1': obsh_kol(akvt);
        case '2': inogorodnie(akvt);
        case '3': inostran(akvt);
        case '4': rewriting(akvt);
        case '5': exit(1);
        }
    }
    system("pause");
    return 0;
}

void inostran(society& akvt)
{
    cout << " Кол-во иностранных студентов равно " << akvt.inostran;
}

void inogorodnie(society& akvt)
{
    cout << " Кол-во иногородних студентов равно " << akvt.inogorodnie;
}

void obsh_kol(society& akvt)
{
    cout<< " Общее кол-во студентов равно " << akvt.amount_student;
}

void rewriting(society& akvt)
{
    int x;
    string name;
    fstream Fout("D:\\structura.txt"); // открываем основной файл для записи в него значений
    cout << " Введите название Группы - ";
    cin >> name;
    akvt.name_group = name;
    Fout << name << "; "; // наименование группы

    cout << " Введите номер Группы - ";
    cin >> x;
    akvt.number_group = x;
    Fout << x << "; "; // номер группы

    cout << " Введите количество студентов - ";
    cin >> x;
    akvt.amount_student = x;
    Fout << x << "; "; // количество студентов

    cout << " Введите кол-во иногородних студентов в группе - ";
    cin >> x;
    akvt.inogorodnie = x;
    Fout << x << "; "; // кол-во иногородних студентов

    cout << " Введите кол-во иностранцев в группе - ";
    cin >> x;
    akvt.inostran = x;
    Fout << x << "; "; // кол-во иностранцев
    Fout.close();
}

После запуска кода вылезло немало ошибок:

1>C:\Users\artem\OneDrive\Рабочий стол\лабораторные работы\5 практическая\5 практическая.cpp(11,15): error C2065: society: необъявленный идентификатор

1>C:\Users\artem\OneDrive\Рабочий стол\лабораторные работы\5 практическая\5 практическая.cpp(11,24): error C2065: akvt: необъявленный идентификатор


практическая.cpp(11,28): error C2182: inostran: недопустимое использование типа "void"

практическая.cpp(12,18): error C2065: society: необъявленный идентификатор

практическая.cpp(12,27): error C2065: akvt: необъявленный идентификатор

практическая.cpp(12,31): error C2182: inogorodnie: недопустимое использование типа "void"

практическая.cpp(13,15): error C2065: society: необъявленный идентификатор

практическая.cpp(13,24): error C2065: akvt: необъявленный идентификатор

практическая.cpp(13,28): error C2182: obsh_kol: недопустимое использование типа "void"

практическая.cpp(14,16): error C2065: society: необъявленный идентификатор

практическая.cpp(14,25): error C2065: akvt: необъявленный идентификатор

практическая.cpp(14,29): error C2182: rewriting: недопустимое использование типа "void"

практическая.cpp(67,19): error C2064: результатом вычисления фрагмента не является функция, принимающая 1 аргументов

практическая.cpp(68,19): error C2064: результатом вычисления фрагмента не является функция, принимающая 1 аргументов

практическая.cpp(69,19): error C2064: результатом вычисления фрагмента не является функция, принимающая 1 аргументов

практическая.cpp(70,19): error C2064: результатом вычисления фрагмента не является функция, принимающая 1 аргументов

практическая.cpp(77,6): error C2365: inostran: переопределение; предыдущим определением было "переменная данных"

практическая.cpp(11): message : см. объявление "inostran"

практическая.cpp(81,6): error C2365: inogorodnie: переопределение; предыдущим определением было "переменная данных"

практическая.cpp(12): message : см. объявление "inogorodnie"

практическая.cpp(85,6): error C2365: obsh_kol: переопределение; предыдущим определением было "переменная данных"

практическая.cpp(13): message : см. объявление "obsh_kol"

практическая.cpp(89,6): error C2365: rewriting: переопределение; предыдущим определением было "переменная данных"

практическая.cpp(14): message : см. объявление "rewriting"

Пожалуйста,помогите


Ответы (1 шт):

Автор решения: Harry

Ну посмотрите - вы же объявляете свое society ПОСЛЕ объявления

void inostran(society& akvt);

понятно, что компилятор в недоумении...

Если еще добавите

#include <string>

то код даже будет компилироваться :)

→ Ссылка