Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] одномерный массив


Автор: Dima2 3.11.2009, 23:47
помогите составить одномерный массим из n элементов и определить сумму всех отрицательных элементов массива.

Автор: Belirafor 3.11.2009, 23:55
Так тебе друг никто не поможет. Выложи, то что ты сумел сделать, а там люди посмотрят и помогут советом smile 

Автор: bsa 4.11.2009, 00:04
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: Adre 4.11.2009, 08:28
Код

#include <iostream>
using namespace std;
void main()
{
    int n=10;
    int* p=new int[n];
    for (int i=0; i<n; i++)
        cin >> p[i];
    int sum=0;
    for (int i=0; i<n; i++)
        if(p[i]<0)
            sum+=p[i];
    cout << sum << endl;
}

Автор: azesmcar 4.11.2009, 08:44
Код

#include <iostream>
#include <functional>
#include <numeric>

struct negative_plus : std::binary_function<int, int, int>
{
    int operator()(int total, int v) {
        return total + (v < 0 ? v : 0);
    }
};

int main() {
    int num[] = {10, 11, -5, -7, 5, 31, -1, 0, 8};

    std::cout
        << std::accumulate(num, num + sizeof(num) / sizeof(num[0]), 0, negative_plus())
        << std::endl;
}

Adre

1. void main() неправильно, main должен возвращать int по правилам языка.
2. зачем две итерации? сумму можно считать уже во время ввода
3. delete [] не забыл? smile 

Автор: Dima2 4.11.2009, 14:17
спасибо ограмадное)

Автор: Adre 4.11.2009, 14:20
azesmcar,

1. В данном случае все равно, это значение нигде не нужно. И с void все прекрасно работает.
2. Конечно можно, но по-мoему так понятней.  Человек одномерный массив создать и обойти не может, а ты ему простую задачку с объектами функций сделал.
3. Да, забыл, сейчас java прохожу, там все само утилизируется.

И массив на n элементов  smile  

Автор: azesmcar 4.11.2009, 14:27
Цитата(Adre @  4.11.2009,  14:20 Найти цитируемый пост)
В данном случае все равно, это значение нигде не нужно. И с void все прекрасно работает.

Этот код непереносимый, работать он будет скорее всего только в Visual Studio, других компиляторов, разрешающих void main я во всяком случае не видел. Желательно избавиться от этой привычки.

Цитата(Adre @  4.11.2009,  14:20 Найти цитируемый пост)
2. Конечно можно, но по-мoему так понятней.  Человек одномерный массив создать и обойти не может, а ты ему простую задачку с объектами функций сделал.

Кому как smile 

Цитата(Adre @  4.11.2009,  14:20 Найти цитируемый пост)
3. Да, забыл, сейчас java прохожу, там все само утилизируется.

знаем..есть такая буква smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)