1

Тема: Допоможіть,будь ласка,знайти помилку(Мова С++)

Надаю текст завдання та код.Створення файлу та запис данних працюють коректно.Вивід даних працює некоректно.Компілятор не показує жодних помилок.Допоможіть,будь ласка/
Заздалегідь дякую <3
-----------------------------------------------------------------------------------------------------------------------------------------------------
Hа основі запиту обчислити кількість пpацівників за кожним pозpядом pоботи в pозрізі гpуп непеpеpвного стажу: до 1 pоку, від 1 до 3 pоків та вищий. Знайдені показники вивести в такій фоpмі:

        Hепеpеpвний стаж     Кількість пpацівників за розрядами
Код підпpиємства    Код цеху    pоботи, pоків    1    2    3    4    5    6
        До 1                       
        Від 1 до 3                       
        Понад 3                       
Пеpедбачити дpукування значень стажу.
--------------------------------------------------------------------------------------------------------------------------------------------------------

#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;
struct Factory
{
    char kp[6];// Код підприємства
    char kc[3];// Код цеху
    char tab[5];// Табельний номеp пpацівника
    char PIB[30];// ПІБ
    char rn[5];// Рік народження
    char kn[3];// Код національності
    char ss[2];// Сімейний стан
    char srz[3];// Стаж pоботи загальний
    char srn[3];// Стаж pоботи непеpеpвний
    char kprof[5];// Код пpофесії
    char rozr[2];// Розряд
    char zp[6];// Заробітня плата
} v;
int mainOut()
{
    setlocale(LC_ALL, "Ukrainian");
    int Flag = 1;
    ofstream output("Factory.txt",ios::out | ios::binary | ios::app);
    if (!output)
    {
        cout << "Не вдалося вiдкрити файл"; 
        exit(1);
    }
        while(Flag==1)
        {
        cout << "Введiть данi" << endl;
        cout << "Введiть код пiдприємства(5): " << endl;
        cin >> v.kp;
        cout << "Введiть код цеху(2): " << endl;
        cin >> v.kc;
        cout << "Введiть табельний номеp пpацiвника(4): " << endl;
        cin >> v.tab;
        cout << "Введiть ПIБ(29): " << endl;
        cin >> v.PIB;
        cout << "Введiть рiк народження(4): " << endl;
        cin >> v.rn;
        cout << "Введiть код нацiональностi(2): " << endl;
        cin >> v.kn;
        cout << "Введiть сiмейний стан(2): " << endl;
        cin >> v.ss;
        cout << "Введiть стаж роботи загальний(2): " << endl;
        cin >> v.srz;
        cout << "Введiть стаж роботи неперервний(2): " << endl;
        cin >> v.srn;
        cout << "Введiть код професiї(4): " << endl;
        cin >> v.kprof;
        cout << "Введiть розряд(1): " << endl;
        cin >> v.rozr;
        cout << "Введiть заробiтню плату(5): " << endl;
        cin >> v.zp;
        output.write((char*)&v, sizeof(v));
        cout << endl << "Бажаєте продовжити(1{Так}/0{Нi})\n";
        cin >> Flag;
        cout << string(5, '\n');
        }
    output.close();
    return 0;
}
int mainRead() {
ofstream output("Factory.txt",ios::out | ios::in);
ifstream input("Factory.txt", ios_base::binary);
int kod,ceh,a1,a2,a3,roz1,roz2,roz3,roz4,roz5,roz6;
cout << "Введiть код пiдприємства та код цеху:\n";
cin >> kod;
cin >> ceh;
if (!output)
{
    cout << "Не вдалося вiдкрити файл"; 
    exit(1);
}
    else {
        do {
            input.read((char*)&v, sizeof(v));
            if (atoi(v.kc) == ceh && atoi(v.kp) == kod) {
                if (atoi(v.srn) < 1)
                a1++;
                if (atoi(v.srn) >= 1 && atoi(v.srn) <= 3)
                a2++;
                if (atoi(v.srn) > 3)
                a3++;
                if (atoi(v.rozr) == 1)
                roz1++;
                if (atoi(v.rozr) == 2)
                roz2++;
                if (atoi(v.rozr) == 3)
                roz3++;
                if (atoi(v.rozr) == 4)
                roz4++;
                if (atoi(v.rozr) == 5)
                roz5++;
                if (atoi(v.rozr) == 6)
                roz6++;
            }
        } while (!input.eof());
    cout << "____________________________________________________________________________________" << endl;
    cout << "|                |        |  Неперервний стаж  |Кiлькiсть працiвникiв за розрядами |" << endl;
    cout << "|Код пiдприємтсва|Код цеху|   роботи,рокiв     |  1  |  2  |  3  |  4  |  5  |  6  |" << endl;
    cout << "|________________|________|____________________|_____|_____|_____|_____|_____|_____|" << endl;
    cout << "|                |        |     До 1 року      |"<< roz1 << "|" << roz2 << "|" << roz3 << "|" << roz4 << "|" << roz5 << "|" << roz6 << "|" << a1 << endl;
    cout << "|                |        |____________________|_____|_____|_____|_____|_____|_____|" << endl;
    cout << "|"   << kod <<  "|"<< ceh <<"|     Вiд 1 до 3     |" << roz1 << "|" << roz2 << "|" << roz3 << "|" << roz4 << "|" << roz5 << "|" << roz6 << "|" << a2 << endl;
    cout << "|                |        |____________________|_____|_____|_____|_____|_____|_____|" << endl;;
    cout << "|                |        |    Понад 3 роки    |" << roz1 << "|" << roz2 << "|" << roz3 << "|" << roz4 << "|" << roz5 << "|" << roz6 << "|" << a3 <<endl;
    cout << "|________________|________|____________________|_____|_____|_____|_____|_____|_____|" << endl;
    cout << string(5, '\n');
    }
    input.close();
    return 0;
}
int main()
{
    setlocale(LC_ALL, "Ukrainian");
    int chose;
Begin:cout << "Оберiть режим: \n" << "0 - {Вихiд}\n1 - {Запис}\n2 - {Статистика}\n" << endl;
    cin >> chose;
    if (chose == 0)
    {
        exit(1);
    }
    if (chose == 1)
    {
        mainOut();
        goto Begin;
    }
    if (chose == 2)
    {
        mainRead();
        goto Begin;
    }
    else
    {
        goto Begin;
    }
}

2

Re: Допоможіть,будь ласка,знайти помилку(Мова С++)

огорніть ще код  в тег code

3

Re: Допоможіть,будь ласка,знайти помилку(Мова С++)

Шарфи вбивають (с) Ісідора Дункан

4

Re: Допоможіть,будь ласка,знайти помилку(Мова С++)

1. Модератори, перенесіть в C++.
2. Будь ласка, замість "некоректно" напишіть конкретно, чого ви очікуєте і що бачите. Ми не телепати.
3. Не використовуйте goto. У вас goto ідеально замінюється на while.

5

Re: Допоможіть,будь ласка,знайти помилку(Мова С++)

У виводі має бути таблиця з кількістю працівників за розрядом по кожній категорії,тобто:
_____________________________________________________________________________
|                          |              |  Неперервний стаж  |Кiлькiсть працiвникiв за розрядами         |
|Код пiдприємтсва|Код цеху|   роботи,рокiв           |  1       |  2     |  3      |  4   |  5     |  6     |
|______________|________|__________________|______|_____|_____|____|_____|_____|
|                          |              |     До 1 року             | roz1  | roz2  |roz3   |roz4  |roz5   | roz6 |
|                          |              |__________________|_____|_____|_____|_____|_____|_____|
| kod                    |ceh         |     Вiд 1 до 3             | roz1  | roz2  |roz3   |roz4  |roz5   | roz6 |
|                          |              |__________________|_____|_____|_____|_____|_____|_____|
|                          |              |    Понад 3 роки         | roz1  | roz2  |roz3   |roz4  |roz5   | roz6 |
|______________|________|__________________|_____|_____|_____|_____|_____|_____|

В кожній комірці кількість працівників відповідно до категорії
https://replace.org.ua/uploads/images/9811/9ce3d84348587ab084fa6dbf77ed3822.png

6

Re: Допоможіть,будь ласка,знайти помилку(Мова С++)

Ага. Класична задача. Вам дали 4 яблука. Ви віддали своєму другу 2 яблука. Скільки у вас тепер яблук?

підказка

Не 2