Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dilleo
1 / 1 / 0
Регистрация: 01.05.2016
Сообщений: 13
#1

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

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

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

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

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

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

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

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

Дан целочисленный массив размером N. Преобразовать массив, увеличив длину каждой серии на один элемент - C++
#include "stdafx.h" #include <iostream> using namespace std; int main() { int n; int k=0; int p=0; int l=0; int...

6
Fixer_84
819 / 629 / 300
Регистрация: 30.04.2016
Сообщений: 1,979
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
819 / 629 / 300
Регистрация: 30.04.2016
Сообщений: 1,979
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
819 / 629 / 300
Регистрация: 30.04.2016
Сообщений: 1,979
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
Привет! Вот еще темы с ответами:

Преобразовать массив, если в нем есть хоть один отрицательный элемент - C++
Прошу помочь с решением. Даны целые массивы А, B и значения P и Q. Каждый массив пpеобpазовать по пpавилу: если в массиве есть хотя...

Заменить каждую серию, длина которой больше k, на один наименьший элемент массива - C++
3. Дан массив, состоящий из n элементов. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии – количество этих...

Заменить каждую серию массива, длина которой равна L, на один элемент с нулевым значением - C++
Здравствуйте.Дано целое число L (&gt; 0) и целочисленный массив размера N. Заменить каждую серию массива, длина которой равна L, на один...

Заменить каждую серию массива, длина которой равна L, на один элемент с нулевым значением - C++
нужно решение Дано целое число L (&gt;0) и целочисленный массив размера N. Заме- нить каждую серию массива, длина которой равна L, на...


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

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

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