0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 80
1

Вычислить сумму элементов массива расположенных до первого нулевого элемента

23.08.2019, 18:27. Показов 5172. Ответов 11
Метки нет (Все метки)

В одномерном массиве, состоящем из 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
#include <iostream>
#define NOMINMAX
#include <Windows.h>
#include <conio.h>
#include <ctime>
#include <iomanip>
#include <random>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::default_random_engine randomEng(time(NULL));
    std::uniform_int<int> radndomNum(0, 9);
 
    const int N = 8;
    int mas[N], indexZero, indexMin, sum = 0, min = std::numeric_limits<int>::max();
    bool found = false;
 
    std::cout << "Ваш массив:\n| ";
    for (int i = 0; i < N; i++) {
        mas[i] = radndomNum(randomEng);
 
        if (mas[i] < min && mas[i] != 0) {
            min = mas[i];
            indexMin = i;
        }
 
        if (mas[i] == 0 && !found) {
            indexZero = i;
            found = true;
        }
 
        std::cout << std::setw(1) << mas[i] << " | ";
    }
 
    for (int i = 0; i < indexZero; i++)
        sum += mas[i];
 
    mas[indexMin] = sum;
 
    if (sum != 0) {
        std::cout << "\n\n С заманенным мин. элементом:\n| ";
        for (int i = 0; i < N; i++)
            std::cout << std::setw(1) << mas[i] << " | ";
    }
 
    (found) ?
        std::cout << "\n Сумма до 0: " << sum : std::cout << "\n Нет 0 в массиве...";
 
    _getch();
    return 0;
}
Нужен результат тестирования программы, как написать и ошибка где-то помогите с решением.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2019, 18:27
Ответы с готовыми решениями:

Вычислить сумму положительных элементов массива, расположенных до первого нулевого элемента
Найти сумму положительных элементов массива из N элементов, расположенных до первого нулевого...

Вычислить сумму модулей элементов массива, расположенных после первого нулевого элемента
в одномерном массиве что состоит из N действительных элементов вычислить сумму модулей элементов...

Вычислить сумму и количество элементов массива, расположенных после нулевого элемента
Помогите написать программу: Дан массив чисел В. Вычислить сумму и количество элементов массива,...

Вычислить сумму элементов массива, расположенных после последнего нулевого элемента
Помогите, пожалуйста, написать программу. Вот ее условие. В одномерном массиве, состоящем из n...

11
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
23.08.2019, 18:52 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
#include <iostream>
#include <array>
#include <algorithm>
using namespace std;
 
//задерживает консоль
inline int progEnd(int code = 0) { std::cout << "\nEND\n"; system("pause>nul"); return code; }
 
//"рандомное" значение в диапазоне [from; to]
inline int randInt(int from, int to) { return rand() % ( to - from + 1 ) + from; }
 
