1 / 1 / 2
Регистрация: 14.12.2014
Сообщений: 35
1

Нахождение максимального и минимального элемента в списке

28.06.2015, 15:27. Показов 1231. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
#include <iostream>
#include <conio.h>
#include <string.h>
#include <windows.h>
using namespace std;
void loadLib();
void saveLib();
char *filename = "f:/lib.dat";
struct info
{
    char fam[30];
    int pon;
    int vtor;
    int sred;
    int chet;
    int pyat;
    int obs;
    info *next;
    info * head, *tmp, *current;
};
info * head, *tmp, *current;
int nCount;
 
void showMenu()
{
    cout << "Выберете действие:" << endl;
    cout << "1. Ввести элементы списка\n2. Вывести список на экран\n3. Отстортиро-вать список по имени\n"
        "4. Отстортировать список по ОБЩ.кол.деталей\n5. Удалить сборщика\n6.Найти сборщика\n8. Выйти" << endl;
}
 
void initLib()
{
 
    FILE *fp;
    fp = fopen(filename, "r");
    if (fp == NULL)
    {
        nCount = 0;
        fp = fopen(filename, "w");
        if (fp == NULL)
        {
            cout << "Ошибка создания файла библиотеки. Программа будет закрыта!";
            _getch();
            exit(1);
        }
        fwrite(&nCount, sizeof(int), 1, fp);
    }
    else
        fread(&nCount, sizeof(nCount), 1, fp);
    fclose(fp);
}
 
void showLib()
{
    int i;
    info b;
    FILE *fp;
 
    cout << "\nСписок  в библиотеке\n";
    if (nCount == 0) cout << "В списке нет сборщиков";
    else
    {
        fp = fopen(filename, "r");
        if (fp == NULL)
            cout << "Ошибка чтения данных из файла";
        else
        {
            fseek(fp, sizeof(int), SEEK_SET);
            for (i = 0; i<nCount; i++)
            {
                fread(&b, sizeof(info), 1, fp);
                cout << i + 1 << ") \'" << b.fam << "\'ФАМ, " << b.pon << "-ПН," << b.vtor << "-ВТ, " << b.sred << "-СР," << b.chet << "-ЧТ," << b.pyat << "-ПТ," << b.obs << "-ОБЩ." << endl;
 
            }
            fclose(fp);
        }
    }
    cout << endl;
}
void addBook()
{
    FILE *fp;
    info b;
    char ch;
    fp = fopen(filename, "r+");
    if (fp == NULL)
        cout << "Ошибка чтения данных из файла";
    else
    {
        do
        {
            system("cls");
            cin.sync();
            cout << "Введите данные о книге." << endl;
            cout << "Автор: \t"; cin.getline(b.fam, 29);
            cout << "Сделано деталей в: \n";
            cout << "Понедельник: \t"; cin >> b.pon;
            cout << "Вторник: \t"; cin >> b.vtor;
            cout << "Среду: \t"; cin >> b.sred;
            cout << "Четверг: \t"; cin >> b.chet;
            cout << "Пятницу: \t"; cin >> b.pyat;
            cout << "Пятницу: \t"; b.obs = (b.pon + b.vtor + b.sred + b.chet + b.pyat);
            nCount++;
            fseek(fp, 0, SEEK_END);
            fwrite(&b, sizeof(info), 1, fp);
            fseek(fp, 0, SEEK_SET);
            fwrite(&nCount, sizeof(int), 1, fp);
            cout << "\nВвести данные о еще одной книге (д/н)?";
            ch = _getche();
        } while (ch == 'Д' || ch == 'д');
        fclose(fp);
    }
    cout << endl;
}
void findBook(int findField)
{
    info b;
    FILE *fp;
    bool bFind = false;
    int i;
    char  strAuthor[30];
    cout << "\nСписок книг в библиотеке\n";
    if (nCount == 0) cout << "В списке нет книг";
    else
    {
        cin.sync();
        if (findField == 2)
        {
            cout << "Введите имя автора книги для поиска" << endl;
            cin.getline(strAuthor, 29);
        }
        fp = fopen(filename, "r");
        if (fp == NULL)
            cout << "Ошибка чтения данных из файла";
        else
        {
            fseek(fp, sizeof(int), SEEK_SET);
 
            for (i = 0; i<nCount; i++)
            {
                fread(&b, sizeof(info), 1, fp);
 
                if (findField == 2 && !strcmp(b.fam, strAuthor))
                {
                    if (!bFind)
                    {
                        bFind = true;
                        cout << "\nСписок найденных книг\n";
                    }
                    cout << i + 1 << ") \'" << b.fam << "\'ФАМ, " << b.pon << "-ПН," << b.vtor << "-ВТ, " << b.sred << "-СР," << b.chet << "-ЧТ," << b.pyat << "-ПТ," << b.obs << "-ОБЩ." << endl;
                }
            }
            fclose(fp);
 
            if (!bFind)
                cout << "Не найдено книг с заданными характеристиками" << endl;
 
        }
    }
    cout << endl;
 
}
 
void sortLib(int sortField)
{
    info * start, *tek;
    loadLib();
    start = head;
    while (start->next)
    {
        tek = start->next;
        info *k = head, *predk = k;
        if (sortField == 1)
            while (k != tek && strcmp(k->fam, tek->fam)<0)
            {
                predk = k;
                k = k->next;
            }
        else
            while (k != tek && k->obs<tek->obs)
            {
                predk = k;
                k = k->next;
            }
        if (k != tek)
        {
            start->next = tek->next;
            tek->next = k;
            if (k == head) head = tek;
            else predk->next = tek;
        }
        start = tek;
    }
    saveLib();
}
 
void clearLib()
{
    current = head;
    while (current)
    {
        tmp = current->next;
        delete current;
        current = tmp;
    }
    head = NULL;
    nCount = 0;
}
 
 
 
void saveLib()
{
    FILE *fp;
    fp = fopen(filename, "w+");
    if (fp != NULL)
    {
        tmp = head;
        fwrite(&nCount, sizeof(int), 1, fp);
        while (tmp)
        {
            fwrite(tmp, sizeof(info), 1, fp);
            tmp = tmp->next;
        }
        fclose(fp);
    }
    else
        cout << "Ошибка открытия файла" << endl;
}
void loadLib()
{
    FILE *fp;
    int i;
    fp = fopen(filename, "r");
    if (fp != NULL)
    {
        clearLib();
        fread(&nCount, sizeof(int), 1, fp);
        i = nCount;
        while (i != 0)
        {
            if (head != NULL)
            {
                current->next = new info;
                current = current->next;
            }
            else
            {
                head = new info;
                current = head;
            }
            if (current)
            {
                fread(current, sizeof(info), 1, fp);
                current->next = NULL;
            }
            i--;
 
        }
    }
    else
        cout << "Ошибка открытия файла с данными" << endl;
}
void delBook()
{
    bool bFind = false;
    int i, nNewCount = 0;
    info b;
    FILE *fp, *tmp;
    char strTitle[30];
    cout << "Введите название удаляемого сборщика" << endl;
    cin.sync();
    cin.getline(strTitle, 29);
    fp = fopen(filename, "r+");
    tmp = fopen("tmp.dat", "w+");
    fwrite(&nNewCount, sizeof(int), 1, tmp);
    if (fp == NULL)
        cout << "Ошибка чтения данных из файла";
    else
    {
        fseek(fp, sizeof(int), SEEK_SET);
        for (i = 0; i<nCount; i++)
        {
            fread(&b, sizeof(info), 1, fp);
            if (strcmp(b.fam, strTitle) != 0)
 
            {
                fwrite(&b, sizeof(info), 1, tmp);
                nNewCount++;
            }
        }
        if (nNewCount<nCount)
        {
            cout << "Книга(и) удалена\n" << endl;
            nCount = nNewCount;
 
        }
        else cout << "Книги с таким названием нет в списке\n" << endl;
        fseek(tmp, 0, SEEK_SET);
        fwrite(&nCount, sizeof(int), 1, tmp);
        fclose(fp);
        fclose(tmp);
        remove(filename);
        rename("tmp.dat", filename);
    }
}
int main(){
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "Russian");
    info* OurGoods = 0;
    int goodAmount = 0;
    char ch = '0';
    initLib();
    showMenu();
    ch = _getch();
    while (ch != '8')
    {
 
        switch (ch)
        {
        case '1': addBook(); break;
        case '2': showLib(); break;
        case '3': sortLib(1); break;
        case '4': sortLib(2); break;
        case '5': delBook(); break;
        case '6': findBook(2); break;
        case '7': find(); break;
        case '9': findM(); break;
        default: cout << "Неверный ввод!!!" << endl;
        }
        cout << "Нажмите любую клавишу...";
        _getch();
        system("cls");
        showMenu();
        ch = _getch();
    }
    return 0;
}
А)Создать файл, содержащий сведения о количестве изделий, собранных сборщиками цеха за неделю. Каждая запись содержит поля: фамилия сборщика, количество изделий, собранных им ежедневно в течение 5-ти дней (т.е. понедельник, вторник и т.д.). Количество записей - произвольное. Написать программу, которая выдает следующую информацию: фамилию заданного сборщика и общее количество деталей, собранное им за неделю;
Б)фамилию сборщика, собравшего наибольшее число деталей в неделю и день, когда он достиг наивысшей производительности труда; фамилию сборщика, собравшего наименьшее количество деталей в неделю; фамилию сборщика, установившего абсолютный рекорд - наибольшее кол-во деталей в день.


Часть А я сделал ,а часть Б я не понимаю как сделать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2015, 15:27
Ответы с готовыми решениями:

Матрицы,нахождение максимального и минимального элемента
Здравствуйте!Помогите пожалуйста с программой,по условию нужно найти максимальный и минимальный...

Нахождение максимального элемента матрицы, минимального, суммы, произведения
пожалуйста помогите написать программу обработки двухмерных массивов (нахождение максимального...

Матрицы в с++.Наведите пожалуйста элементарные примеры с ними (сложение,умножение,нахождение минимального/максимального элемента)
Просто очень интересно узнать , как можно работать с матрицами в с++.Если можете,наведите...

Нахождение минимального и максимального элемента в списке
4. Дано const MaxN = 30; type ВещТип = record знак : boolean; ...

1
71 / 71 / 58
Регистрация: 12.12.2013
Сообщений: 420
28.06.2015, 19:21 2
Цитата Сообщение от Newermore999 Посмотреть сообщение
количество изделий, собранных им ежедневно в течение 5-ти дней
Советую создать еще одну структуру, в которой будут хранится только кол-во деталей по дням в неделю.

Что у вас не получается в части Б? Попробуйте использовать самый простой метод поиска - перебор со сравнением. Если сумма собранных деталей n-ого трудящегося меньше n+1, то далее мы будем сравнивать последнего найденного со следующим.
0
28.06.2015, 19:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2015, 19:21
Помогаю со студенческими работами здесь

Нахождение максимального элемента в списке
Собственно нид фаст помощь ) Список вводим с клавиатуры ( может содержать отрицательные числа )...

Нахождение максимального элемента в списке
Есть список TListBox. В него добавляются числа (вводятся в edit1 и нажимается кнопка добавить). При...

Нахождение минимального по значению элемента в списке
(Разработать WPF-приложение, используя &quot;резиновый дизайн&quot;) Предусмотреть: -формирование списка...

Нахождение максимального и минимального элемента массива
Задан массив A из элементов типа short integer (целое 8-ми разрядное со знаком). Составить...

Нахождение максимального и минимального элемента массива
Нахождение максимального и минимального элемента массива. Найдите максимальный и минимальный...

Нахождение минимального и максимального элемента массива
помогите найти ошибку пожалуйста!!!почему не все считает правильно? import java.util.Arrays;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru