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

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

Войти
Регистрация
Восстановить пароль
 
Mister X
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 27
#1

Найдите отрезок массива, в котором первое число равно последнему, второе - предпоследнему и так далее - C++

11.02.2016, 19:24. Просмотров 384. Ответов 4

Задание:
Задан числовой массив A(M). Найдите отрезок массива, в котором первое число равно последнему, второе - предпоследнему и так далее. Напечатайте длину максимального отрезка (отрезки могут пересекаться).
Формат входных данных. [M] [1-й элемент массива A] [2-й элемент массива A] и т.д. Элементы массива – целые числа в диапазоне ±1000. M - целое число в диапазоне [2, 20].
Формат выходных данных. [длина отрезка], если такого отрезка нет, то напечатать сообщение Нет такого отрезка.

Вот такой код, но не пойму как удаление делать и эту сортировку

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
#include "stdafx.h" 
#include <math.h> 
#include <conio.h> 
#include <iostream> 
 
using namespace std; 
 
int main() 
{ 
 
setlocale(LC_ALL, "Russian"); 
 
int mass[20];// массив 
int lenght; // Количество элементов в массиве 
int i; // индекс элемента который будем брать для сравнения с другими элементами массива 
int j; // индекс элемента с которым мы сравниваем взятый элемент 
int poss_delete; // позиция с которой будет сдвигаться влево массив на 1 
int L=0;//ДЛИНА 
 
// Ввести длину массива 
 
printf("Введите длину массива\n"); 
scanf("%d", &lenght); 
 
// Проверка введённой длины 
if (lenght<2 || lenght>20) 
{ 
printf("Длина массива за пределами (2;20)"); 
return 0; 
} 
 
// Ввести и проверить элементы массива 
printf("Введите элементы массива:\n"); 
for (int i = 0; i<lenght; i++) 
{ 
scanf("%d", &mass[i]); 
if (mass[i]<-1000 || mass[i]>1000) 
{ 
printf("Значение элементов массива за пределами (-1000;1000)\n"); 
return 0; 
} 
} 
 
 
// Удаление повторяющихся элементов массив 
 
for (i = 0; i<lenght; i++) /// ДЛЯ каждого элемента массива начиная c 0 берём элемент 
{ 
for (j = i - 1; j<lenght; j++)///ДЛЯ каждого взятого берём каждый элемент начиная со следующей позиции от взятого 
{ 
if (mass[i] == mass[j])// ЕСЛИ первоначально взятый элемент и элемент который мы берём для сравнения равны 
{ 
L=L+1;
// Записываем позицию в переменную и сдвигаем массив на эту позицию 
for (poss_delete = j; poss_delete < lenght; poss_delete++) 
{ 
mass[poss_delete] = mass[poss_delete - 1]; 
} 
lenght--; 
j--; // Уменьшаем идекс элемента с которым сравниваем , так при сдвиге массива не проверенный элемент становится на позицию проверенного 
// Уменьшаем идекс элемента с которым сравниваем , так при сдвиге массива не проверенный элемент становится на позицию проверенного 
} 
} 
} 
 
 
 
if(L == 0)
cout << "no solution";
else cout << L;
 
_getch(); 
 
return 0; 
 
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2016, 19:24     Найдите отрезок массива, в котором первое число равно последнему, второе - предпоследнему и так далее
Посмотрите здесь:

Найти сумму и число тех элементов массива, которые попадают на заданный отрезок C++
C++ Найти сумму и число тех элементов заданного массива, которые попадают на заданный отрезок
Найти отрезок массива-палиндром, в котором первое число равно последнему, второе предпоследнему и т.д. C++
C++ Найти сумму и число тех элементов заданного массива X1,X2, … ,Xn, которые попадают на заданный отрезок.
C++ В массиве найти отрезок максимальной длины, в котором первое число равно последнему, второе - предпоследнему и т.д. Напечатать характеристики этого от
C++ Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее?
C++ Есть диапазон целых чисел, в котором каждое число встречается дважды, кроме одного. Найдите его за линейное время.
Введенное число делить на второе введенное число пока первое число не станет равным нулю C++
C++ Цикл: Найти первое нечетное и второе четное избыточное число
C++ Определить, равно ли число (двумерного массива) нулю. Если равно, то вместо нуля записываем указанный символ
C++ Заменить первое число нулем, если оно меньше или равно второму
Как найти, сколько раз надо взять первое и второе число, чтобы получить третье C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6182 / 5785 / 1873
Регистрация: 18.12.2011
Сообщений: 14,781
Завершенные тесты: 1
11.02.2016, 21:23     Найдите отрезок массива, в котором первое число равно последнему, второе - предпоследнему и так далее #2
Mister X, Из каких соображений Вы считаете себя вправе использовать одновременно и printf и cout<< ?
Mister X
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 27
11.02.2016, 23:20  [ТС]     Найдите отрезок массива, в котором первое число равно последнему, второе - предпоследнему и так далее #3
Только начал изучать С++, вот поэтому нубас в этом

Добавлено через 3 минуты
Мб Вы сможете подсказать что доделать\переделать после проверки на возможность выполнение т.е как отсортировать массив и сравнение получившихся отрезков...
Байт
Эксперт C
15257 / 9659 / 1432
Регистрация: 24.12.2010
Сообщений: 17,989
11.02.2016, 23:59     Найдите отрезок массива, в котором первое число равно последнему, второе - предпоследнему и так далее #4
Цитата Сообщение от Mister X Посмотреть сообщение
если такого отрезка нет, то напечатать сообщение Нет такого отрезка.
Такой отрезок есть всегда. Любой, состоящий из одного элемента.

Добавлено через 2 минуты
Цитата Сообщение от zss Посмотреть сообщение
Вы считаете себя вправе
Полностью согласен с тем, что это не камильфо. Но выделенное слово считаю неуместным
zss
Модератор
Эксперт С++
6182 / 5785 / 1873
Регистрация: 18.12.2011
Сообщений: 14,781
Завершенные тесты: 1
12.02.2016, 19:42     Найдите отрезок массива, в котором первое число равно последнему, второе - предпоследнему и так далее #5
Цитата Сообщение от Байт Посмотреть сообщение
считаю неуместным
Я имел ввиду, что одновременное использование двух разнотипных потоков вывода на одно устройство может привести к непредсказуемому результату. Поэтому и считаю, что программист не вправе это делать.
Yandex
Объявления
12.02.2016, 19:42     Найдите отрезок массива, в котором первое число равно последнему, второе - предпоследнему и так далее
Ответ Создать тему
Опции темы

Текущее время: 20:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru