powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Найти в массиве самую длинную убывающую последовательность...
6 сообщений из 6, страница 1 из 1
Найти в массиве самую длинную убывающую последовательность...
    #39080617
fr0st1k123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Найти в массиве самую длинную убывающую последовательность , расположенную после максимального элемента
включительно.Вывести на экран номера ее первого и последнего элементов.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
int main()
{
    int a[5] = { 0,2,10,3,1 };
    int first = 0, last = 0;
    int max(a[0]);
 
    for (int i = 0; i < 5; i++)
        if (a[i] > max)
            max = a[i];
    for (int i=max; i < 5; i++)
        if (a[i] > a[i + 1])
        {
            i++;
            first = a[i + 1];
        }
        else
            last = a[i];
        
 
 
 
        cout << first << last;
        return 0;
    }


выводит 0-0 , где ошибка ?
...
Рейтинг: 0 / 0
Найти в массиве самую длинную убывающую последовательность...
    #39080626
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В первом цикле ты нашел максимальный элемент...
А тебе нужно было найти позицию максимального элемента а не его значение.
...
Рейтинг: 0 / 0
Найти в массиве самую длинную убывающую последовательность...
    #39080630
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fr0st1k123где ошибка ?
max присваиваешь значение, а потом внезапно используешь его как индекс.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Найти в массиве самую длинную убывающую последовательность...
    #39080763
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы думаете об одном, но на самом деле вам вполне вероятно нужно другое. Ниже решение того, о чём вы думаете. Поправьте ошибки если они там есть(это вполне возможно), и разберите разницу между серией и последовательностью в контексте программирования
Код: plaintext
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.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

class sequence
{
	int* buf;
	int* max;//the first maximum pointer
	size_t len;
public:
	sequence* longest_decreasing_run_after_max;//самая длинная возрастающая серия после максимального элемента
	sequence* longest_decreasing_sequence_after_max;//самая длинная возрастающая последовательность после макисмального элемента
	sequence();
	sequence(int* b, size_t l);
	void set_max();
	int* get_max();//dummy
	size_t get_len();//dummy
	void set_longest_decreasing_run_after_max();
	void print();
	void print_first_and_last();
};

sequence::sequence()
{
	buf = NULL;
	longest_decreasing_run_after_max = longest_decreasing_sequence_after_max = NULL;
	len = 0;
}

sequence::sequence(int* b, size_t l)
{
	if (l <= 0){
		return;
	}
	buf = (int*)malloc(sizeof(int)*len);
	for (int i = 0; i < l; ++i){
		buf[i] = b[i];
	}
	len = l;
	set_max();
	printf("%i\n", *max);
	set_longest_decreasing_run_after_max();
}

void sequence::set_max()
{
	max = buf;
	for (int i = 1; i < len; ++i){
		if(*(buf + i)>*max)  
			max = buf + i;
	}
}

void sequence::set_longest_decreasing_run_after_max()
{
#define main_el (longest_decreasing_run_after_max)
	main_el = (sequence*)malloc(sizeof(sequence)* 1);
	main_el->buf = max;
	main_el->len = 1;
	int* temp = max;
	size_t len_cur = 1;

	for (int* i = max + 1; i != buf + len; ++i){ //разберитесь корректно ли сравнение i != buf + len
		if (*i < *(i - 1)){
			len_cur++;
		}
		else{
			if (len_cur>main_el->len){
				main_el->buf = temp;
				main_el->len = len_cur;
			}
			temp = i;
			len_cur = 1;
		}
	}
	if (len_cur>main_el->len){ //постарайтесь избавиться от дублирования кода
		main_el->buf = temp;
		main_el->len = len_cur;
	}
	//и проверьте алгоритм
}

void sequence::print()
{
	printf("pinting sequence.\n");
	for (int i = 0; i < len; ++i){
		printf("%i ", buf[i]);
	}
	printf("\n");
}

void sequence::print_first_and_last()
{
	printf("printing first and last elements.\n");
	printf("firts value: %i\nlast value: %i\n", *buf, *(buf + len - 1));
}



int main()
{
	int a[] = { 1, 2, 10, 100, 1, 2, 3, 1, 5, 1, 6, 1, 2, 5, 7, 6, 5, 4, 3, 2, 1, 2, 5, 12, 8, 2, 5 };
	sequence s(a,sizeof(a)/sizeof(a[0]));
	s.print();
	s.longest_decreasing_run_after_max->print_first_and_last();
	return 0;
}



Код для longest_decreasing_sequence_after_max не представлен, так как это запрещено правилами Сообщества
...
Рейтинг: 0 / 0
Найти в массиве самую длинную убывающую последовательность...
    #39081018
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Найти в массиве самую длинную убывающую последовательность ,
расположенную после максимального элемента включительно.
Странное условие. Напрашивается либо убрать "самую длинную"
либо после "максимального элемента".
...
Рейтинг: 0 / 0
Найти в массиве самую длинную убывающую последовательность...
    #39081178
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНайти в массиве самую длинную убывающую последовательность ,
расположенную после максимального элемента включительно.
Странное условие. Напрашивается либо убрать "самую длинную"
либо после "максимального элемента".

Тут понятно. Вопрос в том, что он не понимает разницу между непрерывной последовательностью(серией) и последовательностью вообще.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Найти в массиве самую длинную убывающую последовательность...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]