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

Одномерные массивы. Не могу найти ошибку

06.10.2017, 01:25. Просмотров 125. Ответов 1
Метки нет (Все метки)

не могу найти ошибку! как и где используется счетчик s у второго цикла (не нужен?), если это сдвиг от начала массива, то что он внутри не используется. Вместо него используется i, но тогда i должен меняться до N-m, а не до m. Какой-то цикл лишний, в зависимости от того какой, определятся и изменения внутри циклов

Заранее спасибо!

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
#include <omp.h>
#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "russian_Russia.1251"); 
    int N, M;
    cout << "Введите N: ";
    cin >> N; 
    cout << "Введите M: ";
    cin >> M; 
 
    int *x = new int[N];
 
    int P;
    cout << "Введите количество потоков P: ";
    cin >> P; // вводим количество потоков
    
    srand((unsigned int)time(0)); 
    //cout << "Последовательность:" << endl;
    for (int i = 0; i < N; i++)
    {
        x[i] = rand() % 10; 
        //cout << x[i] << " ";
    }
    //cout << endl;
 
    double t1, t2;
    int k;
 
    // ---------- последовательный код ----------------------------
    t1 = omp_get_wtime(); // 
    k = 0; 
    
    for (int m = M+1; m <= N; m++) 
        for (int s = 0; s <= N-m; s++) 
            for (int i = 0; i < m; i++) 
            {
                int kv = 0; 
                int v = 0; 
                for (int j = i; j < m-1+i; j++) 
                {
                    int p = j % m; 
                    int q = (j+1) % m; 
                    if (v != -1 && x[p] > x[q])
                    {
                        kv++; 
                        v = -1; 
                    }
                    if (v != 1 && x[p] < x[q]) 
                    {
                        kv++; 
                        v = 1; 
                    }
                }
                if (kv == 2) 
                {
                    k++; 
                    break;
                }
            }
    t2 = omp_get_wtime(); 
    cout << "Число битонических последовательностей: " << k << endl;
    cout << "Время работы последовательного кода: "<< t2 - t1 << endl;
    cout << endl;
    // ------------------------------------------------------------
 
    // -------------- параллельный код ----------------------------
    t1 = omp_get_wtime(); 
    k = 0; 
    
    for (int m = M+1; m <= N; m++) 
#pragma omp parallel for num_threads(P) reduction(+:k)
 
        for (int s = 0; s <= N-m; s++) 
            for (int i = 0; i < m; i++) 
            {
                int kv = 0; 
                int v = 0; 
                for (int j = i; j < m-1+i; j++) 
                {
                    int p = j % m; 
                    int q = (j+1) % m; 
                    if (v != -1 && x[p] > x[q]) 
                    {
                        kv++; 
                        v = -1; 
                    }
                    if (v != 1 && x[p] < x[q]) 
                    {
                        kv++; 
                        v = 1; 
                    }
                }
                if (kv == 2) 
                {
                    k++; 
                    break;
                }
            }
    t2 = omp_get_wtime(); 
    cout << "Число битонических последовательностей: " << k << endl;
    cout << "Время работы параллельного кода: "<< t2 - t1 << endl;
    cout << endl;
    // ------------------------------------------------------------
 
    delete [] x; 
    system("pause");
    return 0;
}

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2017, 01:25
Ответы с готовыми решениями:

Не могу найти ошибку в коде, двумерные и одномерные массивы
# include &lt;iostream.h&gt; # include &lt;iomanip.h&gt; # include &lt;conio.h&gt; # include...

Не могу найти ошибку. Массивы.
Есть задание: Найти номер первого максимального значения среди элементов,...

Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку)
// Заданы матрицы X(8;4),Y(5;5),Z(6;9). // Для каждой из матриц определить...

Одномерные массивы: найти произведение ненулевых элементов
Дан массив C из 11 элементов. Из положительных элементов массива C сформировать...

Одномерные массивы. Найти минимальный из четных элементов.
Здр! Помогите пож-ста, дан массив целых чисел из 10 элементов. Найти...

1
redseven
56 / 15 / 26
Регистрация: 07.02.2015
Сообщений: 328
06.10.2017, 16:06 #2
чисто моё мнение,могу ошибаться но всё же.
По шаговая отладка показала, что цикл с s занимает просто строчку в коде,на него просто нет ссылок в отличии от тех же i,m.
Сдвиги как я понял(опять же по своему мнению) идут с 1-ого и 2-ых циклов.
k в коде почти всегда нулевое,лишь конечное условие может дать шанс что оно не будет 0.

А какое задание реализовывает этот код?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2017, 16:06

Одномерные массивы: найти сумму и сделать выборку по условию
Найти сумму и общее количество тех элементов массива X(n), абсолютная величина...

Одномерные массивы: Найти наименьшее из чисел а1, 2а2, 3а3,…, 8а8
Одномерные массивы Задача: Найти наименьшее из чисел а1, 2а2, 3а3,…, 8а8.

Одномерные массивы. Найти, сколько элементов массива A={a[i]} удовлетворяют условию с <= a[i] <= d
тип long: Найти, сколько элементов массива A={a} удовлетворяют условию с &lt;= a...


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

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

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