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

Подбор блоков в списке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ очередь http://www.cyberforum.ru/cpp-beginners/thread643133.html
Что то никак не получается разобраться. Есть база данных клиентов банка. Создать очередь клиентов приоритет которых будет по количеству денег на счету. То есть я так понимаю что нужен двумерный массив в которых i будет идентификатором, а j состоянием счета. При добавлении нового клиента он сразу становится на свое место по состоянию счета. Но дальше как то не идет.
C++ Проблеми с glut.h Здраствуйте уважаемие форумчане. У меня возникла проблема при установке библиотек и модулей OpenGL а именно glut.h. У меня Dev-C++ 4.9.9.2 . Порядок установки : 1) Скопировал файл glut.h в папку include/GL 2) файл glut32.lib в папку lib 3) файл glut32.dll в папки system и system32 Вроде все правильно но при компиляции: #include <GL/glut.h> #include <conio.h> http://www.cyberforum.ru/cpp-beginners/thread643108.html
Сортировка простыми включениями C++
Есть массив, его нужно отсортировать простыми включениями(вставками). У меня получилась вот такая вот программа, но выдаёт не совсем корректную информацию, выдаёт в начале массива 0 и не все элементы выводит. #include <iostream> #include <ctime> #include <iomanip> using namespace std; int array; void insertionSort(int *, int); // прототип функции сортировки вставками int main(int...
C++ указатели и ссылки - головная боль!
Как вы уже догадались из названии темы, никак не пойму работу указателей и ссылок... Где нужно их инкриментировать, и как ссылаются на переменные (и т.д.). Уважаемые форумчане, объясните плиз подробней их функциональность и работоспособность... У меня головная боль!:wall:
C++ Работа с данными http://www.cyberforum.ru/cpp-beginners/thread643040.html
Помогите решить задачу: Напишите программу которая выдавала бы запрос на ввод кол-ва секунд в виде целого значения (используйте тип long), и затем отображала бы эквивалентное значение в сутках, часах, минутах и секундах. Для представления кол-ва часов в сутках, кол-ва минут в часе и кол-ва секундв минуте используйте символьлные константы. пример результата выполнения программы выглядит...
C++ Исследование управляемого движения искусственного спутника Земли здравствуйте, помогите пожалуйста написать программу, как видно из названия задача довольно не простая и я уже всю голову сломал как все это описывать! формулировка задачи содержится в файле по ссылке: http://narod.ru/disk/60042976001.b38c6b3f4581f2f65e2afe44a1b4362a/%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5.docx.html P.S. Если несложно, напишите программу в visual studio. подробнее

Показать сообщение отдельно
Glam_Man
6 / 6 / 0
Регистрация: 15.10.2011
Сообщений: 73
28.08.2012, 00:12  [ТС]     Подбор блоков в списке
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
#include <iostream>
#include <fstream>
#include <locale.h>
#include <stdio.h>
using namespace std;
struct Node
{
    int elem;       //элемент списка
    Node *next;     //указатель на следующий элемент списка
} *node;
int list_select(Node *node, int NumberOfElements, int node_counter)
{
    int minimum = 1;                                                //Единственный минимум
    int i = 0;
    while(i < node_counter)
    {
        if(NumberOfElements!=node->elem)                            //Если не подобран подходящий блок, сравниваем дальше
        {
            if(NumberOfElements<node->elem)
            {
                minimum = node->elem;                               //Присвоение минимума
            }
        }
        else
        {
            return node->elem;                                  //Блок успешно подобран, возвращаем размер текущего блока
        }
        i++;
    }
    if (minimum = 1)
    {
        return 0;                                                   //Подходящий блок не найден
    }
    return minimum;                                                 //Возвращаем размер минимального блока
}
int input_form_file(Node *&node,  int &node_counter)
{
    ifstream f;
    char filename[100];                                 //Память под имя файла
    int i = 0;                                          //Счётчик цикла
    int temp;                                           //Временная переменная для хранения размера блока в цикле
    Node *fir = 0;
    cout << "Введите номер теста" << endl;
    cin >> filename;
    f.clear();
    f.open(filename);
    if(!f)
    {
        return 0;
    }
    f >> node_counter;                                  //Количество блоков в списке
    while(i < node_counter)
    {
        f >> temp;                                      //Помещаем из файла во временную переменную текущий размер блока
        node = new Node;                                //Выделяем память для нового узла
        node -> elem = temp;                            //Присваиваем узлу с индексом
        node -> next = fir;                             //Следующий узел указывает на fir
        fir = node;                                     //Который является новым узлом
        i++;
    }
    f.close();
    return 1;
}
void menu()
{
    setlocale(LC_ALL,"russian");
    char c;
    int NumberOfElements;
    int node_counter;
    while(true)
    {
        system("cls");
        printf("Работа о списками\n\n");
        printf("1.Добавление списков из файла\n");
        printf("2.Подбор оптимального по размеру блока\n");
        printf("3.Выход из программы\n");
        fflush(stdin);
        scanf("%c", &c);
        switch(c)
        {
            case '1':
                if(input_form_file(node, node_counter))
                {
                    cout << "Файл введён" << endl;
                }
                else
                {
                    cout << "Некорректные данные в файле" << endl;
                }
                system("pause");                                        //На этом шаге вылезает ошибка
                break;
            case '2':
                cout << "Введите размер требуемого блока" << endl;
                cin >> NumberOfElements;
                if(list_select(node, NumberOfElements, node_counter))
                {
                    cout << "Блок подобран, его размер" << list_select(node, NumberOfElements, node_counter) << endl;
                }
                else
                {
                    cout << "Не удалось подобрать блок подходящего размера, ибо он превышает размер всех блоков" << endl;
                }
                system("pause");
                break;
            case '3':
                return;
                break;
        }
    }
}
int main()
{
    menu();
    return 0;
}
В node->elem остаётся последний элемент, сравнение в цикле происходит именно с ним, остальные недоступны
Ошибка больше не вылезает
 
Текущее время: 08:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru