Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 35

Цикл считает не то. Что не так в коде ?

17.06.2019, 21:45. Показов 1763. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал простенькую программу - имею небольшой массив данных masF[111][12], из которого я последовательно беру по 6 (шесть) строк.
Эти 6 строк заливаю в массив masA[6][12], который исследую.
Моя задача - выбрать все возможные массивы masA[6][12] так, чтобы они содержали не менее двух строк со второй позицией 2 (двойка),
и не менее двух строк с числом 20 (двадцать) на последней позиции.
То есть {1,2,3,4,5,10,11,13,14,15,16,17} строка верная (двойка на второй позиции), и {1,5,6,8,9,10,12,13,14,17,19,20} тоже верная (число 20 на последней позиции).
Такая строка {1,2,5,6,7,10,11,13,14,16,17,20} тоже верная.

В приведенном примере идет сравнение строк массива masA[6]12] с числами 2 и 20, и если отношения верные, то переменные c1 и с2 инкременируют.
Далее, если нужных строк (в masA[6][12]) две или более, то вывожу этот массив (номера строк) на печать.
Далее - обнуляю переменные c1 и c2, и иду на новый цикл.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
                    for (int i=0;i<6;i++) 
                    {if (masA[i][1] == 2)
                    c1++;
                        if (masA[i][11] == 20)
                        c2++;}
 
                    if (c1 >= 2 && c2 >= 2)
                        {
        outfile <<  i1 << "," << i2 << "," << i3 << "," << i4 << "," << i5 << "," << i6 << ", " << c1 << "-" << c2 << endl;
                        }
                        
                        c1=0;
                        c2=0;
Но программа считает почему-то не то...
Первый цикл считает правильно - (на картинке) 6-2 это значения c1 и c2.
Числа 0,1,2,3,4,5 - номера верного набора masA[6][12].
Второй цикл выпал, с третьего цикла пишет какую-то чушь. Число 14 (правая картинка) - максимум 6 может быть...
Что я делаю не так ? Видимо, не знаю какую понятную всем хитрость... Или залип на чем-то и не вижу ....
Вторые сутки не пойму.
Миниатюры
Цикл считает не то. Что не так в коде ?  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.06.2019, 21:45
Ответы с готовыми решениями:

Что в коде не так? Получился вечный цикл. Не могу найти где ошибка
var a = ; var i, j, k, d, right_element, left_element, last_elements; right_element = 0; for (i = 0; i &lt; a.length;...

Не считает. Что не так. В чем ошибка
Не считает. Что не так?

Почему не правильно считает что не так?
В данной программе я пытаюсь найти процентное отношение ассоциативного массива map&lt;string,int&gt;rezultat; rezultat=123421 из...

21
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
17.06.2019, 22:15
Littlesnake, что за i1, i2 и т. д.?
0
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
17.06.2019, 22:16
нет
0
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 35
17.06.2019, 22:29  [ТС]
Фигурные скобки у for есть, в них заключены оба if.
i1, i2 ... i6 - номера (в циклах) строк из заданного изначально masF (которые вливаются в masA),
именно эти строки (их номера) я вывожу на печать.
В строке outfile в конце имеется endl, просто забыл дописать.

Добавлено через 8 минут
Максимальное значение c1 и c2 - шесть.
Строк-то в массиве masA шесть, и числа в строках не повторяются.

Использую MS VS 2008 Express edition. Win7 64.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
17.06.2019, 22:34
Littlesnake, что то не информативный вывод у вас, попробуйте как то так (только это говнокод с магическими константами, не нужно так писать)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    int arr[111][12]; // нужна инициализация
    
    for (size_t row{}, size{ std::size(arr) - 6 }; row < size; ++row)
    {
        size_t c1{};
        size_t c2{};
        for (size_t sub_row{ row }, sub_size{ row + 6 }; sub_row < sub_size; ++sub_row)
        {
            if (arr[sub_row][1] == 2) ++c1;
            if (arr[sub_row][11] == 20) ++c2;
        }
        if (c1 >= 2 && c2 >= 2)
        {
            std::cout
                << "rows: " << row + 1 << " - " << row + 6 << std::endl
                << "c1 = " << c1 << std::endl
                << "c2 = " << c2 << std::endl;
        }
    }
0
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 35
17.06.2019, 22:51  [ТС]
Это выше моего понимания.
Вставленный код выдал кучу ошибок, и намек на то, что ВСЕ надо переписать.
А вот как бЭ изменить мой код (пусть с магическими штучками...) ?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
17.06.2019, 22:59
Цитата Сообщение от Littlesnake Посмотреть сообщение
Вставленный код выдал кучу ошибок
С++11 включите
Цитата Сообщение от Littlesnake Посмотреть сообщение
что ВСЕ надо переписать.
не надо, это по сути и есть весь код, только инициализацию массива arr скопируйте из вашего, и скомпилируйте отдельно

Добавлено через 1 минуту
Цитата Сообщение от Littlesnake Посмотреть сообщение
А вот как бЭ изменить мой код
по тому обрывку что вы показали, трудно судить

Добавлено через 1 минуту
вот нужные заголовки
C++
1
2
#include <iostream>
#include <iterator>
0
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 35
17.06.2019, 23:05  [ТС]
Буду пробовать
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
17.06.2019, 23:24
Littlesnake, пардон, обманул, std::size начиная с С++17 доступен
В общем тут на F8 потыкайте, может повезет
https://rextester.com/WPD5197
0
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 35
17.06.2019, 23:46  [ТС]
Это все выше моего понимания. Пишу програмки по мере их поступления.
Мне бы подшаманить мою писанину. Сам "С++11 включите" не осилю, да и ни к чему.

Нужно взять последовательно 6(шесть) строк, и проверить их на -
- на второй позиции стоит 2 (двойка),
- на последней 20 (двадцать).
Отобранные 6-строчные группы вывести на печать.
Может их будет 1000 штук...

А архив выглядит так -

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
int masF[111][12] = {{1,2,3,4,5,6,7,8,9,10,11,12}, //189 строк по 12 - массив данных
{1,2,3,4,5,6,7,13,14,15,16,17},{1,2,3,4,5,8,9,13,14,18,19,20},
{1,2,3,4,5,10,11,13,14,15,16,17},{1,2,3,4,6,7,8,13,14,15,18,19},
{1,2,3,4,6,9,10,13,14,16,17,20},{1,2,3,4,6,11,12,13,14,15,18,19},
{1,2,3,4,7,8,9,13,14,15,16,17},{1,2,3,4,7,10,11,13,14,18,19,20},
{1,2,3,4,8,9,10,13,14,15,16,17},{1,2,3,4,8,11,12,13,14,18,19,20},
{1,2,3,4,9,10,11,13,14,15,16,17},{1,2,3,5,6,7,8,13,14,15,16,18},
{1,2,3,5,6,9,10,13,14,17,19,20},{1,2,3,5,6,11,12,13,14,15,16,18},
{1,2,3,5,7,8,9,13,14,15,17,19},{1,2,3,5,7,10,11,13,14,16,18,20},
{1,2,3,5,8,9,10,13,14,15,17,19},{1,2,3,5,8,11,12,13,14,16,18,20},
{1,2,3,5,9,10,11,13,14,15,17,19},{1,2,3,6,7,8,9,13,14,15,16,18},
{1,2,3,6,7,10,11,13,14,17,19,20},{1,2,3,6,8,9,10,13,14,15,16,18},
{1,2,3,6,8,11,12,13,14,17,19,20},{1,2,3,6,9,10,11,13,14,15,16,18},
{1,2,3,7,8,9,10,13,14,17,19,20},{1,2,3,7,8,11,12,13,14,15,16,18},
{1,2,3,7,9,10,11,13,14,17,19,20},{1,2,3,8,9,10,12,13,14,15,16,18},
{1,2,4,5,6,7,8,13,14,15,16,17},{1,2,4,5,6,9,10,13,14,18,19,20},
{1,2,4,5,6,11,12,13,14,15,16,17},{1,2,4,5,7,8,9,13,14,15,18,19},
{1,2,4,5,7,10,11,13,14,16,17,20},{1,2,4,5,8,9,10,13,14,15,18,19},
{1,2,4,5,8,11,12,13,14,16,17,20},{1,2,4,5,9,10,11,13,14,15,18,19},
{1,2,4,6,7,8,9,13,14,15,16,17},{1,2,4,6,7,10,11,13,14,18,19,20},
{1,2,4,6,8,9,10,13,14,15,16,17},{1,2,4,6,8,11,12,13,14,18,19,20},
{1,2,4,6,9,10,11,13,14,15,16,17},{1,2,4,7,8,9,10,13,14,18,19,20},
{1,2,4,7,8,11,12,13,14,15,16,17},{1,2,4,7,9,10,11,13,14,18,19,20},
{1,2,4,8,9,10,12,13,14,15,16,17},{1,2,5,6,7,8,9,13,14,15,18,19},
{1,2,5,6,7,10,11,13,14,16,17,20},{1,2,5,6,8,9,10,13,14,15,18,19},
{1,2,5,6,8,11,12,13,14,16,17,20},{1,2,5,6,9,10,11,13,14,15,18,19},
{1,2,5,7,8,9,10,13,14,16,17,20},{1,2,5,7,8,11,12,13,14,15,18,19},
{1,2,5,7,9,10,11,13,14,16,17,20},{1,2,5,8,9,10,12,13,14,15,18,19},
{1,2,6,7,8,9,10,13,14,16,17,20},{1,2,6,7,8,11,12,13,14,15,18,19},
{1,2,6,7,9,10,11,13,14,16,17,20},{1,2,6,8,9,10,12,13,14,15,18,19},
{1,2,7,8,9,10,11,13,14,16,17,20},{1,3,4,5,6,7,8,13,14,15,16,17},
{1,3,4,5,6,9,10,13,14,18,19,20},{1,3,4,5,6,11,12,13,14,15,16,17},
{1,3,4,5,7,8,9,13,14,15,18,19},{1,3,4,5,7,10,11,13,14,16,17,20},
{1,3,4,5,8,9,10,13,14,15,18,19},{1,3,4,5,8,11,12,13,14,16,17,20},
{1,3,4,5,9,10,11,13,14,15,18,19},{1,3,4,6,7,8,9,13,14,15,16,17},
{1,3,4,6,7,10,11,13,14,18,19,20},{1,3,4,6,8,9,10,13,14,15,16,17},
{1,3,4,6,8,11,12,13,14,18,19,20},{1,3,4,6,9,10,11,13,14,15,16,17},
{1,3,4,7,8,9,10,13,14,18,19,20},{1,3,4,7,8,11,12,13,14,15,16,17},
{1,3,4,7,9,10,11,13,14,18,19,20},{1,3,4,8,9,10,12,13,14,15,16,17},
{1,3,5,6,7,8,9,13,14,15,18,19},{1,3,5,6,7,10,11,13,14,16,17,20},
{1,3,5,6,8,9,10,13,14,15,18,19},{1,3,5,6,8,11,12,13,14,16,17,20},
{1,3,5,6,9,10,11,13,14,15,18,19},{1,3,5,7,8,9,10,13,14,16,17,20},
{1,3,5,7,8,11,12,13,14,15,18,19},{1,3,5,7,9,10,11,13,14,16,17,20},
{1,3,5,8,9,10,12,13,14,15,18,19},{1,3,6,7,8,9,10,13,14,16,17,20},
{1,3,6,7,8,11,12,13,14,15,18,19},{1,3,6,7,9,10,11,13,14,16,17,20},
{1,3,6,8,9,10,12,13,14,15,18,19},{1,3,7,8,9,10,11,13,14,16,17,20},
{1,4,5,6,7,8,9,13,14,15,16,18},{1,4,5,6,7,10,11,13,14,17,19,20},
{1,4,5,6,8,9,10,13,14,15,16,18},{1,4,5,6,8,11,12,13,14,17,19,20},
{1,4,5,6,9,10,11,13,14,15,16,18},{1,4,5,7,8,9,10,13,14,17,19,20},
{1,4,5,7,8,11,12,13,14,15,16,18},{1,4,5,7,9,10,11,13,14,17,19,20},
{1,4,5,8,9,10,12,13,14,15,16,18},{1,4,6,7,8,9,10,13,14,17,19,20},
{1,4,6,7,8,11,12,13,14,15,16,18},{1,4,6,7,9,10,11,13,14,17,19,20},
{1,4,6,8,9,10,12,13,14,15,16,18},{1,4,7,8,9,10,11,13,14,17,19,20},
{1,5,6,7,8,9,10,13,14,15,16,18},{1,5,6,7,8,11,12,13,14,17,19,20},
{1,5,6,7,9,10,11,13,14,15,16,18},{1,5,6,8,9,10,12,13,14,17,19,20},
{1,5,7,8,9,10,11,13,14,15,16,18},{1,6,7,8,9,10,12,13,14,17,19,20}};
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
17.06.2019, 23:56
Цитата Сообщение от Littlesnake Посмотреть сообщение
А архив выглядит так

Цитата Сообщение от Littlesnake Посмотреть сообщение
Сам "С++11 включите" не осилю
Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)
если и так не осилите, то вот попробуйте
Кликните здесь для просмотра всего текста
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
#include <iostream>
 
int main()
{
    int arr[111][12] = { {1,2,3,4,5,6,7,8,9,10,11,12}, //189 строк по 12 - массив данных
    {1,2,3,4,5,6,7,13,14,15,16,17},{1,2,3,4,5,8,9,13,14,18,19,20},
    {1,2,3,4,5,10,11,13,14,15,16,17},{1,2,3,4,6,7,8,13,14,15,18,19},
    {1,2,3,4,6,9,10,13,14,16,17,20},{1,2,3,4,6,11,12,13,14,15,18,19},
    {1,2,3,4,7,8,9,13,14,15,16,17},{1,2,3,4,7,10,11,13,14,18,19,20},
    {1,2,3,4,8,9,10,13,14,15,16,17},{1,2,3,4,8,11,12,13,14,18,19,20},
    {1,2,3,4,9,10,11,13,14,15,16,17},{1,2,3,5,6,7,8,13,14,15,16,18},
    {1,2,3,5,6,9,10,13,14,17,19,20},{1,2,3,5,6,11,12,13,14,15,16,18},
    {1,2,3,5,7,8,9,13,14,15,17,19},{1,2,3,5,7,10,11,13,14,16,18,20},
    {1,2,3,5,8,9,10,13,14,15,17,19},{1,2,3,5,8,11,12,13,14,16,18,20},
    {1,2,3,5,9,10,11,13,14,15,17,19},{1,2,3,6,7,8,9,13,14,15,16,18},
    {1,2,3,6,7,10,11,13,14,17,19,20},{1,2,3,6,8,9,10,13,14,15,16,18},
    {1,2,3,6,8,11,12,13,14,17,19,20},{1,2,3,6,9,10,11,13,14,15,16,18},
    {1,2,3,7,8,9,10,13,14,17,19,20},{1,2,3,7,8,11,12,13,14,15,16,18},
    {1,2,3,7,9,10,11,13,14,17,19,20},{1,2,3,8,9,10,12,13,14,15,16,18},
    {1,2,4,5,6,7,8,13,14,15,16,17},{1,2,4,5,6,9,10,13,14,18,19,20},
    {1,2,4,5,6,11,12,13,14,15,16,17},{1,2,4,5,7,8,9,13,14,15,18,19},
    {1,2,4,5,7,10,11,13,14,16,17,20},{1,2,4,5,8,9,10,13,14,15,18,19},
    {1,2,4,5,8,11,12,13,14,16,17,20},{1,2,4,5,9,10,11,13,14,15,18,19},
    {1,2,4,6,7,8,9,13,14,15,16,17},{1,2,4,6,7,10,11,13,14,18,19,20},
    {1,2,4,6,8,9,10,13,14,15,16,17},{1,2,4,6,8,11,12,13,14,18,19,20},
    {1,2,4,6,9,10,11,13,14,15,16,17},{1,2,4,7,8,9,10,13,14,18,19,20},
    {1,2,4,7,8,11,12,13,14,15,16,17},{1,2,4,7,9,10,11,13,14,18,19,20},
    {1,2,4,8,9,10,12,13,14,15,16,17},{1,2,5,6,7,8,9,13,14,15,18,19},
    {1,2,5,6,7,10,11,13,14,16,17,20},{1,2,5,6,8,9,10,13,14,15,18,19},
    {1,2,5,6,8,11,12,13,14,16,17,20},{1,2,5,6,9,10,11,13,14,15,18,19},
    {1,2,5,7,8,9,10,13,14,16,17,20},{1,2,5,7,8,11,12,13,14,15,18,19},
    {1,2,5,7,9,10,11,13,14,16,17,20},{1,2,5,8,9,10,12,13,14,15,18,19},
    {1,2,6,7,8,9,10,13,14,16,17,20},{1,2,6,7,8,11,12,13,14,15,18,19},
    {1,2,6,7,9,10,11,13,14,16,17,20},{1,2,6,8,9,10,12,13,14,15,18,19},
    {1,2,7,8,9,10,11,13,14,16,17,20},{1,3,4,5,6,7,8,13,14,15,16,17},
    {1,3,4,5,6,9,10,13,14,18,19,20},{1,3,4,5,6,11,12,13,14,15,16,17},
    {1,3,4,5,7,8,9,13,14,15,18,19},{1,3,4,5,7,10,11,13,14,16,17,20},
    {1,3,4,5,8,9,10,13,14,15,18,19},{1,3,4,5,8,11,12,13,14,16,17,20},
    {1,3,4,5,9,10,11,13,14,15,18,19},{1,3,4,6,7,8,9,13,14,15,16,17},
    {1,3,4,6,7,10,11,13,14,18,19,20},{1,3,4,6,8,9,10,13,14,15,16,17},
    {1,3,4,6,8,11,12,13,14,18,19,20},{1,3,4,6,9,10,11,13,14,15,16,17},
    {1,3,4,7,8,9,10,13,14,18,19,20},{1,3,4,7,8,11,12,13,14,15,16,17},
    {1,3,4,7,9,10,11,13,14,18,19,20},{1,3,4,8,9,10,12,13,14,15,16,17},
    {1,3,5,6,7,8,9,13,14,15,18,19},{1,3,5,6,7,10,11,13,14,16,17,20},
    {1,3,5,6,8,9,10,13,14,15,18,19},{1,3,5,6,8,11,12,13,14,16,17,20},
    {1,3,5,6,9,10,11,13,14,15,18,19},{1,3,5,7,8,9,10,13,14,16,17,20},
    {1,3,5,7,8,11,12,13,14,15,18,19},{1,3,5,7,9,10,11,13,14,16,17,20},
    {1,3,5,8,9,10,12,13,14,15,18,19},{1,3,6,7,8,9,10,13,14,16,17,20},
    {1,3,6,7,8,11,12,13,14,15,18,19},{1,3,6,7,9,10,11,13,14,16,17,20},
    {1,3,6,8,9,10,12,13,14,15,18,19},{1,3,7,8,9,10,11,13,14,16,17,20},
    {1,4,5,6,7,8,9,13,14,15,16,18},{1,4,5,6,7,10,11,13,14,17,19,20},
    {1,4,5,6,8,9,10,13,14,15,16,18},{1,4,5,6,8,11,12,13,14,17,19,20},
    {1,4,5,6,9,10,11,13,14,15,16,18},{1,4,5,7,8,9,10,13,14,17,19,20},
    {1,4,5,7,8,11,12,13,14,15,16,18},{1,4,5,7,9,10,11,13,14,17,19,20},
    {1,4,5,8,9,10,12,13,14,15,16,18},{1,4,6,7,8,9,10,13,14,17,19,20},
    {1,4,6,7,8,11,12,13,14,15,16,18},{1,4,6,7,9,10,11,13,14,17,19,20},
    {1,4,6,8,9,10,12,13,14,15,16,18},{1,4,7,8,9,10,11,13,14,17,19,20},
    {1,5,6,7,8,9,10,13,14,15,16,18},{1,5,6,7,8,11,12,13,14,17,19,20},
    {1,5,6,7,9,10,11,13,14,15,16,18},{1,5,6,8,9,10,12,13,14,17,19,20},
    {1,5,7,8,9,10,11,13,14,15,16,18},{1,6,7,8,9,10,12,13,14,17,19,20} };
 
    
    for (size_t row = 0, size = 111 - 6; row < size; ++row)
    {
        size_t c1 = 0;
        size_t c2 = 0;
        for (size_t sub_row = row, sub_size = row + 6; sub_row < sub_size; ++sub_row)
        {
            if (arr[sub_row][1] == 2) ++c1;
            if (arr[sub_row][11] == 20) ++c2;
        }
        if (c1 >= 2 && c2 >= 2)
        {
            std::cout
                << "rows: " << row + 1 << " - " << row + 6 << std::endl
                << "c1 = " << c1 << std::endl
                << "c1 = " << c2 << std::endl;
        }
    }
}
0
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 35
18.06.2019, 00:21  [ТС]
Все это хорошо. Спасибо. Работает.
Но - 6 строк могут быть НЕ ПОДРЯД.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
18.06.2019, 00:24
Цитата Сообщение от Littlesnake Посмотреть сообщение
Но - 6 строк могут быть НЕ ПОДРЯД.
ну я так понял
Цитата Сообщение от Littlesnake Посмотреть сообщение
из которого я последовательно беру по 6 (шесть) строк.
вы точно уверены? а то многовато перестановок
0
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 35
18.06.2019, 00:40  [ТС]
Это на самом деле так.
Архив masF[189][12] на самом деле больше - 189 групп по 12 чисел.
И меня интетесуют в нем эти самые 10-строчные группы (группа по 10 строк, состоящая из 12 чисел). Группа эта выбирается самым обыкновенным образом - не подряд.
Поскольку групп по 10 может из 189 должно быть огромное число, чтото вроде 12579815754171666 штук, посчитать их на обычном ПК практически не возможно.
Посему я решил задачу разделить - взял ЧАСТЬ архива в 111 строк (в которых на первой позиции стоит 1 единичка), из которых взять надо группы по 6 (шесть) разным образом(не подряд), из которых должно быть ... ну и так далее.

Вот в чем суть.

А у меня считать не хочет...

Я хочу взять результата из просчета masA[111][12] , и применить его в дальнейшем расчете в masA[189][12].
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
18.06.2019, 00:48
Ну тогда вы выбрали не самый лучший способ
Наверное стоит сперва проанализировать исходный массив и сформировать массив int type[111], в котором элемент c с индексом i содержит значения 0, 1, 2, 3, определяющим тип i строки исходного массива (0 - не удовлетворяет ни одному условию, 1 - arr[i][1] == 2, 2 - arr[i][11] == 20, 3 - 1 && 2) А дальше просто генерируйте перестановки(или сочетания, смотря что нужно). Удачи
0
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 35
18.06.2019, 01:09  [ТС]
Это у вас все так просто.
А у меня в masA[111][12] надо просчитать 1340095640626 вариантов. Или меньше...
И взять из низ все группы по 6 строк, в которых...так далее.

А оно не считает.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
18.06.2019, 16:21
Лучший ответ Сообщение было отмечено Littlesnake как решение

Решение

Цитата Сообщение от Littlesnake Посмотреть сообщение
Это у вас все так просто.
Это на самом деле просто, сложнее это оптимизировать
Вот для небольшого массива(уникальные сочетания 15 по 6) с пониженным содержанием "правильных" строк
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
#include <iostream>
 
const size_t rows = 15; // количество строк исходного массива
const size_t sub_rows = 6; // количество строк исследуемого массива
 
bool generate_set(size_t(&sub_arr)[sub_rows])
{   // генератор уникальных сочетаний из rows по sub_rows
    size_t k = sub_rows;
    for (size_t i = k - 1; i >= 0; --i)
    {
        if (sub_arr[i] < rows - k + i + 1)
        {
            ++sub_arr[i];
            for (size_t j = i + 1; j < k; ++j)
                sub_arr[j] = sub_arr[j - 1] + 1;
            return true;
        }
        else if (!i) return false;
    }
    return false;
}
 
void check(size_t(&sub_arr)[sub_rows], int(&arr)[rows][12], size_t& recs)
{   // проверка и печать
    size_t c1 = 0;
    size_t c2 = 0;
    for (size_t i = 0; i < sub_rows; ++i)
    {
        size_t row = sub_arr[i] - 1;
        if (arr[row][1] == 2) ++c1;
        if (arr[row][11] == 20) ++c2;
    }
    if (c1 >= 2 && c2 >= 2)
    {
        --recs;
        std::cout << "rows: ";
        for (auto row : sub_arr) std::cout << row << ' ';
        std::cout << "\nc1 = " << c1 << std::endl
                  << "c2 = " << c2 << std::endl;
    }
}
 
int main()
{
    int arr[rows][12] = 
    {
        {1,3,3,4,5,6,7,8,9,10,11,12}, //15 строк по 12 - массив данных
        {1,2,3,4,5,6,7,13,14,15,16,17},{1,2,3,4,5,8,9,13,14,18,19,20},
        {1,3,3,4,5,10,11,13,14,15,16,17},{1,3,3,4,6,7,8,13,14,15,18,19},
        {1,2,3,4,6,9,10,13,14,16,17,19},{1,2,3,4,6,11,12,13,14,15,18,19},
        {1,2,3,4,7,8,9,13,14,15,16,17},{1,3,3,4,7,10,11,13,14,18,19,19},
        {1,3,3,4,8,9,10,13,14,15,16,17},{1,2,3,4,8,11,12,13,14,18,19,19},
        {1,3,3,4,9,10,11,13,14,15,16,17},{1,3,3,5,6,7,8,13,14,15,16,18},
        {1,3,3,5,6,9,10,13,14,17,19,20},{1,2,3,5,6,11,12,13,14,15,16,18},
    };
 
    const size_t lines = 20; // выводим по 20 записей до паузы
    size_t records_to_print = lines;
    
    size_t sub_arr[sub_rows] = { 1,2,3,4,5,6 }; // начальное сочетание строк
    check(sub_arr, arr, records_to_print);
 
    while (generate_set(sub_arr))
    {
        check(sub_arr, arr, records_to_print);
        if (!records_to_print)
        {
            records_to_print = lines;
            std::cout << "press enter to continue ";
            std::cin.get();
        }
    }
}
1
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 35
18.06.2019, 16:43  [ТС]
Этот код у меня не работает.
Сначала пишет - забыли добавить #include "stdafx.h" ,
добавил, пишет - (39) : error C2143: syntax error : missing ',' before ':'
(39) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Строка 39 -
if (c1 >= 2 && c2 >= 2)
{
--recs;
std::cout << "rows: ";
(39) for (auto row : sub_arr) std::cout << row << ' ';
std::cout << "\nc1 = " << c1 << std::endl
<< "c2 = " << c2 << std::endl;
}

Лютый треш...Где запятую добавить перед двоеточием - не вижу.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
18.06.2019, 16:51
забыл что у вас с++11 нет, проблема в auto.

Добавлено через 1 минуту
for (size_t row = 0; row < sub_rows; ++row) std::cout << sub_arr[row] << ' ';
1
1 / 1 / 0
Регистрация: 22.09.2014
Сообщений: 35
18.06.2019, 17:04  [ТС]
Вроде ПРАВИЛЬНО считает...
Теперь надо направить вывод результата в файл.

СПАСИБО !!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2019, 17:04
Помогаю со студенческими работами здесь

Считает элементы в строках а не столбцах. Что не так?
Определить двумерный массив A, заполнить его случайными целыми числами от -1000 до 1000. Размер массива задается с клавиатуры, но...

Что в коде ни так? while не работает так, как ожидаю
Написанный код, как я думаю, должен выдавать цифры от 0 до 1000, столбиком. Но выдает начиная от 702 до 1000. Что ни так понимаю, где...

Что не так тут? программа считает количество символов
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #define N 255 int main(void) { FILE *file; FILE *Newfile;

Транспортная задача. Программа немного криво считает, а что не так, не могу понять...
Программа немного криво считает, а что не так не могу понять ткните носом новичка) using System; using System.IO; ...

Что с оператором if else на jQuery? Что не так в коде?
В общем уже не первый раз сталкиваюсь с такой проблемой: мне необходимо задать определенные условия в скриптах, но как только начинаю...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru