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

Заменить элементы массива кратные трём на сумму нечётных по значению элементов

05.11.2020, 17:48. Показов 3937. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Изучаем функции, была задача создать динамический массив, и заменить элементы, кратные трём, на сумму нечётных по значению элементов. Всё заставляют делать через функции, я около часа возился над кодом, но в конце начали уже ошибки вылетать, а вывод был неправильным(сумма нечётных увеличивалась постепенно, и были вписаны разные значения). Может кто-то подсказать, в чём беда?

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<ctime>
#include<iomanip>
using namespace std;
void Make_array(int*, int);
int Suma_nechotnih(int*, int);
void Zamina_kratnih_3(int*, int);
int main() {
    srand(time(0));
    int i, n;
    cout << "Enter n:";
    cin >> n;
    int* array = new int;
    Make_array(array, n);
    cout << "\n\n";
    Zamina_kratnih_3(array, n);
    delete[] &array;
    cout << endl;
    system("pause");
    return 0;
}
void Make_array(int* array, int n) {
    int i;
    for (i = 0; i < n; i++) {
        array[i] = -50 + rand() % 201;
        cout << setw(4) << array[i] << "|";
    }
}
 
int Suma_nechotnih(int* array, int n) {
    int i, s=0;
    for (i = 0; i < n; i++) {
        if (array[i] % 2 != 0) { s += array[i]; }
    }
    return s;
}
 
void Zamina_kratnih_3(int* array, int n) {
    int i;
    for (i = 0; i < n; i++) {
        if (array[i] % 3 == 0) {
            array[i] = Suma_nechotnih(array, n);
        }
    }
    for (i = 0; i < n; i++) {
        cout << setw(4) << array[i] << "|";
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2020, 17:48
Ответы с готовыми решениями:

Заменить элементы, кратные трем, на сумму нечетных по значению элементов массива
Ввести целочисленный массив ,состоящий из 17 элементов .Заменить элементы кратные трем на сумму...

Заменить элементы массива, кратные трем, на сумму нечетных по значению элементов
Ввести целочисленный массив, состоящий из 17 элементов. Заменить элементы кратные трем на сумму...

Заменить элементы массива, кратные трем, на сумму нечетных по значению элементов
Ввести целочисленный массив состоящий из 17 элементов.Заменить элементы кратные трем на сумму...

Ввести целочисленный массив, состоящий из 17 элементов. Заменить элементы кратные трем на сумму нечетных по значению эле
Ввести целочисленный массив, состоящий из 17 элементов. Заменить элементы кратные трем на сумму...

4
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.11.2020, 17:55 2
массив квадратный ? напишите оригинал условия задачи
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
05.11.2020, 17:58 3
Лучший ответ Сообщение было отмечено romcheg как решение

Решение

Строки с ошибками я отметил //!!!!!!!!!!!!!!
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<ctime>
#include<iomanip>
using namespace std;
void Make_array(int*, int);
int Suma_nechotnih(int*, int);
void Zamina_kratnih_3(int* arr, int n,int value); //!!!!!!!!!!!!!!
int main() {
    srand(time(0));
    int i, n;
    cout << "Enter n:";
    cin >> n;
    int* array = new int[n]; //!!!!!!!!!!!!!!
    Make_array(array, n);
    cout << "\n\n";
    Zamina_kratnih_3(array, n, Suma_nechotnih(array, n));//!!!!!!!!!!!!!!
    delete[] array;  //!!!!!!!!!!!!!!
    cout << endl;
    system("pause");
    return 0;
}
void Make_array(int* array, int n) {
    int i;
    for (i = 0; i < n; i++) {
        array[i] = -50 + rand() % 201;
        cout << setw(4) << array[i] << "|";
    }
}
 
int Suma_nechotnih(int* array, int n) {
    int i, s = 0;
    for (i = 0; i < n; i++) {
        if (array[i] % 2 != 0) { s += array[i]; }
    }
    return s;
}
 
void Zamina_kratnih_3(int* array, int n,int value) {  //!!!!!!!!!!!!!!
    int i;
    for (i = 0; i < n; i++) {
        if (array[i] % 3 == 0) {
            array[i] = value;  //!!!!!!!!!!!!!!
        }
    }
    for (i = 0; i < n; i++) {
        cout << setw(4) << array[i] << "|";
    }
}
1
0 / 0 / 0
Регистрация: 01.11.2020
Сообщений: 40
05.11.2020, 18:12  [ТС] 4
Создать динамический массив(одномерный), длина вводится с клавы. Заменить элементы, кратные трём, на сумму нечётных по значению элементов. Всё заставляют делать через функции(заполнение, обработка, вывод и т.п.), в main только вызывать эти функции. При чём функции объявлять(или как там) нужно выше main, а настраивать ниже. Ну, как в коде сделано в общем. Чёткого условия нет, т.к. дали задачу и добавили все эти пожелания

Добавлено через 5 минут
127| 107| 76| 22| 42| 49| -25| -33| 131| 127| 37| 7| -42| 20| 93| - стартовый массив
127| 107| 76| 22| 620| 49| -25| 620| 131| 127| 37| 7| 653| 20|1306| - после обработки, + ошибки(похоже утечка памяти)

Добавлено через 6 минут
Спасибо, помогло!!! пойду разбираться с этим всем
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
05.11.2020, 18:25 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
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int* Create(int n) // создание 
{
    int* a = new int [n];    
    return a;
}
 
void Random(int* a, int n) // заполнение 
{    
    for (int i = 0; i < n; i++)        
        a[i]=rand()%9+1;
}
 
void Print(int *a, int n) // вывод на экран
{
    for (int i = 0; i < n; i++)    
        cout << a[i] << " ";
    cout << "\n";    
}
 
int SumOdd(int* a, int n) 
{
    int sum_odd=0;
    for (int i = 0; i < n; i++) 
        if (a[i]%2) sum_odd+=a[i];    
return sum_odd;
}
 
void Replace(int* a, int n) 
{
    int s=SumOdd(a,n);
    for (int i = 0; i < n; i++) 
        if (a[i]%3==0) a[i]=s;
}
 
int main() 
{
    srand((int)time(0));
    int n, *a;
    cout << "n="; cin >> n;
    
    a = Create(n);
    
    Random(a,n);
    cout << "Array:\n";
    Print(a,n);
    cout << "sum odd = " << SumOdd(a,n) << "\n";
    Replace(a,n);
    cout << "Modified array:\n";
    Print(a,n);       
    delete[]a;
system("pause");
return 0;
}
функции вниз сами перенесите если это требуется
0
05.11.2020, 18:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2020, 18:25
Помогаю со студенческими работами здесь

Все элементы массива, кратные трем, заменить на 0
Задачи VBA на одномерный массив, массив вводится в ячейки с помощью цикла For .. Next. Элементы...

Заменить элементы массива, кратные трем, на противоположные по знаку
Задайте массив из n элементов. Замените элементы кратные трем, на противоположные по знаку....

Заменить все элементы массива, кратные 5 на сумму таких элементов
3.Элементы массива – целые числа в пределах от 4 до 23. Заменить все элементы массива кратные 5 на...

Все положительные элементы одномерного массива, кратные трем заменить на число 1
Все положительные элементы одномерного массива, кратные трем заменить на число 1. Обнулить все...

Найти сумму отрицательных элементов массива; элементы кратные заданному заменить нулями
Прошу помощи, мозг уже сломался... Задача: Массивы (одномерные массивы). Найти сумму...

Вычислить сумму положительных нечетных элементов и заменить все четные элементы массива на эту сумму
2. Вычислить сумму положительных нечетных элементов и заменить все четные элементы массива на эту...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru