Форум программистов, компьютерный форум CyberForum.ru

Удвоенная сумма положительных элементов массива - C++

Восстановить пароль Регистрация
 
Liquil
 Аватар для Liquil
213 / 198 / 31
Регистрация: 04.12.2013
Сообщений: 883
07.12.2013, 12:49     Удвоенная сумма положительных элементов массива #1
Добрый день,есть такое задание:
Даны натуральное число n и действительные числа a1...an. Получить удвоенную сумму всех положительных членов последовательности. Написал я программу, но выводит почему-то всегда 0. Подскажите, в чем недочет.
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
#include <cstdlib>
#include <iostream>
#include <stdlib.h>
 
 
using namespace std;
 
float amount(float*, int);
main()
  {int N,i; float *mas, S;
    printf("opr dl mas:");
    scanf("%d",&N);
    mas=(float*) malloc (sizeof (int)*N);
    printf("Input %d elements\n",N);
    for (i=0; i<N; i++) scanf("%d",&mas[i]);
    S=amount(mas,N);
    printf("amount=%.2f \n", S);
    system("PAUSE");
    return EXIT_SUCCESS;
   }
   
 float amount(float*mas, int N)
{   int a; 
    float b;
    b=0.;
    for (a=0; a<N; a++)
     if (mas[a]>0.) b=b+2*mas[a];
     return b;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2013, 12:49     Удвоенная сумма положительных элементов массива
Посмотрите здесь:

Составить программу, в которой вычислить z=(s1+s2)/(k1*k2), где s1 и k1 - сумма и количество положительных элементов массива Х[N]; s1 u k2 - сумма C++
C++ сумма положительных и отрицательных по модулю элементов массива.
Сумма положительных элементов, произведение элементов массива C++
C++ сумма положительных элементов
C++ Сумма положительных элементов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RQdan
65 / 65 / 17
Регистрация: 26.10.2013
Сообщений: 198
07.12.2013, 14:26     Удвоенная сумма положительных элементов массива #2
Цитата Сообщение от Liquil Посмотреть сообщение
mas=(float*) malloc (sizeof (int)*N);
наверно ошибка здесь.
Надо выделять память под float тип, а не int.
Проверьте, какие элементы находятся в массиве после ввода.

Добавлено через 4 минуты
Цитата Сообщение от Liquil Посмотреть сообщение
for (i=0; i<N; i++) scanf("%d",&mas[i]);
%d - это ввод целых чисел, а не действительных. Для последних, кажется, %а
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
07.12.2013, 14:36     Удвоенная сумма положительных элементов массива #3
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
#include <iostream>
#include <random>
#include <vector>
 
int main()
{
    std::default_random_engine generator;
    std::uniform_int_distribution <> distribution(-10, 10);
 
    size_t vectorSize;
    std::cout << "N: ";
    std::cin >> vectorSize;
 
    size_t resultSum(0);
    std::vector <int> vector(vectorSize);
    std::cout << "Vector: " << std::endl;
    for (auto &iterator: vector) {
        std::cout << (iterator = distribution(generator)) << " ";
        resultSum += (iterator > 0) ? iterator : 0;
    }
    std::cout << std::endl << "Result: " << (resultSum * 2) << std::endl;
 
    std::system("pause");
    return 0;
}
Liquil
 Аватар для Liquil
213 / 198 / 31
Регистрация: 04.12.2013
Сообщений: 883
07.12.2013, 15:14  [ТС]     Удвоенная сумма положительных элементов массива #4
Цитата Сообщение от RQdan Посмотреть сообщение
наверно ошибка здесь.
Надо выделять память под float тип, а не int.
Проверьте, какие элементы находятся в массиве после ввода.

Добавлено через 4 минуты

%d - это ввод целых чисел, а не действительных. Для последних, кажется, %а
спасибо, достаточно было исправить тип данных при считывании массива
Yandex
Объявления
07.12.2013, 15:14     Удвоенная сумма положительных элементов массива
Ответ Создать тему
Опции темы

Текущее время: 01:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru