Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2017, 18:34   #1
Guardian
Новичок
Джуниор
 
Регистрация: 01.03.2015
Сообщений: 1
По умолчанию При изменении каких либо данных программа либо вылетает, либо просто не изменяет данные

Добрый вечер. Только недавно начал заниматься С++. И вот возникли проблемы. При изменении каких либо данных. Программа либо вылетает(Qt), либо просто не изменяет данные (CodeBlock). Прошу прощения, если не та тема.
Вот код:
Код:
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <fstream>
#include <Windows.h>
#include <cstring>

using namespace std;

struct Employer {
    char *name;
    char *surname ;
    double workedhours;
};



int InitStruct(Employer **&Employees) {
    char tmp[100];
    int count = 0;


    cout<<"\n Set array size: "; cin>> count;
    Employees = new struct Employer *[count];

    for (int i = 0; i < count; i++) {
        Employees[i] = new struct Employer;
        cout << "\nType name: ";cin >> tmp;
        Employees[i]->name = new char((strlen(tmp)) + 1);
        strcpy(Employees[i]->name, tmp);

        cout << "\nType surename: ";cin >> tmp;
        Employees[i]->surname = new char((strlen(tmp)) + 1);
        strcpy(Employees[i]->surname, tmp);

        cout << "\nType work time: ";cin >> Employees[i]->workedhours;
    }
    return count;
}
int readFromFile(Employer **&Employees, int var) {
    int count = 0;
    char buffer[100];

    ifstream fin("data2.txt");
    if (!(fin.is_open())){
        cout <<"not open\n";
        fin.close();
        return 0;
    }


    if(var == 0)
        fin >> count;

    if(var == 1){
        ifstream fin_count("data.txt");
        if(!(fin_count.is_open())){
            cout<<"not open\n";
            fin_count.close();
            return 0;
        }

        for(;!(fin_count.eof());){
            fin_count>>buffer;
            fin_count>>buffer;
            fin_count>>buffer;
            fin_count>>buffer;
            count++;
        }

        fin_count.close();
    }

    Employees = new Employer *[count];

    for(int i = 0; i< count; i++){
        Employees[i] = new struct Employer;
        fin>>buffer;
        Employees[i]->name = new char [(strlen(buffer))+1];
        strcpy(Employees[i]->name, buffer);

        fin>>buffer;
        Employees[i]->surname = new char [(strlen(buffer))+1];
        strcpy(Employees[i]->surname, buffer);

        fin>>Employees[i]->workedhours;

    }
    fin.close();
    return count;
}
void writeInFile(Employer **&Employees, int count){

    char fileName[50];

    cout<<"Type name file: ";cin>>fileName;

    ofstream fout(fileName);
    if(!(fout.is_open())) {
        cout<<"not open\n";
        fout.close();
    }

    for(int i = 0; i< count; i++) {
        fout<<Employees[i]->name;
        fout<<" ";
        fout<<Employees[i]->surname;
        fout<<" ";
        fout<<Employees[i]->workedhours;
        fout<<"\r\n";
    }
    fout.close();
}
void printStruct(Employer **&Employees, int count){

    for(int i = 0;i< count; i++) {
        cout << "                             \n";
        cout << "                             \n";
        cout << "-----------------------------\n";
        cout << "Mark: " << Employees[i]->name << "\n";
        cout << "Max resolution: " << Employees[i]->surname << " \n";
        cout << "Price: " << Employees[i]->workedhours << " р \n";
    }
}
void del(Employer **&Employees, int count) {
    for(int i = 0; i< count; i++) {
        delete (Employees[i]->name);
        delete (Employees[i]->surname);
        Employees[i]->workedhours = 0;
    }
    delete [] Employees;
}
void calculate(Employer **&Employees, int count){

    double sallary = 0;
    for(int i = 0; i < count; i++){
        Employer *e = Employees[i];
        cout<<"---------------------------------------------\n";
        cout<<"Sallary is: " << (e->workedhours) * 125 / count << " p \n";
        cout<<"Name is: " << e->name << "\n";
        cout<<"Surmame is: " << e->surname << "\n";
        cout<<"---------------------------------------------\n";
    }
}
void changeParameters(Employer **&Employees, int count) {
    int EmployyNumber;
    int c;
    char tmp[100];

    cout<<"Type monitor number : ";cin>>tmp;
    EmployyNumber = EmployyNumber - 1;

    cout<<"1. Change Name\n"
    <<"2. Change surname\n"
    <<"3. Change workedhours\n";

    cout<<"--------------------------------------\n"
        <<"Type command number: "; cin>>c;

        switch (c) {
            case 1: {
                    cout << "\nType name: ";cin >> tmp;
                    Employees[EmployyNumber]->name = new char((strlen(tmp)) + 1);
                    strcpy(Employees[EmployyNumber]->name, tmp);
                    break;
            };
            case 2: {
                    cout << "\nType surname: ";cin >> tmp;
                    Employees[EmployyNumber]->surname = new char((strlen(tmp)) + 1);
                    strcpy(Employees[EmployyNumber]->surname, tmp);
                    break;
            };
            case 3: {
                    cout << "\nType workedhours: ";cin >> Employees[EmployyNumber]->workedhours;
                    break;
            };
            default: cout<<"error";
        }

}




int main() {
    int c;
    int count = 0;
    SetConsoleCP(1251);
    struct Employer **Employees;

    do {
        cout<<"-------------------------------------\n"
        <<"\Monitor\n"
        <<"1. Init array\n"
        <<"2. Read from file\n"
        <<"3. Total salary\n"
        <<"4. Write in file\n"
        <<"5. Print on scree\n"
        <<"6. Change parameters\n"
        <<"7. Exit\n\n";

        cout<<"--------------------------------------\n"
        <<"Type command number: "; cin>>c;

        switch (c) {
            case 1: {
                if(count != 0) del(Employees, count);
                count = InitStruct(Employees);
                break;
            };
            case 2: {
                if(count != 0) del(Employees, count);
                count = readFromFile(Employees, 1);
            };
            case 3: {
                if(count != 0) calculate(Employees, count);
                else{cout<<"\nThe structure is not initialized\n";}
                break;
            };
            case 4: {
                if(count != 0) writeInFile(Employees, count);
                else{cout<<"\nThe structure is not initialized\n";}
                break;
            };
            case 5: {
                if(count != 0) printStruct(Employees, count);
                else{cout<<"\nThe structure is not initialized\n";}
                break;
            };
            case 6: {
               if(count != 0) changeParameters(Employees, count);
               else{cout<<"\nThe structure is not initialized\n";}
              break;
            };
            case 7: {
                if(count != 0) del(Employees, count);
                return 1;
            };
            default: cout<<"error";
        }


    } while(1);

    return 0;
}
Guardian вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разработать систему тестирования в любой области и тематике. Желательно либо C++, либо Delphi, либо VBA Olya125 Помощь студентам 2 27.04.2015 15:24
Напишите пожалуйста программу ( либо на си, либо на си++ либо на паскале) . Заранее спасибо. London1 Помощь студентам 1 03.04.2014 10:34
надо написать тест по литеретатуре либо в делфи либо в паскале demon-34 Помощь студентам 1 21.11.2010 22:39
Можно ли использовать новую форму только дря хранения какого-либо(каких-либо) класса? TwiX Общие вопросы Delphi 8 03.10.2009 11:06
Вычисление суммы при каких либо условиях. ЮклЯ Microsoft Office Excel 5 15.09.2009 10:16