Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > программа обработки типа запись


Автор: Malika 22.11.2019, 11:45
Здравствуйте!Помогите новичку,пожалуйста,понять ,в чем могут быть ошибки,долго не могу разобраться.(c++)
Ошибка C2360 пропуск инициализации "middle" из-за метки "case"
Ошибка C2143 синтаксическая ошибка: отсутствие ";" перед "константа"
Ошибка C2017 недопустимая escape-последовательность
Ошибка (активно) E0007 нераспознанная лексема

#include <iostream>
#include <string>
#include <conio.h>
#include <fstream>
 
 
 
using namespace std;
 
struct student {
    int ID;
    string name;
    int year;
    int gnum;
    struct marks {
        int phys, math, inf, chem;
    }mark;
    double sb;
}student;
 
int main() {
    setlocale(LC_ALL, "Rus");
 
 
start: cout << "\n\t1 - Создание\n\t2 - Просмотр\n\t3 - Коррекция\n\t4 - Решение индивидуального задания\n\t5";
 
    ifstream fin("students.txt", ios_base::in); 
    ofstream fout("students.txt", ios::app); 
 
    int key;
    string a;
    int ID, scale, year;
    char name;
    cin >> key;
    switch (key) {
    case 1:
        cout << "\n\tВведите фамилия и инициалы: ";
        cin.get();
        getline(cin, student.name);
        cout << "\n\tВведите год рождения: ";
        cin >> student.year;
        cout << "\n\tВведите номер группы: ";
        cin >> student.gnum;
        cout << "\n\tОценка по физике: ";
        cin >> student.mark.phys;
        cout << "\n\tОценка по математике: ";
        cin >> student.mark.math;
        cout << "\n\tОценка по информатике: ";
        cin >> student.mark.inf;
        cout << "\n\tОценка по химии: ";
        cin >> student.mark.chem;
 
 
        int middle = student.mark.phys + student.mark.math + student.mark.inf + student.mark.chem\4;
        cout << middle;
    
        student.sb = (student.mark.phys + student.mark.math + student.mark.inf + student.mark.chem) / 4;
 
 
 
        fout <<" \n" << student.ID <<" "<< student.name << "\t" << student.year << "\t" << student.gnum << "\t" << student.mark.phys << "\t" << student.mark.math << "\t" << student.mark.inf << "\t" << student.mark.chem << "\t" << student.sb <<"\n";
        goto start;
        break;
    case 2:
 
 
 
 
        if (fin.is_open()) {
 
            while (fin >> student.ID) {
                fin >> student.name >> student.year >> student.gnum >> student.mark.phys >> student.mark.math >> student.mark.inf >> student.mark.chem >> student.sb;
 
                cout << student.name << "\t" << student.year << "\t" << student.gnum << "\t" << student.mark.phys << "\t" << student.mark.math << "\t" << student.mark.inf << "\t" << student.mark.chem << "\t" << student.sb<<"\n";
            }
        }
 
 
        break;
 
    case 5:
        break;
    }
 
 
    _getch();
    return 0;
}

Автор: Oldshelf 22.11.2019, 19:16
Цитата

Ошибка C2360 пропуск инициализации "middle" из-за метки "case"


int middle нужно указать до switch:

Код

    int middle;
    switch (key) {
    case 1:
        cout << "\n\tВведите фамилия и инициалы: ";
        cin.get();
        getline(cin, student.name);
        cout << "\n\tВведите год рождения: ";
        cin >> student.year;
        cout << "\n\tВведите номер группы: ";
        cin >> student.gnum;
        cout << "\n\tОценка по физике: ";
        cin >> student.mark.phys;
        cout << "\n\tОценка по математике: ";
        cin >> student.mark.math;
        cout << "\n\tОценка по информатике: ";
        cin >> student.mark.inf;
        cout << "\n\tОценка по химии: ";
        cin >> student.mark.chem;
 
 
        middle = student.mark.phys + student.mark.math + student.mark.inf + student.mark.chem\4;
        cout << middle;

//...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)