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

Максимумы и минимумы. Векторы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
Maryam_369
0 / 0 / 0
Регистрация: 17.01.2010
Сообщений: 15
31.05.2010, 14:10     Максимумы и минимумы. Векторы #1
1). Дано целое число N из целых чисел. Найти номера первого и последнего максимального элемента из данного набора и вывести их в указанном порядке.
2). Дан целочисленный массив размера N. Вывести все содержащиеся в данном массиве четные числа в порядке убывания их индексов, а также их количество К.
3). Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на одну позицию (при этом А1 перейдет в А2, А2 - в А3, ..., Аn - в А1).
4). Даны числа B, C (0<B<C) и набор из десяти чисел. Вывести максимальный из элементов набора, содержащихся в интервале (В,С) и его номер. Если требуемые числа в наборе отсутствуют, то дважды вывести 0.
5). Дан массив А размера N. Вывести вначале его элементы с нечетными номерами в порядке возрастания номеров, а затем - элементы с четными номерами в порядке убывания номеров.
А1, А3, А5, ....., А6, А4, А2. Условный оператор не использовать.
6). Дан массив размера N. Заменить каждый элемент массива на среднее арифметическое этого элемента и его соседей.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
31.05.2010, 18:57     Максимумы и минимумы. Векторы #2
Maryam_369, вторая задача:

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
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
int _getch(void);
 
void main()
{
    int a[10], n, i, k = 0;
    cout << "Vvedite razmer massiva: ";
    cin >> n;
    cout << "Vvedite elementy massiva: " << "\n";
    for (int i = 0; i < n; i++)
        cin >> a[i];
    //Нахождение четных чисел и их количества
    for (int i = n - 1; i > 0; i--)
        if (a[i] % 2 == 0) 
        {
            k++;
            cout << "Chetnye elementy: " << a[i] << "\n";
        }
 
        cout << "Kol-vo chetnyx elementov = " << k << "\n";
    
    _getch();
}
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
31.05.2010, 19:03     Максимумы и минимумы. Векторы #3
Как я понял, нужно же использовать векторы?
Maryam_369
0 / 0 / 0
Регистрация: 17.01.2010
Сообщений: 15
01.06.2010, 16:11  [ТС]     Максимумы и минимумы. Векторы #4
Да, всё верно

Добавлено через 1 час 22 минуты
Помогите пожалуйста решить остальные задачи! Послезавтра экзамен, а нужно еще в них разобраться, понять как решали..... Заранее спасибо...

Добавлено через 11 часов 22 минуты
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1). Дано целое число N и набор из N целых чисел. Найти номера первого и последнего максимального элемента из данного набора и вывести их в указанном порядке.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
01.06.2010, 16:56     Максимумы и минимумы. Векторы #5
Дано целое число N и набор из N целых чисел. Найти номера первого и последнего максимального элемента из данного набора и вывести их в указанном порядке.
Лично я не понимаю условия задачи.
Требуется найти в заданной последовательности номера первого и последнего максимальных элементов, так?
Qwerty_coder
29 / 29 / 2
Регистрация: 14.12.2009
Сообщений: 79
01.06.2010, 18:26     Максимумы и минимумы. Векторы #6
neske, мне кажется ему нужно вывести индексы первого максимального и минимального элементов
Maryam_369
0 / 0 / 0
Регистрация: 17.01.2010
Сообщений: 15
02.06.2010, 07:31  [ТС]     Максимумы и минимумы. Векторы #7
Я тоже мутно поняла условие задачи, куратор сказал что нужно присвоить сначала им индексы, потом найти максимальные элементы, а потом вывести в нужном порядке. то есть сначала находим макс. элемент, запоминаем его, потом ищем макс. элемент уже среди оставшихся чисел и т.д.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
02.06.2010, 11:34     Максимумы и минимумы. Векторы #8
Такое требуется?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <algorithm>
 
int main()
{
    const int size=10;
    int MAS[size]={6,7,8,9,1,2,9,4,5,3};
 
    int max=*std::max_element (MAS, MAS+size); // нашли максимальное значение.
 
    std::cout << "Index of max elements: ";
    for (int i=0; i<size; i++)
        if (MAS[i]==max)
            std::cout << i << " ";
 
    std::cout << std::endl;
    system("pause");
    return 0;
}
Maryam_369
0 / 0 / 0
Регистрация: 17.01.2010
Сообщений: 15
03.06.2010, 04:44  [ТС]     Максимумы и минимумы. Векторы #9
Вроде бы да, спасибо большое!

Добавлено через 12 часов 12 минут
Подскажите кто нибудь как 4, 5 решать.....
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
03.06.2010, 10:56     Максимумы и минимумы. Векторы #10
4)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <algorithm>
 
int main()
{
    const int SIZE=10;
    int MAS[SIZE]={1,2,3,4,5,6,7,8,9,10};
 
    int B, C;
    std::cout << "Input B, C: ";
    std::cin >> B >> C;
 
    if (C>SIZE-1) std::cout << "0 0"; // выходит за границу индексов.
    else {
        std::cout << "Maximum: " << *std::max_element (MAS+B-1, MAS+C-1);
        std::cout << std::endl;
        std::cout << "Index: " << *std::max_element (MAS+B-1, MAS+C-1) - *MAS;
        std::cout << std::endl; }
 
    system ("pause");
    return 0;
}
5)
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    const int SIZE=10;
    int MAS[SIZE]={6,1,5,8,3,9,10,2,7,4};
 
    std::vector <int> odd;
    std::vector <int> even;
 
    for (int i=0; i<SIZE; i+=2) {
        odd.push_back (MAS[i]);
        even.push_back (MAS[i+1]); }
 
    std::sort (odd.begin(), odd.end());
    std::sort (even.begin(), even.end());
    std::reverse (even.begin(), even.end());
    //output
    std::cout << "Odd:\n";
    std::copy (odd.begin(), odd.end(), std::ostream_iterator<int> (std::cout, " "));
    std::cout << std::endl;
 
    std::cout << "Even:\n";
    std::copy (even.begin(), even.end(), std::ostream_iterator<int> (std::cout, " "));
    std::cout << std::endl;
 
    system ("pause");
    return 0;
}
Maryam_369
0 / 0 / 0
Регистрация: 17.01.2010
Сообщений: 15
03.06.2010, 11:37  [ТС]     Максимумы и минимумы. Векторы #11
спасибо большое,neske! я вот не понимаю как эти программы писать надо вот хоть убей! в начале первого семестра еще что то понимала, а теперь..... Ты для меня настоящий вундеркинд!)

Добавлено через 57 секунд
и фей)
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
03.06.2010, 11:43     Максимумы и минимумы. Векторы #12
больше практики, и все прийдет)
Maryam_369
0 / 0 / 0
Регистрация: 17.01.2010
Сообщений: 15
04.06.2010, 06:47  [ТС]     Максимумы и минимумы. Векторы #13
Если бы не вы, я бы не сдала экзамен! спасибо большое. Куратор сказал ещё 6 решить.....это конечно наглость с моей стороны, но у меня нет другого выхода, как просить помощи у вас. сама их решать я не умею..... Помогите 6 решить...(((

Добавлено через 1 минуту
А насчет практики, у меня времени нет.. нас валят на математике, все свободное время провожу с ней.... а ещё ведь и другие предметы есть....( вот и приходиться как то карабкаться
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
04.06.2010, 17:01     Максимумы и минимумы. Векторы #14
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
#include <iostream>
#include <algorithm>
#include <iterator>
 
int rnd ()
{
    return rand()%50+1;
}
 
int main()
{
    const int size=10;
    int MAS[size];
    // fill
    srand(time(NULL));
    std::generate_n (MAS, size, rnd);
    // output
    std::cout << "Start matrix:\n";
    std::copy (MAS, MAS+size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    // exange
    int finish_MAS[size];
    finish_MAS[0]=MAS[0]; finish_MAS[size-1]=MAS[size-1]; // т.к. они не меняются.
    for (int i=1; i<size-1; i++)
        finish_MAS[i]=( MAS[i-1]+MAS[i]+MAS[i+1] ) /3;
    //output
    std::cout << "Finish matrix:\n";
    std::copy (finish_MAS, finish_MAS+size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    system ("pause");
    return 0;
}
Не придумал я более красивого решения .. буду рад увидеть еще варианты с STL (;
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.06.2010, 17:49     Максимумы и минимумы. Векторы #15
Цитата Сообщение от neske Посмотреть сообщение
выведет все индексы максимумов, а надо только первый и последний.
Цитата Сообщение от neske Посмотреть сообщение
буду рад увидеть еще варианты с STL (;
первая задача
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
   // initial vector
   int arr [] = { 6, 7, 8, 9, 1, 2, 9, 4, 5, 3 };
   //
   std::vector<int> v(arr, arr + sizeof(arr)/sizeof(int));
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
   // find max
   std::vector<int>::iterator max = std::max_element(v.begin(), v.end());
   // print result
   std::cout << "first max: " << max - v.begin() << std::endl;
   std::cout << "last  max: " << v.rend() - std::find(v.rbegin(), v.rend(), *max) << std::endl;
}
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
04.06.2010, 17:52     Максимумы и минимумы. Векторы #16
fasked, а в шестой задачи, каким ты способсом сделаешь?
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.06.2010, 19:07     Максимумы и минимумы. Векторы #17
вторая задача
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <functional>
 
template <typename T> class is_odd : public std::unary_function<T, bool> {
public: bool operator () (const T &w) const { return w & 1; }
};
 
int main()
{
   // initial vector
   int arr [] = { 6, 7, 8, 9, 1, 2, 9, 4, 5, 3 };
   //
   std::vector<int> v(arr, arr + sizeof(arr)/sizeof(int));
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
   // print even elements
   std::copy_if(v.rbegin(), v.rend(), std::ostream_iterator<int>(std::cout, " "), std::not1(is_odd<int>()));
   std::cout << std::endl;
}
может быть с классами опять перебор, но вроде бы это в концепции Си++
Цитата Сообщение от neske Посмотреть сообщение
а в шестой задачи, каким ты способсом сделаешь?
сейчас и до нее дойдем

Добавлено через 6 минут
третья задача
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
   // initial vector
   int arr [] = { 6, 7, 8, 9, 1, 2, 9, 4, 5, 3 };
   //
   std::vector<int> v(arr, arr + sizeof(arr)/sizeof(int));
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
   // right shift
   std::reverse(v.begin(), v.end() - 1);
   std::reverse(v.begin(), v.end());
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
}
Добавлено через 55 минут
Родил наконец-то шестую задачу без использования дополнительного массива, обошлось двумя временными переменными. конечно ни о каком STL тут и говорить нечего. Стандартными алгоритмами такое не решается по-моему
Крайние значения я решил тоже не менять, но в принципе это не проблема. Можно их посчитать как (псевдокод: индексация от 1 до n включительно)
Код
v[1] = (v[1] + v[2]) / 2;
v[n] = (v[n - 1] + v[n]) / 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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
   // initial vector
   int arr [] = { 6, 7, 8, 9, 1, 2, 9, 4, 5, 3 };
   //
   std::vector<int> v(arr, arr + sizeof(arr)/sizeof(int));
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
   // set elements
   int buf_1 = 0;
   int buf_2 = *(v.begin() + 1);
   for(std::vector<int>::iterator it = v.begin() + 1; it != v.end() - 1; ++it)
   {
      buf_1 = *it;
      *it = (buf_2 + *(it) + *(it+1)) / 3;
      buf_2 = buf_1;
   }
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2010, 22:53     Максимумы и минимумы. Векторы
Еще ссылки по теме:

Вычислить сумму произведений членов последовательности, найти максимумы и минимумы C++
Найти все локальные минимумы массива A[1…20] C++

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
05.06.2010, 22:53     Максимумы и минимумы. Векторы #18
придумал как можно находить четные элементы
C++
1
std::copy_if(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "), std::not1(std::bind2nd(std::modulus<int>(), 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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
template <typename T> class interval : public std::unary_function<T, bool> {
public:
   interval(const T& b, const T& c) : b_(b), c_(c) {
   }
   bool operator () (const T& a) const { 
      return (a > b_ && a < c_); 
   }
private:
   T b_;
   T c_;
};
 
int main()
{
   // limits
   const int b = 0;
   const int c = 100;
   // initial vector
   std::vector<int> v;
   std::generate_n(std::back_inserter(v), 10, rand);
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
   // print entry to interval elements
   std::copy_if(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "), interval<int>(b, c));
   std::cout << std::endl;
}
для пятой ничего оригинального в голову не лезет
Yandex
Объявления
05.06.2010, 22:53     Максимумы и минимумы. Векторы
Ответ Создать тему
Опции темы

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