Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Заменить все элементы, стоящие перед первым отрицательным элементом, на сумму отрицательных элементов - C++

10.10.2016, 14:15. Просмотров 241. Ответов 16
Метки нет (Все метки)

Доброго времени суток, форумчане. Надысь задали мне контрольную работу по С++, но вот беда: язык я этот не учил никогда.
Кое-какие части работы я сделал и вот остались только две непокоренные вершины: "Вывод массива в строку"(пробовал по разному,но получается какая-то белиберда) и "Заменить все элементы, стоящие перед первым отрицательным элементом, на сумму отрицательных элементов". Заранее спасибо!

З.Ы. Стыдно, конечно, за незнание, а что поделать?

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 "stdafx.h"
#include <stdio.h>
#include <Windows.h>
#include <iostream>
#include <iomanip>
using namespace std;
#define L 100
 
int main()
{
    setlocale(LC_ALL, "rus");
    int n, max = -100000000, min = 100000000;
    int i;
    float mas[50], sum = 0;
    cout << "Введите количество эл-тов массива:\n";
    cin >> n;
    cout << "Введите числа для массива:\n"; {
        for (i = 0; i < n; i++)
            cin >> mas[i]; }
    cout << "Первый отрицательный элемент массива: "; {
        for (i = 0; i < n && mas[i] >= 0; i++);
        if (i < n) 
        cout << mas[i] << endl; }
        for (i = 0; i < n; i++){
        if (mas[i] < 0)
            sum += mas[i]; }
    cout << "Cумма отрицательных элементов = " << sum << endl;
        system("pause");
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2016, 14:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заменить все элементы, стоящие перед первым отрицательным элементом, на сумму отрицательных элементов (C++):

Получить разницу между первым элементом последовательности и числом, стоящим перед первым отрицательным - C++
Даны действительные числа а1, а2, .... Известно, что а1&gt; 0 и что среди а2, а3, ... есть хотя бы одно отрицательное число. Пусть a1, ..., an...

Вычислить сумму элементов массива, расположенных за первым отрицательным элементом - C++
Вот задача нужно решить - С++. Не могу решить, не получается, помогите пожалуйста. Вычислить сумму элементов массива С(25),...

Найти сумму элементов массива, находящихся между первым и последним отрицательным элементом - C++
В целочисленном массиве из 20 ти элементов, найти сумму элементов, находящихся между первым и последним отрицательным элементом.Массив...

В целочисленном массиве вставить новый элемент перед первым отрицательным элементом - C++
В одномерном массиве, элементы которого - целые числа, произвести следующие действия. Вставить новый элемент перед первым отрицательным...

Задача с массивом, нужно найти сумму элементов которые находятся перед последним отрицательным элементом - C++
Получить b1,…,bn, где bi - сумма элементов , которые находятся перед последним отрицательным элементом ( если все строки неотрицательные ,...

Однонаправленный связанный список (Вставить новый узел с нулевым значением перед первым отрицательным элементом...) - C++
Помогите выполнить задание: Тип информационной части узла списка - INT Вид списка - Однонаправленный связанный список ...

16
_SayHello
200 / 157 / 49
Регистрация: 30.07.2015
Сообщений: 717
10.10.2016, 14:55 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Dmitry_Trueno,
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
#include <iostream>
#include <locale>
using namespace std;
 
int main()
{
    setlocale(0, "");
    float mass[50];
    float summ = 0;
    cout << "Введите размер массива: ";
    int N;
    cin >> N;
    cout << "Введите элементы массива: " << endl;
    for (int i = 0; i < N; i++)
        cin >> mass[i];
    cout << "Исходный массив: " << endl;
    for (int i = 0; i < N; i++)
    {
        cout << mass[i] << ' ';
        if (mass[i] < 0)
            summ += mass[i];
    }
    cout << endl;
    for (int i = 0; i < N; i++)
    {
        if (mass[i] > 0)
            mass[i] = summ;
        else
            break;
    }
    cout << "Измененный массив:" << endl;
    for (int i = 0; i < N; i++)
        cout << mass[i] << ' ';
    cout << endl;
    system("pause");
    return 0;
}
1
Dmitry_Trueno
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 23
10.10.2016, 15:22  [ТС] #3
Цитата Сообщение от _SayHelli Посмотреть сообщение
Dmitry_Trueno,
C++
Благодарю. Теперь буду разбираться, что, откуда и куда
0
_SayHello
200 / 157 / 49
Регистрация: 30.07.2015
Сообщений: 717
10.10.2016, 15:25 #4
Dmitry_Trueno, ну спрашивайте если что
0
Dmitry_Trueno
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 23
10.10.2016, 16:20  [ТС] #5
Цитата Сообщение от _SayHelli Посмотреть сообщение
Dmitry_Trueno, ну спрашивайте если что
Если что, спрашиваю: при попытке соединить два кода(нужно по задаче чтоб все пункты были) что то идет не так: ошибок нет, но и значения совсем уехали
0
_SayHello
200 / 157 / 49
Регистрация: 30.07.2015
Сообщений: 717
10.10.2016, 16:22 #6
Dmitry_Trueno, ну хоть примеры кода выкиньте, чтобы было видно можете в личку
0
Dmitry_Trueno
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 23
10.10.2016, 16:30  [ТС] #7
Цитата Сообщение от _SayHelli Посмотреть сообщение
Dmitry_Trueno, ну хоть примеры кода выкиньте, чтобы было видно можете в личку
Да, конечно. Пытаюсь ковырять, но моих "паскальных" познаний не хватает от слова совсем
UPD: одна скобка уехала
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 "stdafx.h"
#include <iostream>
#include <locale>
    using namespace std;
 
    int main()
    {
        setlocale(0, "");
        float mass[50];
        float summ = 0;
        cout << "Введите размер массива: ";
        int N;
        int i;
        cin >> N;
        cout << "Введите элементы массива: " << endl; {
            for (int i = 0; i < N; i++)
                cin >> mass[i]; }
        cout << "Первый отрицательный элемент массива: "; {
            for (int i = 0; i < N && mass[i] >= 0; i++)
            if (i < N)
                cout << mass[i] << endl; }
        for (int i = 0; i < N; i++) {
            if (mass[i] < 0)
                summ += mass[i];
        }
        cout << "Cумма отрицательных элементов = " << summ << endl;
        cout << "Исходный массив: " << endl;
        for (int i = 0; i < N; i++)
        {
            cout << mass[i] << ' ';
            if (mass[i] < 0)
                summ += mass[i];
        }
        cout << endl;
        for (int i = 0; i < N; i++)
        {
            if (mass[i] > 0)
                mass[i] = summ;
            else
                break;
        }
        cout << "Измененный массив:" << endl;
        for (int i = 0; i < N; i++)
        cout << mass[i] << ' ';
        cout << endl;
        system("pause");
        return 0;
    }
0
_SayHello
200 / 157 / 49
Регистрация: 30.07.2015
Сообщений: 717
10.10.2016, 17:20 #8
Dmitry_Trueno, если не секрет, то какие вы задачи вы хотите добавить в тот код который я прислал ?
0
Dmitry_Trueno
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 23
10.10.2016, 17:29  [ТС] #9
Цитата Сообщение от _SayHelli Посмотреть сообщение
если не секрет, то какие вы задачи вы хотите добавить в тот код который я прислал ?
Абсолютно не секрет

Создать программу, обеспечивающую работу следующих пунктов меню.
1. Ввод массива целых чисел.
2. Вывод массива в строку.
3. Найти первый отрицательный элемент в массиве. Найти сумму отрицательных элементов. Заменить все элементы, стоящие перед первым отрицательным элементом, на сумму отрицательных элементов.
4. Конец работы.
0
_SayHello
200 / 157 / 49
Регистрация: 30.07.2015
Сообщений: 717
10.10.2016, 17:38 #10
Dmitry_Trueno, вот вроде все выполняется
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
#include <iostream>
#include <locale>
using namespace std;
 
int main()
{
    setlocale(0, "");
    int mass[50];
    int summ = 0;
    cout << "Введите размер массива: ";
    int N;
    cin >> N;
    cout << "Введите элементы массива: " << endl;
    for (int i = 0; i < N; i++)
        cin >> mass[i];
    cout << "Исходный массив: " << endl;
    for (int i = 0; i < N; i++)
    {
        cout << mass[i] << ' ';
        if (mass[i] < 0)
            summ += mass[i];
    }
    cout << endl;
    cout << "Сумма отрицательных элементов:" << summ << endl;
    for (int i = 0; i < N; i++)
    {
        if (mass[i] > 0)
            mass[i] = summ;
        else
        {
            cout << "Первый отрицательный элемент: " << mass[i] << endl;
                break;
        }
    }
    
    cout << "Измененный массив:" << endl;
    for (int i = 0; i < N; i++)
        cout << mass[i] << ' ';
    cout << endl;
    system("pause");
    return 0;
}
1
Dmitry_Trueno
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 23
10.10.2016, 17:43  [ТС] #11
Цитата Сообщение от _SayHelli Посмотреть сообщение
вот вроде все выполняется
Огромное спасибо, даже не знаю, что бы я без вашей помощи сделал
0
gru74ik
Модератор
Эксперт CЭксперт С++
4196 / 1844 / 198
Регистрация: 20.02.2013
Сообщений: 4,991
Записей в блоге: 22
10.10.2016, 18:49 #12
Dmitry_Trueno, как вариант:
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
// Заменить все элементы, стоящие перед первым отрицательным
// элементом, на сумму отрицательных элементов
 
#include <iostream>
#include <algorithm>
 
int main()
{
    typedef int Item;
 
    const size_t ARR_SIZE = 10;
    Item arr[ ARR_SIZE ] = { 12, 32, 14, 46, -5, 27, -8, 22, 33, -3 };
 
    auto arr_beg = arr;
    auto arr_end = arr + ARR_SIZE;
 
    Item sum{};
    for ( const auto & elem : arr )
        if ( elem < 0 )
            sum += elem;
 
    auto first_neg_elem =
        std::find_if
            (
                arr_beg,
                arr_end,
                []( Item x ) { return x < 0; }
            );
 
    for ( auto it = arr_beg; it != first_neg_elem; ++it )
        *it = sum;
 
    for ( const auto & elem : arr )
        std::cout << elem << " ";
 
    return 0;
}
3
Dmitry_Trueno
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 23
10.10.2016, 19:10  [ТС] #13
Цитата Сообщение от gru74ik Посмотреть сообщение
Dmitry_Trueno, как вариант:
Спасибо, но покамест для меня это сложно
0
gru74ik
Модератор
Эксперт CЭксперт С++
4196 / 1844 / 198
Регистрация: 20.02.2013
Сообщений: 4,991
Записей в блоге: 22
10.10.2016, 19:14 #14
Цитата Сообщение от Dmitry_Trueno Посмотреть сообщение
покамест для меня это сложно
Там всего четыре вопроса может возникнуть у новичка:
  1. что за typedef такой?
  2. что за странные циклы с каким-то auto?
  3. что за колдунство в строках 22-28?
  4. что за странный цикл в 30-й строке?

Dmitry_Trueno, давайте, спросите меня. Неужели Вам не любопытно?
1
Dmitry_Trueno
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 23
10.10.2016, 19:18  [ТС] #15
Цитата Сообщение от gru74ik Посмотреть сообщение
Там всего четыре вопроса может возникнуть у новичка:
что за typedef такой?
что за странные циклы с каким-то auto?
что за колдунство в строках 22-28?
что за странный цикл в 30-й строке?
Dmitry_Trueno, давайте, спросите меня. Неужели Вам не любопытно?
Так то оно так, но сможет ли мой мозг обработать все перечисленное.
0
10.10.2016, 19:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2016, 19:18
Привет! Вот еще темы с ответами:

Найти сумму чисел стоящих перед первым отрицательным числом последовательности - C++
Написать программу, которая находит сумму чисел, которые стоят перед первым отрицательным числом последовательности.

Сумма элементов между первым положительным элементом массива и последним отрицательным - C++
В одномерном целочисленном массиве( элементы массива генерируются случайным образом диапазоне от -100 до 100), подсчитать сумму элементов,...

Вычислить номер минимального элемента матрицы, а также сумму между первым и вторым отрицательным элементом - C++
Необходимо вычислить номер минимального элемента матрицы, а так же сумму между первым и вторым отрицательным элементом. Помогите...

Получить b1,…,bn, где bi – это сумма элементов, расположенных за первым отрицательным элементом в i-й строки - C++
пусть дано натуральное число n и целочисленная квадратная матрица порядка n. Получите b1,…,bn, где bi – это сумма элементов, расположенных...


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

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

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