Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2017, 16:31   #1
Anonim123321
 
Регистрация: 10.12.2017
Сообщений: 4
По умолчанию При однократном просмотре целочисленного массива X найти два максимальных числа Xmax1 и Xmax2 соответственно среди четных и нечетных по значению элементов массива

1)При однократном просмотре целочисленного массива X найти два максимальных числа Xmax1 и Xmax2 соответственно среди четных и нечетных по значению элементов массива,
2) после чего переставить в обратном порядке элементы подмассива, расположенного между
этими числами, включая элементы Xmax1 и Xmax2.
3) Все четные числа в целочисленном массиве X=(x1,x2,...,xn) переставить в обратном порядке, не изменяя положение остальных чисел
код к 1 заданию
Код:
#include "stdafx.h"
#include <iostream>
#include <array>
#include <iterator>
#include <algorithm>
#include <ctime>
using namespace std;

int main()
{
	const size_t size = 10;
	array<int, size> array;
	srand(time(NULL));
	generate(array.begin(), array.end(), []()
	{
		return rand() % 20;
	});
	copy(array.begin(), array.end(), ostream_iterator<int>(cout, " "));
	cout << endl;
	sort(array.rbegin(), array.rend());
	cout <<"1 Max = "<< array[0] << ", 2 Max = " << array[1] << endl;
	system("pause");
	return 0;
}
Anonim123321 вне форума Ответить с цитированием
Старый 10.12.2017, 18:18   #2
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

А зачем сортируешь? В задании об этом ни слова.
Мановар вне форума Ответить с цитированием
Старый 10.12.2017, 21:53   #3
Anonim123321
 
Регистрация: 10.12.2017
Сообщений: 4
По умолчанию

Я так нашел 1 и 2 Максимальный элемент
Anonim123321 вне форума Ответить с цитированием
Старый 10.12.2017, 22:04   #4
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

Так ты изменяешь массив и у тебя все рушится. Допустим, есть у тебя массив
{4, 5, 1, 12, 12} Что будет после сортировки {12, 12, 5, 4, 1} И получится, что оба максимальных среди четных, когда надо найти макс. среди четных и нечетных (12 и 5). Потом как дальше работать с таким массивом? Что переставлять по пункту 2. Нет ничего между первым и вторым, массив изменен.
И что означает фраза
Цитата:
Сообщение от Anonim123321 Посмотреть сообщение
При однократном просмотре целочисленного
не совсем понятна.
Мановар вне форума Ответить с цитированием
Старый 10.12.2017, 22:19   #5
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

От этой фразы зависит дальнейшее решение т.е. можно написать и так
Код:
cout << endl;

	auto max_no_chet = std::max_element(array.cbegin(), array.cend(), []( const auto y, const auto x) {return x > y && (x % 2) == 0; });
	cout << *max_no_chet << "  " << " pos = " << max_no_chet - array.begin() << endl;

	auto max_chet = std::max_element(array.cbegin(), array.cend(), [](const auto y, const auto x) {return x > y && (x % 2) == 1; });
	cout << *max_chet << "  " << " pos = " << max_chet - array.begin() << endl;


//	sort(array.rbegin(), array.rend());
//	cout << "1 Max = " << array[0] << ", 2 Max = " << array[1] << endl;
	system("pause");
но тогда вроде как пробегаемся по массиву 2 раза. или найти первые четный/нечетный, присвоить им максимальные и дальше в один заход пробежаться по массиву, найдя при этом максимальные среди четных/нечетных.
Мановар вне форума Ответить с цитированием
Старый 10.12.2017, 22:38   #6
Anonim123321
 
Регистрация: 10.12.2017
Сообщений: 4
По умолчанию

Но там за 1 проход надо
Anonim123321 вне форума Ответить с цитированием
Старый 10.12.2017, 22:44   #7
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

Делай за один. Выкладывай код, пиши что не понятно, подправим.
Мановар вне форума Ответить с цитированием
Старый 10.12.2017, 23:23   #8
Anonim123321
 
Регистрация: 10.12.2017
Сообщений: 4
По умолчанию

Я вот как раз и думаю, как это сделать. Поэтому и попросил помощи, ибо я в тупике.
Anonim123321 вне форума Ответить с цитированием
Старый 11.12.2017, 09:58   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Anonim123321 Посмотреть сообщение
Я вот как раз и думаю, как это сделать.
а разве по "старинке" в помощью обычного for не проще?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.12.2017, 10:06   #10
Мановар
Пользователь
 
Регистрация: 13.11.2016
Сообщений: 84
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
помощью обычного for не проще?
ТС проще (видимо он, раз код один в один) создать подобную тему на другом форуме, где понятия помощи и сделай за меня равнозначны. С этой же ненужной сортировкой, без каких либо попыток что то исправить. Будет теперь ждать пока кто то сделает.
Мановар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти сумму нечетных элементов массива четных столбцов Topse Паскаль, Turbo Pascal, PascalABC.NET 2 25.10.2017 09:11
найти номера нечетных элементов , стоящих на четных местах массива voytik Паскаль, Turbo Pascal, PascalABC.NET 5 26.09.2015 07:18
Дан целочисленный массив X(N,M).среди элементов нечетных столбцов массива найти количество четных чисел. darwin1 Паскаль, Turbo Pascal, PascalABC.NET 1 15.03.2014 17:50
нахождение всех совершенных чисел среди элементов целочисленного массива ( С++ ) Юлия10 Помощь студентам 2 06.02.2014 00:40
Составить два массива с различными простыми числами среди элементов исходного массива и их частотами maksimum Помощь студентам 7 09.04.2012 17:05