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

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

Войти
Регистрация
Восстановить пароль
 
Ние
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 18
#1

Элементы массивов с четными номеpами до максимального заменить на заданное значение - C++

02.02.2012, 23:50. Просмотров 622. Ответов 8
Метки нет (Все метки)

Даны целые массивы А[10], B[10] и значения R и F. Каждый массив пpеобpазовать по пpавилу: компоненты с четными номеpами, пpедшествующие наибольшему компоненту массива, заменить на значение R (для массива A) и значение F (для массива B). Считать, что в каждом массиве наибольший компонент единственный.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2012, 23:50     Элементы массивов с четными номеpами до максимального заменить на заданное значение
Посмотрите здесь:

C++ Заменить нулями элементы матрицы, расположенные слева и сверху от максимального
Дан массив. Все элементы массива с четными номерами заменить на их абсолютную величину C++
C++ Массив: Все отрицательные элементы увеличить на значение максимального элемента
Дан массив вещественных чисел.Все элементы массива с четными номера заменить на их абсолютную величину. C++
C++ В линейном массиве заменить все элементы на число m (m – индекс максимального элемента)
C++ Уменьшить все четные элементы матрицы на значение максимального элемента
C++ Функция, заменяющая элементы массива на заданное значение
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
03.02.2012, 00:17     Элементы массивов с четными номеpами до максимального заменить на заданное значение #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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <iomanip>
 
int indexOfMax(const int [], const int, int = 0, int = 0);
void printArray(const int [], const int, int = 0);
 
int main()
{
    const int arraySize = 10;
    int a[arraySize] = {1,2,3,444,5,6,7,8,9,10};
    int b[arraySize] = {1,2,3,4,555,6,7,8,9,10};
    int r = 555;
    int f = 444;
 
    for(int i = indexOfMax(a,arraySize)+1; i < arraySize; i++)
        if(i % 2 == 0)
            a[i] = r;
 
    for(int i = indexOfMax(b,arraySize)+1; i < arraySize; i++)
        if(i % 2 == 0)
            b[i] = f;
 
 
    printArray(a,arraySize);
    printArray(b,arraySize);
 
    return 0;
}
 
 
int indexOfMax(const int m[], const int arraySize, int index, int step)
{
    if(step == arraySize)
        return index;
    else
        return indexOfMax(m,arraySize,m[step]>m[index]?step:index,step+1);
}
 
void printArray(const int m[], const int arraySize, int step)
{
    if(step < arraySize)
    {
        std::cout << std::setw(5) << m[step];
 
        printArray(m,arraySize,step+1);
    }
    else
        std::cout << std::endl;
}
Serejke_qq
03.02.2012, 00:20
  #3

Не по теме:

Цитата Сообщение от R136a1 Посмотреть сообщение
lshkn@lshkn-desktop:~/C++$ cat 1.cc
ах, успел заметить ^_^

R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
03.02.2012, 00:23     Элементы массивов с четными номеpами до максимального заменить на заданное значение #4
Цитата Сообщение от Serejke_qq Посмотреть сообщение

Не по теме:


ах, успел заметить ^_^

Не по теме:

упс

valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
03.02.2012, 00:32     Элементы массивов с четными номеpами до максимального заменить на заданное значение #5
R136a1, без обид - лучше еще раз перечитайте задание: ключевое слово - пpедшествующие
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
03.02.2012, 00:41     Элементы массивов с четными номеpами до максимального заменить на заданное значение #6
valeriikozlov, да какие обиды невнимательно прочитал
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
#include <iostream>
#include <iomanip>
 
int indexOfMax(const int [], const int, int = 0, int = 0);
void printArray(const int [], const int, int = 0);
 
int main()
{
    const int arraySize = 10;
    int a[arraySize] = {1,2,3,444,5,6,7,8,9,10};
    int b[arraySize] = {1,2,3,4,555,6,7,8,9,10};
    int r = 555;
    int f = 444;
 
    for(int i = 1; i < indexOfMax(a,arraySize); i++)
        if(i % 2 == 0)
            a[i] = r;
 
    for(int i = 1; i < indexOfMax(b,arraySize); i++)
        if(i % 2 == 0)
            b[i] = f;
 
    printArray(a,arraySize);
    printArray(b,arraySize);
 
    return 0;
}
 
 
int indexOfMax(const int m[], const int arraySize, int index, int step)
{
    if(step == arraySize)
        return index;
    else
        return indexOfMax(m,arraySize,m[step]>m[index]?step:index,step+1);
}
 
void printArray(const int m[], const int arraySize, int step)
{
    if(step < arraySize)
    {
        std::cout << std::setw(5) << m[step];
 
        printArray(m,arraySize,step+1);
    }
    else
        std::cout << std::endl;
}
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
03.02.2012, 00:44     Элементы массивов с четными номеpами до максимального заменить на заданное значение #7
R136a1, Вы раньше на Паскале писали? Зачем начинаете i с единички в этих циклах:

Цитата Сообщение от R136a1 Посмотреть сообщение
for(int i = 1; i < indexOfMax(a,arraySize); i++)
?
Vergil111
31 / 31 / 6
Регистрация: 30.11.2010
Сообщений: 81
03.02.2012, 01:12     Элементы массивов с четными номеpами до максимального заменить на заданное значение #8
Я бы сделал как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int r;
    vector<int> a((istream_iterator<int>(cin)), istream_iterator<int>());
    cin.clear();
    cout << "Enter r: ";
    cin >> r;
    vector<int>::iterator it = a.begin();
    replace_if(a.begin(), max_element(a.begin(), a.end()), [&it, &a](const int& x)->bool{bool res = !((it-a.begin())&1); it++; return res;}, r);
    copy(a.begin(), a.end(), ostream_iterator<int>(cout, " "));
    return 0;
}
Для массива b напишите сами
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2012, 01:25     Элементы массивов с четными номеpами до максимального заменить на заданное значение
Еще ссылки по теме:

C++ Заменить все отрицательные элементы массива на значения максимального
C++ Элементы массива с четными номерами заменить на 100
C++ Сформировать массив, записав в него элементы с четными индексами двух массивов.
C++ Найти сумму положительных элементов массива до максимального и заменить отрицательные элементы квадратами
Заменить нулем все элементы столбца до максимального элемента C++

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

Или воспользуйтесь поиском по форуму:
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
03.02.2012, 01:25     Элементы массивов с четными номеpами до максимального заменить на заданное значение #9
valeriikozlov, и снова спасибо за замечание 0 за нечетное принял
Так конечно должно быть
C++
1
2
3
4
5
6
7
        for(int i = 0; i < indexOfMax(a,arraySize); i++)
                if(i % 2 == 0)
                        a[i] = r;
 
        for(int i = 0; i < indexOfMax(b,arraySize); i++)
                if(i % 2 == 0)
                        b[i] = f;
Yandex
Объявления
03.02.2012, 01:25     Элементы массивов с четными номеpами до максимального заменить на заданное значение
Ответ Создать тему
Опции темы

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