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

Задано n чисел. Найти все группы по k чисел. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ никак ни могу написать програму на С++ посмотрите пожалуйста как ее можно написать http://www.cyberforum.ru/cpp-beginners/thread593651.html
Проводятся несколько (не более 100) экспериментов, в ходе которых измеряется некоторый параметр, значения которого заносятся в двоичный файл в виде последовательности чисел, называемой экспериментальной серией. Все значения являются вещественными числами типа double. Структура файла имеет следующий вид: Количество экспериментов - целое типа long. Затем следует 100 заранее выделенных...
C++ Абстракция Мужики, объясните пожалуйста термин "Абстракция" в С++ на примере более понятно. а то в вики научно описано без примеров. http://www.cyberforum.ru/cpp-beginners/thread593649.html
C++ Перевод из Pascal в C++
Помогите перевести исходник из Pascal в C++. В Паскале я силен,а вот Си ток немного знаю, выручайте плз, в долгу не останусь! Исходник длинный, так как я писал Меню на Паскале) Uses crt, graph; label metka,metka1; const km=4;w=159;h=10;tca=10;tcp=15;bca=14;bcp=1;km1=6;PrD:real=1800;a=50; var c:char; k,i,i1,tc,bc:byte; xmn,ymn:array of integer; mas:array of pointtype; ...
C++ Почему не работают методы списка (односвязного), при вызове ф-ий? (Код прилагается)
Написал такой код, для односвязного списка. И когда начал компилировать, столкнулся с проблемой : не работают методы. Ошибка в том, что указатели на эл-ты не могут быть вычислены. Но я не понимаю почему. И как по хорошему исправить так, чтобы методы(ф-ии) работали? List.h #include <stdio.h> #include "point.h" #pragma once // 2-ой вариант сража включения, правда...
C++ BOrland c for dos Исправить ошибку! код есть! http://www.cyberforum.ru/cpp-beginners/thread593628.html
Прошу помощи!!!! Есть код.... Но проблема.....когда ввожу номер группы ( на разных студентов но один номер группы) то он выводит первого которого я ввел...а нужно чтобы выводил всех с заданной группой!!! Так же с фамилией .. код должен быть на Borland C for dos..... ПЛИЗ ИСПРАВТЕ ОШИБКУ!!! курсач надо завтра защищать...!!!! ПРОШУ!! ------------------------------------ #include <iostream.h>...
C++ Вместо вывода в stdout, сохранить числа в динамический массив Это алгоритм выборки элементов из двумерного массива. Нужно сохранить отобранные элементы в одномерный динамически создаваемый массив. void viewArray2DPath(int **pArr2D, const unsigned int cnRow, const unsigned int cnColumn) { unsigned int nRow = cnRow - 1; int nColumn = nRow - 1; bool bUp = true; while (true) { подробнее

Показать сообщение отдельно
qfisher
30 / 30 / 1
Регистрация: 24.05.2012
Сообщений: 156
06.06.2012, 00:41     Задано n чисел. Найти все группы по k чисел.
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
#include <iostream>
using namespace std;
 
void print_line()
{
    cout << endl << "*********************************" << endl << endl;
}
 
int main(int argc, char *argv[])
{
    int i,j,n,k,sum;
 
    // задаем количество элементов массива
    cout << "Количество натуральных чисел, n = ";
    cin >> n;
 
    int *input=new int[n];
 
    // вводим данные массива
    for (j=0; j<n; j++)
    {
        cout << j+1 << " число = ";
        cin >> input[j];
 
        // формируем массив по возрастанию между делом.)
        i = j;
        int temp;
        while (input[i]<input[i-1] && i>0)
        {
            temp = input[i-1];
            input[i-1] = input[i];
            input[i] = temp;
            i--;
        }
    }
 
    // количество элементов в группе
    cout << "Количество чисел группы, k = ";
    cin >> k;
    // искомая сумма группы
    cout << "Сумма группы, sum = ";
    cin >> sum;
 
    //  инициализация набора
    int *nabor = new int[k];
 
    for (i=0; i < k; i++)
    {
        nabor[i] = i;
    }
 
    print_line();
    cout << "Элементы:" << endl;
 
    bool is_changed;
    // далее нужно перебирать сочетания
    do
    {
        // находим сумму текущего набора
        int s=0;
        for (i=0; i<k; i++)
        {
            s += input[nabor[i]];
        }
 
        // если сумма совпадает то вывод элементов текущей группы
        if (s == sum)
        {
            cout << endl;
 
            for (i=0; i<k; i++)
            {
                cout << input[nabor[i]] << "\t";
            }
 
            cout << endl;
        }
 
        is_changed = false;
 
        // здесь формируется следующий набор
        for (j=k-1; j>=0; j--)
        {
            for (i=nabor[j]+1; i<n-k+j+1; i++)
            {
                if (input[nabor[j]] != input[i])
                {
                    nabor[j] = i;
                    is_changed = true;
 
                    for (int m = j+1; m < k; m++)
                    {
                        nabor[m] = nabor[m-1] + 1;
                    }
 
                    break;
                }
            }
 
            if (is_changed) break;
        }
    }
    while (is_changed);
 
    print_line();
 
    delete[] nabor;
    delete[] input;
 
    return 0;
}
 
Текущее время: 15:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru