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

Динамический массив - C++

Восстановить пароль Регистрация
 
stealth.Delux
1 / 1 / 0
Регистрация: 30.10.2010
Сообщений: 10
02.12.2010, 22:17     Динамический массив #1
Пожалуйста, помогите с программой. Нужно создать динамический массив, найти количество отрицательных элементов массива. Затем найти сумму модулей элементов массива, расположенных после минимального по модулю элемента. Потом заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
02.12.2010, 22:58     Динамический массив #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
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
60
61
#include <stdio.h>
#include <malloc.h>
#include <math.h>
 
void _sort(int *Arr, int N)
{
    for(int i = N - 1; i >= 1; --i)
    {
        for(int j = 0; j < i; ++j)
        {
            if(Arr[j] > Arr[j+1])
               {
                   int temp = Arr[j];
                   Arr[j] = Arr[j+1];
                   Arr[j+1] = temp;
               }
        }
    }
}
 
int main(void)
{
    int N, *Arr, cnt = 0, index = 0, sum = 0;
    printf("Enter N: \n-> ");
    scanf("%d", &N);
    Arr = (int*)malloc(N*sizeof(int));
 
    printf("Enter elements of array: \n");
    for(int i = 0; i < N; ++i)
    {
        printf("%d -> ", i);
        scanf("%d", &Arr[i]);
    }
 
    for(int i = 0; i < N; ++i)
    {
        if(Arr[i] < 0)
            ++cnt;
        else if(Arr[index] > abs(Arr[i]))
            index = i;
    }
 
    for(int i = index+1; i < N; ++i)
        sum += abs(Arr[i]);
 
    for(int i = 0; i < N; ++i)
        if(Arr[i] < 0)
            Arr[i] = pow(Arr[i], 2.0);
 
    _sort(Arr, N);
 
    printf("Koluchectvo otrucatelnux elementov: %d\n", cnt);
    printf("Suma po modyly pocle min po modyly elementa: %d\n", sum);
    printf("Array: ");
 
    for(int i = 0; i < N; ++i)
        printf("%d ", Arr[i]);
 
    free(Arr);
    return 0;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
02.12.2010, 23:20     Динамический массив #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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <cmath>
#include <numeric>
#include <algorithm>
#include <functional>
#include <iterator>
 
bool min_comp(int first, int second)
{
    return abs(first) < abs(second);
}
 
int abs_sum(int first, int second)
{
    return abs(first)+abs(second);
}
 
int main()
{
    int* Arr;
    int n;
    std::cout<<"Enter n: ";
    std::cin>>n;
    Arr=new int[n];
    for(int i=0; i<n; ++i)
        std::cin>>Arr[i];
    int cnt=std::count_if(Arr, Arr+n, std::bind2nd(std::less<int>(), 0));
    int* p=std::min_element(Arr, Arr+n, min_comp);
    int sum=std::accumulate(p, Arr+n, 0, abs_sum);
    std::cout<<"Numb of negative elements: "<< cnt <<'\n';
        std::cout<<"Min abs element is: "<< abs(*p) <<'\n';
    for(int i=0; i<n; ++i)
    {
        if(Arr[i] < 0)
            Arr[i]*=Arr[i];
    }
    std::cout<<"Sum of abs values after min is: "<< sum <<'\n';
    std::cout<<"Transformed array\n";
    std::copy(Arr, Arr+n, std::ostream_iterator<int>(std::cout, " "));
    std::cout<<'\n';
    delete[] Arr;
    return 0;
}
stealth.Delux
1 / 1 / 0
Регистрация: 30.10.2010
Сообщений: 10
03.12.2010, 22:26  [ТС]     Динамический массив #4
asics, ForEveR большое вам спасибо!
Yandex
Объявления
03.12.2010, 22:26     Динамический массив
Ответ Создать тему
Опции темы

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