int main() {
    //массив на 20 эл.
    array<int, 20> arr;
 
    //заполнение массива случайными числами
    for(auto& el : arr) el = randInt(0, 10);
 
    //если нет нуля, то на рандомное место пихается 0
    if(find(begin(arr), end(arr), 0) == end(arr)) arr[randInt(0, arr.size())] = 0;
 
    //подсчет суммы до первого нуля
    unsigned sum = 0;
    for(int i = 0; i < arr.size() && arr[i]; i++) if(arr[i]) sum += arr[i];
 
    cout << "Array:\n";
    for(auto& el : arr) cout << el << ' ';
    cout << "\nSum untill first zero: " << sum;
    
    return progEnd(0);
}
0
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 80
23.08.2019, 19:37  [ТС] 3
В одномерном массиве, состоящем из 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
#include <iostream>
#define NOMINMAX
#include <Windows.h>
#include <conio.h>
#include <ctime>
#include <iomanip>
#include <random>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::default_random_engine randomEng(time(NULL));
    std::uniform_int<int> radndomNum(0, 9);
 
    const int N = 8;
    int mas[N], indexZero, indexMin, sum = 0, min = std::numeric_limits<int>::max();
    bool found = false;
 
    std::cout << "Ваш массив:\n| ";
    for (int i = 0; i < N; i++) {
        mas[i] = radndomNum(randomEng);
 
        if (mas[i] < min && mas[i] != 0) {
            min = mas[i];
            indexMin = i;
        }
 
        if (mas[i] == 0 && !found) {
            indexZero = i;
            found = true;
        }
 
        std::cout << std::setw(1) << mas[i] << " | ";
    }
 
    for (int i = 0; i < indexZero; i++)
        sum += mas[i];
 
    mas[indexMin] = sum;
 
    if (sum != 0) {
        std::cout << "\n\n С заманенным мин. элементом:\n| ";
        for (int i = 0; i < N; i++)
            std::cout << std::setw(1) << mas[i] << " | ";
    }
 
    (found) ?
        std::cout << "\n Сумма до 0: " << sum : std::cout << "\n Нет 0 в масси-ве...";
 
    _getch();
    return 0;
}
Нужен результат тестирования программы (типа):
...Введите элементы вещественного массива:
1 3 5 4
1 2 1 -1
10 1 5 3
Введите значение А
Введите значение В
От 5 до 3 находится 0 эллемент (а)(ов)
Отсортированный массив: 10 5 4 3 2 1 1 1 1 -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
33
34
35
36
37
// Copyright (C) 2007-2014 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
 
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
 
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.
 
/** @file bits/c++0x_warning.h
 *  This is an internal header file, included by other library headers.
 *  Do not attempt to use it directly. @headername{iosfwd}
 */
 
#ifndef _CXX0X_WARNING_H
#define _CXX0X_WARNING_H 1
 
#if __cplusplus < 201103L
#error This file requires compiler and library support for the \
ISO C++ 2011 standard. This support is currently experimental, and must be \
enabled with the -std=c++11 or -std=gnu++11 compiler options.
#endif
 
#endif
как включить поддержку в DEV C++?
0
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
23.08.2019, 20:15 4
Цитата Сообщение от Evgeniykondraty Посмотреть сообщение
В одномерном массиве, состоящем из n целых элементов, вычислить сумму элементов массива, расположенных до первого нулевого элемента.
Там, вроде написано
ISO C++ 2011 standard. This support is currently experimental, and must be \
enabled with the -std=c++11 or -std=gnu++11 compiler options.
0
Продавец времени
5622 / 3081 / 712
Регистрация: 12.03.2015
Сообщений: 14,850
23.08.2019, 20:16 5
Цитата Сообщение от Evgeniykondraty Посмотреть сообщение
как включить поддержку в DEV C++?
Компилятор-то какой? мокрософт?
0
бах-бах и в продакшен!
2988 / 1605 / 564
Регистрация: 23.09.2014
Сообщений: 4,959
Записей в блоге: 4
23.08.2019, 20:34 6
Evgeniykondraty,
в DEV C++ есть два способа настроить компилятор.

1. настраиваем компилятор по умолчанию(будет работать сразу из коропки для всех ваших проектов):
Вычислить сумму элементов массива расположенных до первого нулевого элемента

2. настраиваем компилятор под отдельный проект(настройки только для текущего проекта):
Вычислить сумму элементов массива расположенных до первого нулевого элемента

далее собсно поднять требуемый флажок:
Вычислить сумму элементов массива расположенных до первого нулевого элемента
0
бах-бах и в продакшен!
2988 / 1605 / 564
Регистрация: 23.09.2014
Сообщений: 4,959
Записей в блоге: 4
23.08.2019, 20:40 7
del
0
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 80
25.08.2019, 08:08  [ТС] 8
Ничего не вышло, помогите с настройками
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
// Copyright (C) 2007-2014 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
 
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
 
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.
 
/** @file bits/c++0x_warning.h
 *  This is an internal header file, included by other library headers.
 *  Do not attempt to use it directly. @headername{iosfwd}
 */
 
#ifndef _CXX0X_WARNING_H
#define _CXX0X_WARNING_H 1
 
#if __cplusplus < 201103L
#error This file requires compiler and library support for the \
ISO C++ 2011 standard. This support is currently experimental, and must be \
enabled with the -std=c++11 or -std=gnu++11 compiler options.
#endif
 
#endif
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
#include <iostream>
#define NOMINMAX
#include <Windows.h>
#include <conio.h>
#include <ctime>
#include <iomanip>
#include <random>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    std::default_random_engine randomEng(time(NULL));
    std::uniform_int<int> radndomNum(0, 9);
 
    const int N = 8;
    int mas[N], indexZero, indexMin, sum = 0, min = std::numeric_limits<int>::max();
    bool found = false;
 
    std::cout << "Ваш массив:\n| ";
    for (int i = 0; i < N; i++) {
        mas[i] = radndomNum(randomEng);
 
        if (mas[i] < min && mas[i] != 0) {
            min = mas[i];
            indexMin = i;
        }
 
        if (mas[i] == 0 && !found) {
            indexZero = i;
            found = true;
        }
 
        std::cout << std::setw(1) << mas[i] << " | ";
    }
 
    for (int i = 0; i < indexZero; i++)
        sum += mas[i];
 
    mas[indexMin] = sum;
 
    if (sum != 0) {
        std::cout << "\n\n С заманенным мин. элементом:\n| ";
        for (int i = 0; i < N; i++)
            std::cout << std::setw(1) << mas[i] << " | ";
    }
 
    (found) ?
        std::cout << "\n Сумма до 0: " << sum : std::cout << "\n Нет 0 в масси-ве...";
 
    _getch();
    return 0;
}
Добавлено через 2 минуты
Ошибка в 15 строке

Добавлено через 6 минут
[Error] 'uniform_int' is not a member of 'std'
[Error] expected primary-expression before 'int'
[Error] 'radndomNum' was not declared in this scope
0
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
25.08.2019, 08:27 9
Лучший ответ Сообщение было отмечено Evgeniykondraty как решение

Решение

Цитата Сообщение от Evgeniykondraty Посмотреть сообщение
Ошибка в 15 строке
Наверное надо std::uniform_int_distribution<int> radndomNum(0, 9);
1
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 80
25.08.2019, 08:48  [ТС] 10
Спасибо, заработало, но вот вопрос, как настроить консоль, чтобы отражались надписи на русском? SetConsoleOutputCP(1251); а то крякозябра какая-то...

Добавлено через 6 минут
Все мы начинали с мокрософта
0
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
25.08.2019, 10:08 11
Лучший ответ Сообщение было отмечено Evgeniykondraty как решение

Решение

Цитата Сообщение от Evgeniykondraty Посмотреть сообщение
Спасибо, заработало, но вот вопрос, как настроить консоль, чтобы отражались надписи на русском? SetConsoleOutputCP(1251); а то крякозябра какая-то...
Попробуй сделать SetConsoleOutputCP(866). У тебя исходники в одной кодировке, а консоль в другой.
1
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 80
25.08.2019, 11:30  [ТС] 12
Добавлено через 19 минут
Ваш массив:
| 7 | 0 | 6 | 8 | 4 | 7 | 3 | 5 |

С замененным мин. элементом:
| 7 | 0 | 6 | 8 | 4 | 7 | 7 | 5 |
Сумма до 0: 7
--------------------------------
Process exited after 2.102 seconds with return value 0
Для продолжения нажмите любую клавишу . . .
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2019, 11:30

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вычислить сумму четных элементов одномерного массива до первого встреченного нулевого элемента
Вычислить сумму четных элементов одномерного массива до первого встреченного нулевого элемента.

Вычислить сумму чётных элементов одномерного массива до первого встреченного нулевого элемента
никак не могу понять

В каждой строке матрицы найти сумму элементов расположенных после первого нулевого элемента
Ввести матрицу A n*m, вывести её. В каждой строке найти сумму элементов расположенных после первого...

В каждой строке матрицы найти сумму элементов расположенных после первого нулевого элемента
Ввести матрицу A n*m, вывести её. В каждой строке найти сумму элементов расположенных после первого...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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