Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 24.03.2018
Сообщений: 10
1

Как разделить ввод данных и вывод(в моем коде)?

26.03.2018, 16:43. Показов 953. Ответов 0
Метки нет (Все метки)

Сначала хочу что при выборе пункта меню=1 вводились данные, а при выборе 2 эти данные отображались.
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
struct Workers // объявление структуры с данными
{
    char name[12];
    char surname[12];
char Oname[12];
char position[12];
int year;
};
 
 
// прототипы функций
int Menu();
void Create(Workers *first)
void All_workers(Workers *first);
void add_workers(Workers *first);
void  stag_workers(Workers *first);
void del_workers(Workers *first);
 
int get_max_caption(Workers* M, int N){
    int maximum = strlen(M[0].name);
 
    int temp;
    for (int i=1; i<N; i++){
        temp = strlen(M[i].name);
        if (temp > maximum) maximum = temp;
    }
    return maximum;
}
 
int get_max_suname(Workers* M, int N){
    int maximum = strlen(M[0].surname);
 
    int temp;
    for (int i=1; i<N; i++){
        temp = strlen(M[i].surname);
        if (temp > maximum) maximum = temp;
    }
    return maximum;
}
 
int get_max_Oname(Workers* M, int N){
    int maximum = strlen(M[0].Oname);
 
    int temp;
    for (int i=1; i<N; i++){
        temp = strlen(M[i].Oname);
        if (temp > maximum) maximum = temp;
    }
    return maximum;
}
int get_max_pos(Workers* M, int N){
    int maximum = strlen(M[0].position);
 
    int temp;
    for (int i=1; i<N; i++){
        temp = strlen(M[i].position);
        if (temp > maximum) maximum = temp;
    }
    return maximum;
}
void ShowData(Workers *M, int N)
{
        cout << "\n\n";
        cout << "INFORMATION\n";
 
        struct ColumnWidth{     //Вспомогательная структура поможет обрабатывать промежуточные данные
            int name;
            int surname;
            int Oname;
            int position;
        } ColumnWidth;
        int temp;               //Переменная для хранения подходящей ширины
 
        /*ПОДСЧЁТ НУЖНОЙ ШИРИНЫ КОЛОНКАМ*/
        ColumnWidth.name = strlen("ИМЯ") + 1;
        temp = get_max_caption(M,N) + 1;
        if (ColumnWidth.name < temp) ColumnWidth.name = temp;
 
        ColumnWidth.surname = strlen("ФАМИЛИЯ") + 1;
        temp = get_max_suname(M,N) + 1;
        if (ColumnWidth.surname < temp) ColumnWidth.surname = temp;
 
        ColumnWidth.Oname = strlen("ОТЧЕСТВО") + 1;
        temp = get_max_Oname(M,N) + 1;
        if (ColumnWidth.Oname < temp) ColumnWidth.Oname = temp;
 
         ColumnWidth.position = strlen("ДОЛЖНОСТЬ") + 1;
        temp = get_max_pos(M,N) + 1;
        if (ColumnWidth.position < temp) ColumnWidth.position = temp;
        /*КОНЕЦ РАСЧЁТА*/
 
 
        /*ЯЧЕЙКИ-ЗАГОЛОВКИ*/
        cout << "ИМЯ" << setw(ColumnWidth.name - strlen("ИМЯ")) << '|';
 
 
        cout << setw(ColumnWidth.surname) << "ФАМИЛИЯ" <<  '|';
        cout << setw(ColumnWidth.Oname) << "ОТЧЕСТВО" <<  '|';
         cout << setw(ColumnWidth.position) << "ДОЛЖНОСТЬ" <<  '|';
        cout << setw(15) << "ГОД" <<  '|';
         /*КОНЕЦ ЯЧЕЕК-ЗАГОЛОВКОВ*/
        cout << '\n';
 
        /*ВЫВОДИМ МАССИВ СТРУКТУР ПОСТРОЧНО*/
        for (int i=0; i<N; i++){
            cout << M[i].name << setw(ColumnWidth.name - strlen(M[i].name) ) <<  '|';
 
             cout.width(10);
           // (cout << setprecision(2) << fixed << M[i].Cena  <<  '|').width(10);
           // (cout << setprecision(2) << fixed << M[i].count << '|').width(10);
 
             cout   << setw(ColumnWidth.surname) << M[i].surname   << '|';
             cout   << setw(ColumnWidth.Oname) << M[i].Oname  << '|';
             cout   << setw(ColumnWidth.position) << M[i].position  << '|';
 
             cout   << setw(15) << M[i].year  << '|';
 
            cout << '\n';
        }
        /*КОНЕЦ ПОСТРОЧНОГО ВЫВОДА*/
 
       cout << '\n';
 
}
/*ФУНКЦИЯ ЗАНОСИТ ДАННЫЕ В СТРУКТУРУ*/
void GetData(Workers *M,int N)
{
     for (int i=0;i<N;i++)
      {
        cout << "\n";
        cout << "ИМЯ: ";
        cin.getline(M[i].name,sizeof(M[i].name));
 
 
 
        cout << "ФАМИЛИЯ: ";
        cin.getline(M[i].surname,sizeof(M[i].surname));
 
        cout << "ОТЧЕСТВО: ";
        cin.getline(M[i].Oname,sizeof(M[i].Oname));
         cout << "ДОЛЖНОСТЬ: ";
        cin.getline(M[i].position,sizeof(M[i].position));
 
        cout << "ГОД ";
        cin >> M[i].year; cin.ignore();
      }
}
int main()
{
 setlocale(LC_ALL,"");
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
 
    system("CLS");
      int N;
Workers *first = new Workers;
int k;
    while ((k = Menu()) != 0)
    {
        switch (k)
        {
        case 1:Create(first); break;
        case 2: All_workers(first); break;
        //case 3:   del_workers(first); break;
        //case 4: stag_workers(first); break;
        //case 5: break;
                case 6: break;
        default: cout << "Введите число от 1 до 5: ";
        }
    }
getchar(); // пауза
    return 0;
}
 
int Menu()
{
    cout<<"\n";
    cout<<"1 - Создать список\n";
    cout<<"2 - Просмотреть список\n";
    cout<<"3 - Удалить работника(ов)\n";
    cout<<"4 - Вывести работника(ов) чей стаж больше введенного значения\n";
    cout<<"0 - Выход";
    cout<<"\n";
    cout<<"Введите нужный пункт: ";
 
    short k;
    cin>>k;
    cout<<endl;
    return k;
}
void Create(Workers *first)
{int N;
 
       cout << "Введите  N: ";
       (cin >> N).ignore();
 
      Workers *M = new Workers[N];
        GetData(M,N);               
}
void All_workers(Workers *first)
{
    int N;
 
    
      Workers *M = new Workers[N];
               
        ShowData(M,N);              //Вывод массива структур на экран
     delete []M;
 
 
    system("PAUSE");
 
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2018, 16:43
Ответы с готовыми решениями:

Ввод/вывод данных - найти ошибку в коде
делаю программу которая делает вычисления при нажатии на кнопки, windows forms, по информации из...

Как разделить вывод данных
Как я понял в VBA вывод производится на одну форму. Как вывести данные в несколько приемов или на...

Разделить код на процедуры: график, ввод, обсчет и вывод
Помогите разделить на процедуры, график, ввод, обсчет и вывод? uses crt,graph; function...

Как написать вывод\ввод данных в textbox
using System; namespace _123 { class Program { static int Minimum(int a,...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2018, 16:43

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как завершить ввод-вывод данных с COM-порта
WinForm - приложение. Модему через ком-порт посылаются AT - команды. Через DataReceived принимаются...

Как узнать где произошла ошибка в МОЁМ коде при возникновении
Всегда если появляется такая ошибка, то она указывает на строку в библиотеке (функции, в которой...

Как в моём коде можно реализовать сортировку и поиск по “степени риска”?
Пишу небольшую программку с ооп и наследованием. Есть базовый класс и от него наследуются пять...

ДНК - Как правильно организовать ввод и вывод данных
Для начала заметим,что поскольку по условию решение всегда существует,то количество букв каждого...

Сортировка пузырьком (как добавить ввод и вывод данных)
Подскажите пожалуйста, как сделать чтобы программа брала данные из ячейки &quot;A&quot; в ячейку &quot;B&quot; ? Sub...

Как сделать поиск значений больше 300000? Куда вставить в моем коде?
procedure TForm2.N4000001Click(Sender: TObject); var i,j,k:integer; S:string; begin...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.