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

Преобразовать массив, увеличив его первую серию наибольшей длины на один элемент

03.05.2016, 15:45. Просмотров 266. Ответов 6
Метки нет (Все метки)

Ребятки, кому не сложно выручите с задачкой)
Дан целочисленный массив размера N. Преобразовать массив, увеличив его первую серию наибольшей длины на один элемент (Назовем серией группу подряд идущих одинаковых элементов, длина серии может равняться 1).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2016, 15:45
Ответы с готовыми решениями:

Преобразовать массив, увеличив первую серию наибольшей длины на один элемент
Дан массив, состоящий из n элементов. Назовем серией группу подряд идущих...

Преобразовать массив, увеличив последнюю серию наибольшей длины на один элемент
Дан целочисленный массив размера N. Назовем серией группу подряд идущих...

Преобразовать массив, увеличив первую/последнюю/все серии наибольшей длины на один элемент
Вот задача Дан целочисленный массив размера N. Преобразовать массив,...

Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую его серию на один элемент
Помогите преобразовать код из языка С# в С++. Занимался разбором задачи на...

Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую его серию на один элемент
1. Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую...

6
Fixer_84
1039 / 654 / 648
Регистрация: 30.04.2016
Сообщений: 2,211
03.05.2016, 18:53 #2
Dilleo, что значит увеличить на один элемент? Имеется ввиду на единицу? Ниже код программы. Я увеличил первую искомую серию на единицу. Вы можете увеличивать на любой другой элемент. Или нужен элемент из исходного массива?

Добавлено через 18 минут
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
int N, x, l, num, max, a, b;
cout << "Введите размерность массива:" << endl;
cout << "N = ";
cin >> N;
int A[N];
cout << "Введите массив из чисел:" << endl;
for (int i = 0; i < N; i++)
{
cin >> A[i];
}
x = l = max = 0;
for (int i = l; i < N; i++)
{
if (A[i+1] == A[i])
{
x++;
}
else 
{
l = x;
l++;
if (l > max) 
{
max = l;
num = i;
}
x = 0;
}
}
num++;
a = abs(max - num);
b = a + max;
for (int i = a; i < b; i++)
{
A[i]++;
}
cout << "Искомый массив:" << endl;
for (int i = 0; i < N; i++)
{
cout << A[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
0
Dilleo
1 / 1 / 0
Регистрация: 01.05.2016
Сообщений: 13
03.05.2016, 18:58  [ТС] #3
Fixer 84, тут имеется в виду что надо увеличить на значение элемента образующую первую серию.
Например дан массив А[5]: 12234, в результате должно быть B[6]: 122234.
0
Fixer_84
1039 / 654 / 648
Регистрация: 30.04.2016
Сообщений: 2,211
03.05.2016, 19:26 #4
Dilleo, небольшой промах. Начальное значение max = 0 заменить на max = INT_MIN и подключить библиотеку climits (#include <climits>) или программа будет работать только для положительных чисел.

Добавлено через 1 минуту
Dilleo, хорошо, сейчас переделаю.

Добавлено через 18 минут
Dilleo, вот код. Я не завожу второй массив B. Просто модифицирую A. Смотрите код ниже.

Добавлено через 1 минуту
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
#include <iostream>
#include <cmath>
#include <climits>
 
using namespace std;
 
int main()
{
int N, x, l, num, max, b, elem;
cout << "Введите размерность массива:" << endl;
cout << "N = ";
cin >> N;
int A[N];
cout << "Введите массив из чисел:" << endl;
for (int i = 0; i < N; i++)
{
cin >> A[i];
}
x = l = 0;
max = INT_MIN;
for (int i = l; i < N; i++)
{
if (A[i+1] == A[i])
{
x++;
}
else 
{
l = x;
l++;
if (l > max) 
{
max = l;
num = i;
}
x = 0;
}
}
elem = A[num];
num++;
b = abs(max - num) + max;
b--;
for (int i = N; i >= b; i--) 
{
A[i] = A[i-1];
}
A[b] = elem;
cout << "Искомый массив:" << endl;
for (int i = 0; i < N + 1; i++) 
{
cout << A[i] << " ";
}
system("pause");
return 0;
}
0
Dilleo
1 / 1 / 0
Регистрация: 01.05.2016
Сообщений: 13
03.05.2016, 19:26  [ТС] #5
Хорошо, спасибо большое)
0
Fixer_84
1039 / 654 / 648
Регистрация: 30.04.2016
Сообщений: 2,211
03.05.2016, 20:25 #6
Dilleo, вот еще один вариант программы. Она, вроде, выглядит попроще.

Добавлено через 2 минуты
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
#include <iostream>
#include <cmath>
#include <climits>
 
using namespace std;
 
int main()
{
int N, x, max, num, b, elem;
cout << "Введите размерность массива:" << endl;
cout << "N = ";
cin >> N;
int A[N];
cout << "Введите массив из чисел:" << endl;
for (int i = 0; i < N; i++)
{
cin >> A[i];
}
x = 0;
max = INT_MIN;
for (int i = 0; i < N - 1; i++)
{
if (A[i+1] == A[i])
x++;
else x = 0;
if (x > max) 
{
max = x;
num = i;
}
}
elem = A[num];
b = ++num;
for (int i = N; i >= b; i--) 
{
A[i] = A[i-1];
}
A[b] = elem;
cout << "Искомый массив:" << endl;
for (int i = 0; i < N + 1; i++) 
{
cout << A[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
0
Dilleo
1 / 1 / 0
Регистрация: 01.05.2016
Сообщений: 13
29.05.2016, 12:05  [ТС] #7
Fixer_84, помогите пожалуйста с задачей, прям выручите, если есть время конечно) Условие такое: Дан двумерный массив размером nxn. Сформировать одномерный массив из элементов заданного массива, расположенных над главной диагональю.(нужно использовать файлы, динамические указатели) заранее спасибо!
0
29.05.2016, 12:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2016, 12:05

Преобразовать массив, уменьшив каждую его серию на один элемент.
Дан целочисленный массив размера N, содержащий по крайней мере одну серию,...

Дан целочисленный массив размером N. Преобразовать массив, увеличив длину каждой серии на один элемент
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main() {...

Увеличить все серии массива наибольшей длины на один элемент
Дан целочисленный массив размера N. Преобразовать массив, увеличив все его...


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

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

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