Форум программистов, компьютерный форум CyberForum.ru

Ввод данных из файла - C++

Восстановить пароль Регистрация
 
Naginata
-65 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 60
24.05.2014, 20:37     Ввод данных из файла #1
Здравствуйте, не откажите пожалуйста в помощи, вот программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <locale>
#include "fstream"
using namespace std;
 
struct day // Структура для представления дня работы
{ day(int n, int m) : number(n), st(new bool[m]), next(NULL) { for (int i = 0; i < m; i++) st[i] = false; } // Конструктор
~day() { delete []st; } // Деструктор
int number; // Номер дня (у нас нет календаря, поэтому дни нумеруются числами)
bool *st; // Массив флажков занятости мастеров
day *next; // Указатель на следующий день
};
class salon
{public:
salon(int m, int w); // В конструкторе передаем количество мастеров обеих полов
~salon();
bool add_quest(int day_index, bool man, int man_index); // Добавить новую "бронь" для мастера
void show(); // Вывести таблицу графика работы
private:
day *find_day(int n); // Поиск определенного дня
void del(day *tmp); // Удаление списка дней
int _man; // Количество мужчин-мастеров
int _woman; // Количество женщин-мастеров
day *begin, *end; // Указатели на список дней
};
salon::salon(int m, int w) : _man(m), _woman(w), begin(NULL), end(NULL)
{
}
 salon::~salon()
{del(begin); // Запускаем удаление списка дней
}
bool salon::add_quest(int day_index, bool man, int man_index)
{if (man_index < 0 || (man && man_index >= _man) || (!man && man_index >= _woman)) return false; // Если указан плохой индекс
day *current;
if ((current = find_day(day_index)) != NULL) // Ищем в списке нужный день
{current->st[(man ? 0 : _man)+man_index] = true; // Устанавливаем занятость мастера
return true;
}
else // Если не найден нужный день
{day *tmp = new day(day_index, _man+_woman); // Создаем новый день с нужным индексом
if (!begin) begin = end = tmp; // Создаем новый список
else
{end->next = tmp; // Дописываем в конец списка
end = tmp;
}
tmp->st[(man ? 0 : _man)+man_index] = true; // Устанавливаем флажок занятости мастера
return true;
}
}
 void salon::show()
{if (!begin) return; // Если списка дней не существует, то выходим
cout << setw(6) << "  Days|     Occupation level" << endl; // Заголовок таблицы
day *tmp = begin;
int max_count = 0, max_day = 0;
while (tmp->next) // Проходим по списку
{int count_man = 0, count_woman = 0;
for (int i = 0; i < _man; i++) if (tmp->st[i]) count_man++; // Считаем занятость мастеров разного пола
for (int i = 0; i < _woman; i++) if (tmp->st[i+_man]) count_woman++;
if (max_count < count_man+count_woman) { max_day = tmp->number; max_count = count_man+count_woman; } // Ищем день с максимальной занятостью
cout << setw(6) << tmp->number << "|  male: " << count_man << "/" << _man << ", female: " << count_woman << "/" << _woman << endl; // Выводим на экран день
tmp = tmp->next; // Переходим к следующему элементу списка
}
int count_man = 0, count_woman = 0;
for (int i = 0; i < _man; i++) if (tmp->st[i]) count_man++;
for (int i = 0; i < _woman; i++) if (tmp->st[i+_man]) count_woman++;
if (max_count < count_man+count_woman) { max_day = tmp->number; max_count = count_man+count_woman; }
cout << setw(6) << tmp->number << "|  male: " << count_man << "/" << _man << ", female: " << count_woman << "/" << _woman << endl;
cout << "----------------" << endl << "Day with max occupation level:" << max_day << " (" << max_count << "/" << (_man+_woman) << ")" << endl; // Выводим день с максимальной занятостью
}
day *salon::find_day(int n)
{if (!begin) return NULL; // Если список пуст, возвращаем NULL
day *tmp = begin;
while (tmp->next) // Ищем день с нужным номером
{if (tmp->number == n) return tmp;
tmp = tmp->next;
}
if (tmp->number == n) return tmp;
else return NULL;
}
 void salon::del(day *tmp)
{if (tmp->next) del(tmp->next); // Вызываем удаление следующего элемента
delete tmp; // Удаляем сам элемент
}
int main()
{int man,woman,t,d,m,s; 
ifstream F;
F.open("D:\\Files\\Timetable.txt");
ifstream cin("D:\\Files\\Timetable.txt");
if(cin.is_open())
cin>>man>>woman>>t>>d>>m>>s;
cout << "Number of barbers:"; 
cout << "Number of hairdressers:"; 
salon *tmp = new salon(man, woman); // Выделяем память под салон, передаем кол-во мастеров
do // Цикл, имитирующий интерфейс
{system("cls");
while (!F.eof()) 
cout << "Choose the action:" << endl; 
cout << "1 - Work for barber/hairdresser" << endl;
cout << "2 - Show the table of occupation" << endl;
cout << "0 - Exit" << endl;
cout << ":";
system ("pause");
switch (t)
{case 1: // Добавление нового элемента
{cout << endl << "Day:"; 
cout << "Enter the sex of the barber/hairdresser (1 - man, 2 - women):"; 
cout << "Number of the barber/hairdresser (1 - " << (s == 1 ? man : woman) << "):"; 
if (!tmp->add_quest(d, (s == 1 ? true : false), m-1))
{cout << "Error" << endl;
system("pause");
}
} break;
case 2: // Вывод таблицы элементов
tmp->show();
system("pause");
}
}
while (t == 1 || t == 2);
delete tmp; // Удаление tmp
system("pause");
return 0;
}
Она работает, но теперь, я бы хотел организовать ввод данных из файла, проблема в том, что для удобства был создан простой интерфейс, а ввод данных из файла, не работает вместе с ним корректно, пожалуйста помогите разобраться, что и где менять в программе, чтобы, и интерфейс остался, и ввод проходил корректно.

Добавлено через 3 часа 30 минут
Это сообщение было добавлено дабы тема вернула себе статус "активна" и была замечена пользователями.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2014, 20:37     Ввод данных из файла
Посмотрите здесь:

C++ ввод данных, добавление данных, получение информации из файла по заданным критериям выборки
C++ ввод данных из файла.
C++ ввод данных из файла!=(
C++ Ввод данных в массив с файла с++
Ввод данных из файла в двумерный массив C++
Ввод данных в структуру из файла C++
Ввод/вывод данных в/из файла C++
Ввод данных в динамический массив из файла C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,586
24.05.2014, 22:23     Ввод данных из файла #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Добавь в меню третий пункт для ввода из файла и там уже открывай его.
Yandex
Объявления
24.05.2014, 22:23     Ввод данных из файла
Ответ Создать тему
Опции темы

Текущее время: 18:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru