Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/40: Рейтинг темы: голосов - 40, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 11.02.2018
Сообщений: 6

Изменить элементы исходного массива согласно условиям

11.02.2018, 20:03. Показов 7397. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот задача: Дан массив целых чисел. а) Все элементы, кратные числу 10, заменить нулем, 6) Все нечетные элементы удвоить, а четные уменьшить вдвое. в) Нечетные элементы уменьшить на m, а элементы с нечетными номерами увеличить на n

Пожалуйста объясните как сделать все три действия в одной программе, обращаясь к исходному массиву и уже его изменяя!
Буду очень вам благодарен, заранее спасибо

Вот мой код:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int i,razmer;
    int *arr;
    int n, m;
 
    cout << "Введите количество элементов в массиве: ";
    cin >> razmer;
 
     arr = new int[razmer];
 
    cout << endl;
    cout << "Исходный массив: ";
 
    for (i = 0; i < razmer; i++)
    {
        arr[i] = rand() % 20 + 60;
        cout << arr[i] << " ";
    }
    cout << endl;
 
    cout << "Элементы массива кратные 10 стали нулями: ";
    for (i = 0; i < razmer; i++)
    {
        if (arr[i] % 10 == 0)
            arr[i] = arr[i] * 0;
        cout << arr[i] << " ";
    }
    cout << endl;
 
    cout << "Все нечетные элементы удвоились, а четные уменьшились вдвое: ";
    for (i = 0; i < razmer; i++)
    {
        if (arr[i] % 2 == 0)
            arr[i] = arr[i] * 2;
        if (arr[i] % 2 != 0)
            arr[i] = arr[i] / 2;
        cout << arr[i] << " ";
    }
    cout << endl;
 
    cout << "Все нечетные элементы уменьшить на m, а элементы с нечетными номерами увеличить на n: " << endl;
    cout << "Введите число m: " << endl;
    cin >> m;
    cout << "Введите число n: " << endl;
    cin >> n;
    cout << "Полученный массив: ";
    for (i = 0; i < razmer; i++)
    {
 
        if (arr[i] % 2 != 0)
            arr[i] = arr[i] - m;
        if (i % 2 != 0)
            arr[i] = arr[i] + n;
        cout << arr[i] << " ";
    }
    cout << endl;
 
 
    delete[]arr;
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.02.2018, 20:03
Ответы с готовыми решениями:

Заменить заданные элементы исходного массива согласно условию и сформировать новый массив
дан массив a(14). заменить все нечетные элементы с номером индекса и составить массив Б

Копировать все элементы исходного массива в новый массив, предварительно изменив их согласно условию
Дан массив m. Надо переписать в массив n, где каждый элемент равен m*(сумма квадратов от 1до7). Например, массив m = { 3, 5, 2, 1 }; ...

Изменить разрядность цифр, образующих элементы исходного массива С++
Ввести массив, состоящий из 17-ти элементов (двузначные целые числа). Изменить разрядность цифр, образующих элементы исходного массива и,...

9
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
11.02.2018, 20:21
Цитата Сообщение от Nguzu Посмотреть сообщение
Пожалуйста объясните как сделать все три действия в одной программе
Делаешь 3 функции, А, Б, В, каждая принимает массив в параметрах и сопроводительную информацию и делает с массивом что указано в задании.
1
0 / 0 / 0
Регистрация: 11.02.2018
Сообщений: 6
11.02.2018, 20:26  [ТС]
outoftime, А можешь пожалуйста продемонстрировать на каком-либо примере? ну или на моем
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
11.02.2018, 20:27
Nguzu, Как передать двухмерный массив в функцию?
0
0 / 0 / 0
Регистрация: 11.02.2018
Сообщений: 6
12.02.2018, 08:59  [ТС]
Облазил кучу сайтов и все равно не могу сделать на своем примере, помогите пожалуйста
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
12.02.2018, 09:09
Цитата Сообщение от Nguzu Посмотреть сообщение
Пожалуйста объясните как сделать все три действия в одной программе, обращаясь к исходному массиву и уже его изменяя!
Так не меняй его, просто выведи результат который хотят
Например, вместо:
C++
1
if (arr[i] % 10 == 0) arr[i] = arr[i] * 0;
Сделай:
C++
1
if (arr[i] % 10 == 0) cout << '0';
И так далее
0
0 / 0 / 0
Регистрация: 11.02.2018
Сообщений: 6
12.02.2018, 09:14  [ТС]
Avaddon74, ну это не совсем грамотно, да и очень хочется понять как это сделать с использованием функций
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
12.02.2018, 09:18
Цитата Сообщение от Nguzu Посмотреть сообщение
хочется понять
Ну если так, тогда начните с изучения функций!
Что вы от нас хотите? чтоб мы сделали за вас, тогда вы не поймете, а если сами сделаете, тогда поймете

C++
1
2
3
4
5
6
7
8
9
void func(int *a) {
    //.....
}
 
int main() {
    int arr[10];
    func(arr);
    return 0;
}
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
12.02.2018, 11:16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void filter1(int &x){
  if( x == 1 ) x = 2;
}
void func2(int &x){
  if( x == 2 ) x = 1;
}
void func3(int &x){
  if( x < 10 ) x = 10;
}
int main(int argc, char **argv){
  int arr[10];
  for(int i=0; i<10; i++){
    func1(x);
    func2(x);
    func3(x);
  }
}
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
12.02.2018, 11:19
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
50
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main()
{
  int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50};
  
  size_t N = sizeof(a) / sizeof(*a);
  
  // (a)
  std::replace_if(&a[0], &a[N],
    [](int x) -> bool
    {
      return (x % 10 == 0);
    },
  0);
  
  std::copy(&a[0], &a[N], std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
  
  // (b)
  std::transform(&a[0], &a[N], &a[0],
    [](int x) -> int
    {
      if (x % 2 == 0) return x / 2;
      else return x * 2;
    }
  );
  
  std::copy(&a[0], &a[N], std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
  
  // (c)
  size_t i = 0;
  int m = 4;
  int n = 3;
  std::transform(&a[0], &a[N], &a[0],
    [&i, m, n](int x) -> int
    {
      if (i++ % 2 == 0) return x - m;
      else return x + n;
    }
  );
  
  std::copy(&a[0], &a[N], std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
  
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.02.2018, 11:19
Помогаю со студенческими работами здесь

Скопировать элементы исходного массива в два других массива, размером вдвое меньше исходного
/*Написать программу, копирующую последовательно элементы одного массива размером 10 элементов в 2 массива размером 5 элементов...

Сформировать из исходного массива новый, разместив в нем элементы исходного массива, отсортированные по три
Здравствуйте! Нужна ваша помощь. Пользователем вводятся вещественные числа (не больше 100) сформировать из исходного массива новый,...

Сформировать матрицу из исходного одномерного массива согласно условию
не получается, кто разбирается, помогите с решением

В одномерном массиве изменить элементы согласно условию
Я сам не программист но предемет программирование есть так вот над не пойму что с задачей делать. Условие= Дан массив А. Найти и вывести...

Получить массив элементы которого в два раза больше чем элементы исходного массива
Помогите с кодом для задания Разработать программу постройки массива B , елементы которого в два разв больше чем Елементы массива А. А


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru