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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 71, средняя оценка - 4.61
hagron1
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 3
#1

Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента - C++

04.10.2010, 22:04. Просмотров 9362. Ответов 10
Метки нет (Все метки)

В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) номер минимального по модулю элемента массива;
2) сумму модулей элементов массива, расположенных после первого от-
рицательного элемента.
ПОМОГИТЕ, ЖЕЛАТЕЛЬНО СРОЧНО!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2010, 22:04     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента
Посмотрите здесь:

Найти сумму модулей элементов массива, расположенных после первого элемента, равного нулю C++
Найти сумму модулей элементов массива, расположенных после первого положительного C++
Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента C++
C++ Найти сумму модулей элементов массива, расположенных после минимального по модулю элемента
C++ Найти сумму модулей элементов массива, расположенных после минимального по модулю элемента
Найти сумму модулей элементов массива после первого элемента C++
C++ Найти сумму модулей элементов массива, расположенных после первого элемента, равного нулю
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
04.10.2010, 22:29     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента #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
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <functional>
 
using namespace std;
 
bool find_less_mod(int val1, int val2)
{
    return abs(val1)<abs(val2);
}
 
int sum_mod(int val1, int val2)
{
    return abs(val1)+abs(val2);
}
 
int main()
{
    const size_t n=6;
    int arr[n]{12, 2, -3, 15, -12, 4};
    size_t ind=min_element(arr, arr+n, find_less_mod)-arr;
    cout<<"Index of minimal element by modul: "<<ind<<endl;
    cout<<"Sum: "<<accumulate(find_if(arr, arr+n, bind2nd(less<int>(), 0))+1, arr+n, 0, sum_mod)<<endl;
    system("pause");
}
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
04.10.2010, 22:33     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента #3
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
#include <iostream>
#include <ctime>
using std::cout;
using std::cin;
using std::endl;
 
int main()
{
    srand(time(NULL)); 
    setlocale( LC_ALL,"Russian" );
    int size,i,min;
    int* mas;
    cout<<"Введите розмерность масива: ";
    cin>>size;
    mas = new int[size];
     for(i=0; i<size; i++)
     {
         mas[i]=rand()%9;
         cout<<mas[i]<<" ";
     }
     min = abs(mas[0]);
     for(i=0;i<size;i++)
     {
         if(abs(mas[i])<abs(min))
             min=i;
 
     }
     cout<<endl;
     cout<<"Minimum is "<<min<<"element";
     delete [] mas;
  return 0;
}
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
04.10.2010, 22:35     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента #4
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
#include <iostream>
#include <conio.h>
#include <math.h>
 
using namespace std;
 
void main()
{
    int i,n,i_min,min,ot,s=0;
    cout<<"  N=";
    cin>>n;
    int *a=new int [n];
    cout<<"\n  Enter elements: ";
     for(i=0;i<n;i++) cin>>a[i]; 
    i_min=0;
    min=abs(a[i]); 
     for(i=1;i<n;i++) 
      if(abs(a[i])<min) { min=a[i]; i_min=i; }
     for(i=0;i<n;i++) 
      if(a[i]<0) { ot=i; break; }
     for(i=ot;i<n;i++) s+=abs(a[i]);
    cout<<"\n\n  i_min="<<i_min+1;
    cout<<"\n  S="<<s; 
    delete []a;    
    getch();
}
hagron1
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 3
04.10.2010, 22:39  [ТС]     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента #5
Эммм, а можно поподробней, что к чему
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
04.10.2010, 22:45     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента #6
Что именно не понятно???
hagron1
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 3
04.10.2010, 22:47  [ТС]     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента #7
Хм, какое решение к какой задаче, и если можно, толкование операторов
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
04.10.2010, 22:54     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента #8
Мое к двум

Добавлено через 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
#include <iostream>
#include <conio.h>
#include <math.h>
 
using namespace std;
 
void main()
{
    int i,n,i_min,min,ot,s=0;
    cout<<"  N=";
    cin>>n;
    int *a=new int [n];
    cout<<"\n  Enter elements: ";
     for(i=0;i<n;i++) cin>>a[i]; //ввод массива;
    i_min=0;
    min=abs(a[i]); 
     for(i=1;i<n;i++) 
      if(abs(a[i])<min) { min=a[i]; i_min=i; } //поиск минимального по модулю элемента массива;
     for(i=0;i<n;i++) 
      if(a[i]<0) { ot=i; break; } //поиск первого отрицательного элемента;
     for(i=ot;i<n;i++) s+=abs(a[i]); //сумма модулей элементов массива, расположенных после первого отрицательного элемента;
    cout<<"\n\n  i_min="<<i_min+1;
    cout<<"\n  S="<<s; 
    delete []a;    
    getch();
}
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
04.10.2010, 22:55     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента #9
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
#include <iostream>
#include <ctime>
using std::cout;
using std::cin;
using std::endl;
 
int main()
{
        srand(time(NULL)); 
    setlocale( LC_ALL,"Russian" );
        int size,i,min;//инициализация переменых
        int* mas;//инициализация указателя  
        cout<<"Введите розмерность масива: ";
        cin>>size;// ввод розмерности масива
        mas = new int[size];// выдиления памяти под масив 
         for(i=0; i<size; i++) // заполнение масива случайными числами
         {
                 mas[i]=rand()%9;
                 cout<<mas[i]<<" ";// вывод елемента масива
         }
         min = abs(mas[0]); // присвоение min первого елемента масива
         for(i=0;i<size;i++) // поиск минимального елемента
         {
                 if(abs(mas[i])<abs(min)) //если елемент по модулю менше минимума
                         min=i; // присвоить минимуму номер елемента масива
 
         }
         cout<<endl; 
         cout<<"Minimum is "<<min<<"element";// вывод номера минимального елемента
         delete [] mas; // очищение памяти
  return 0;
}
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
04.10.2010, 23:04     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента #10
Позволю себе прокомментить код gooseim-а.

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
#include <iostream>
#include <cstdlib>
#include <algorithm>//Стандартные алгоритмы
#include <cmath>
#include <functional>//Функторы
#include <numeric> //Для accumulate
 
using namespace std;
 
bool find_less_mod(int val1, int val2)//Функция сравнения по модулю
{
    return abs(val1)<abs(val2);//Если модуль val1 меньше модуля val2 вернем 1, если нет - 0
}
 
int sum_mod(int val1, int val2)//Функция суммы по модулю
{
    return abs(val1)+abs(val2);//Возвращаем сумму модулей элементов
}
 
int main()
{
    const size_t n=6;//Размер
    int arr[n]{12, 2, -3, 15, -12, 4};
    size_t ind=min_element(arr, arr+n, find_less_mod)-arr;//Ищем минимальный по подулю элемент
//с помощью стандартного алгоритма min_element, после чего вычитаем из него адрес указателя
//на массив, получаем порядковый номер в массиве минимального по модулю элемента
    cout<<"Index of minimal element by modul: "<<ind<<endl;//Пишем это
    //Считаем сумму через accumulate. Первый параметр стандартный алгоритм find_if
//который ищет первый элемент меньше нуля, прибавляем к значению 1, получаем
//указатель на следующий за первым элементом больше нуля.
//От этого указателя до указателя на конец массива, складываем элементы массива функцией
//сумма по модулю.
    cout<<"Sum: "<<accumulate(find_if(arr, arr+n, bind2nd(less<int>(), 0))+1, arr+n, 0, sum_mod)<<endl;
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2010, 23:46     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента
Еще ссылки по теме:

C++ Вычислить номер минимального по модулю элемента и сумму модулей элементов, расположенных после первого отрицательного
Вычислить сумму модулей элементов массива, расположенных после первого нулевого элемента C++
C++ Вычислить сумму модулей элементов массива, расположенных после первого элемента, равного нулю
C++ Найти сумму элементов, расположенных до первого отрицательного элемента
Найти номер минимального по модулю элемента массива и сумму модулей после первого отрицательного элемента C++

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.10.2010, 23:46     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента #11
вторая:
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 <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define SIZE 10
 
int main()
{
    int i = 0;
    int sum = 0;
    int values[SIZE];
    
    for(i = 0; i < SIZE; ++i)
        values[i] = rand() % 9 - rand() % 9;
    
    for(i = 0; i < SIZE && values[i] > 0; ++i);
    for(i = i + 1; i < SIZE; ++i)
        sum += abs(values[i]);
    
    for(i = 0; i < SIZE; ++i)
        printf("%d ", values[i]);
    printf("\nsum: %d\n", sum);
    
    return 0;
}
Yandex
Объявления
04.10.2010, 23:46     Найти сумму модулей элементов массива, расположенных после первого отрицательного элемента
Ответ Создать тему
Опции темы

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