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

Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Дмитрий12
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 70
16.05.2011, 21:26     Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами #1
Всем добрый вечер!!!Если есть минутка, помогите сделать эти задания!буду очень благодарен!!

1. Дан массив A размера N. Вывести вначале его элементы с четными номерами (в порядке возрастания номеров), а затем — элементы с нечетными номерами (также в порядке возрастания номеров): A2, A4, A6, …, A1, A3, A5, … .

2. В упорядоченном по убыванию массиве переставить места ми максимальный элемент и второй элемент со значением, меньшим Р.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2011, 21:26     Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами
Посмотрите здесь:

Распечатать введенную строку, удалив из неё слова с нечетными номерами и добавив перевернутое слово к слову с четными номерами. C++
C++ За один просмотр одномерного массива заменить все его элементы с нечетными номерами их квадратами
C++ Вывести элементы матрицы, расположенные в строках с четными номерами
C++ Вывести вначале элементы с четными номерами, а затем с нечетными (все в порядке возрастания)
Дана матрица размера MxN. Вывести ее элементы, расположенные в столбцах с нечетными номерами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
16.05.2011, 21:37     Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами #2
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
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
 
struct PrintNums : std::unary_function<int,bool>
    {
    PrintNums(bool act)
        : _act(act)
        {
        idx = 0;
        }
    bool operator() (int)
        {
        ++idx;
        return _act == true ? idx % 2 == 0 : idx % 2 != 0;
        }
    static int idx;
    bool _act;
    };
 
int PrintNums::idx;
 
int main()
    {
    const size_t N = 10;
    int A[N] = { 1, 2, 3, 4, 5, 6 , 7, 8, 9, 10 };
    std::copy_if(A, A + N, std::ostream_iterator<int>(std::cout, " "),PrintNums(true));
    std::cout << std::endl;
    std::copy_if(A, A + N, std::ostream_iterator<int>(std::cout, " "),PrintNums(false));
    std::cout << std::endl;
    }
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
16.05.2011, 21:41     Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами #3
Цитата Сообщение от Дмитрий12 Посмотреть сообщение
1. Дан массив A размера N. Вывести вначале его элементы с четными номерами (в порядке возрастания номеров), а затем — элементы с нечетными номерами (также в порядке возрастания номеров): A2, A4, A6, …, A1, A3, A5, … .
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
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
    srand(time(NULL));
    int *arr;
    int size,cnt=1;
    std::cout<<"Enter size of array -> ";
    std::cin>>size;
    arr = new int[size];
    std::cout<<"Array -> ";
     for(int i=0; i<size; i++)
     {
         arr[i]=rand()%99;
         std::cout<<arr[i]<<" ";
     }
    std::cout<<"\nOutput -> ";
     for(int i=0; i<size; i+=2)
     {
         std::cout<<arr[i]<<" ";
          if((i==size-2) && cnt)
          {
              i=-1;
              cnt=0;
          }
     }
     delete [] arr;
     system("pause");
     return 0;
}
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
16.05.2011, 22:02     Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами #4
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
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
 
template <typename Pred>
inline
int * find_second_if(int * begin, int * end, Pred pred)
    {
    for(int _idx = 0; begin != end; ++begin)
        {
        if(pred(*begin) && ++_idx == 2)
            break;
        }
    return begin;
    }
 
int main()
    {
    const size_t N = 10;
    int A[N] = { 1, 2, 3, 4, 5, 6 , 7, 8, 9, 10 };
    int P;
 
    std::cin >> P;
    
    std::sort(A,A + N,std::greater<int>());
    std::swap(*std::max_element(A,A + N),*find_second_if(A, A + N, std::bind2nd(std::less<int>(),P)));
    std::copy(A,A + N, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    }
Дмитрий12
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 70
17.05.2011, 00:15  [ТС]     Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами #5
Цитата Сообщение от MILAN Посмотреть сообщение
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
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
 srand(time(NULL));
 int *arr;
 int size,cnt=1;
 std::cout<<"Enter size of array -> ";
 std::cin>>size;
 arr = new int[size];
 std::cout<<"Array -> ";
 for(int i=0; i<size; i++)
 {
 arr[i]=rand()%99;
 std::cout<<arr[i]<<" ";
 }
 std::cout<<"\nOutput -> ";
 for(int i=0; i<size; i+=2)
 {
 std::cout<<arr[i]<<" ";
 if((i==size-2) && cnt)
 {
 i=-1;
 cnt=0;
 }
 }
 delete [] arr;
 system("pause");
 return 0;
}
Вопрос? почему С++ ругается на эту строчку:
C++
1
for(int i=0; i<size; i+=2)
?
А когда стераю ее то работает=(О_о!!!
Вот сама ошибка: error C2374: 'i' : redefinition; multiple initialization
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
17.05.2011, 00:17     Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами #6
Дмитрий12,
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
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
 srand(time(NULL));
 int *arr;
 int size,cnt=1,i;
 std::cout<<"Enter size of array -> ";
 std::cin>>size;
 arr = new int[size];
 std::cout<<"Array -> ";
 for(i=0; i<size; i++)
 {
 arr[i]=rand()%99;
 std::cout<<arr[i]<<" ";
 }
 std::cout<<"\nOutput -> ";
 for(i=0; i<size; i+=2)
 {
 std::cout<<arr[i]<<" ";
 if((i==size-2) && cnt)
 {
 i=-1;
 cnt=0;
 }
 }
 delete [] arr;
 system("pause");
 return 0;
Дмитрий12
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 70
23.05.2011, 22:52  [ТС]     Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами #7
Цитата Сообщение от Ma3a Посмотреть сообщение
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
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
 
struct PrintNums : std::unary_function<int,bool>
    {
    PrintNums(bool act)
        : _act(act)
        {
        idx = 0;
        }
    bool operator() (int)
        {
        ++idx;
        return _act == true ? idx % 2 == 0 : idx % 2 != 0;
        }
    static int idx;
    bool _act;
    };
 
int PrintNums::idx;
 
int main()
    {
    const size_t N = 10;
    int A[N] = { 1, 2, 3, 4, 5, 6 , 7, 8, 9, 10 };
    std::copy_if(A, A + N, std::ostream_iterator<int>(std::cout, " "),PrintNums(true));
    std::cout << std::endl;
    std::copy_if(A, A + N, std::ostream_iterator<int>(std::cout, " "),PrintNums(false));
    std::cout << std::endl;
    }
Ругается на copy_if : copy_if' : undeclared identifier
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2011, 23:52     Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами
Еще ссылки по теме:

Сформировать массивы: в первый включить элементы исходного массива с четными номерами, а во второй с нечетными C++
C++ Создать два файла, первый содержит элементы исходного файла с нечетными номерами, а второй с четными
Вывести элементы массива с нечетными номерами в порядке убывания номеров C++

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

Или воспользуйтесь поиском по форуму:
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
23.05.2011, 23:52     Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами #8
Дмитрий12, зависит от компилятора, видимо, у вас этой функции нет. Тогда можно заменить на самодельный вариант copy_if, что-нибудь вроде такого
C++
1
2
3
4
5
6
7
8
9
10
11
12
template <typename InIt, typename OutIt, typename Pred>
OutIt copy_if ( InIt first, InIt last, OutIt result ,Pred pred)
    {
    while (first!=last) 
        {
        if(pred(first))
            *result++ = *first++;
        else
            ++first;
        }
    return result;
    }
Добавлено через 44 минуты
Звёздочку по невнимательности пропустил одну. Будет верно, если сделать "if(pred(*first))".
Yandex
Объявления
23.05.2011, 23:52     Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами
Ответ Создать тему
Опции темы

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