0 / 0 / 1
Регистрация: 16.03.2017
Сообщений: 16
1

Массивы. Найти минимальный по модулю элемент массива. Найти сумму модулей элементов после первого нуля

31.05.2017, 13:48. Показов 2702. Ответов 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
62
63
64
65
66
67
68
69
70
71
72
73
74
/*1. Найти минимальный по модулю элемент массива.
2. Найти сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
3. Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине — элементы, стоявшие в нечетных позициях*/
 
#include "stdafx.h"
#include <cstdio>
#include <iostream>
#include <cstdio>
 
#include <conio.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    const int e = 10;//инициализируем константу
 
    int H[e];//инициализируем массив он константы е
 
    for (int i = 0; i < e; i++)//запускаем цикл для ввода элементов массива
    {
        cout << "Введите элемент массива:";//выводим на экран сообщение
        cin >> H[i];//ввод i-того элемента массива с клавиатуры
    }
 
    int min;//инициализируем перменную min как минимальное значение элемента массива
 
    min = abs(H[0]);//присваем значение минимального по модулю элеменат массива
 
    for (int i = 0; i < e; i++)//цикл для прогона всего массива,если какой-то элемент будет меньше чем min
    {
         if (H[i] < min)
       {
               min = H[i];//присваивание нового минимального элемента массива(если есть)
       }
    }
 
           for (int i = 0; i < e; i++)//цикл на проверку по модулю
          {
              if (abs(H[i]) < min)
              {
            min = abs(H[i]);
              }
        
          }
    cout << min << " минимальный элемент массива" << endl;
 
    /*Найти сумму модулей элементов массива, расположенных после первого элемента, равного нулю.*/
 
    int firstzero = 0, summa = 0;//инициальзируем первый нулевой элемент и переменная суммы
 
    for (int i = 0; i<e; i++)//цикл для поиска првого нулевого элемента массива
        if (H[i] == 0)//если i-ый элемент массива равен нулю
          {
            firstzero = i;//тто в переменную firstzero записывается значение элемента
            break;//завершение цикла
          }
             for (int i = firstzero; i<e; i++)//цикл для суммы элементов массива
               summa += abs(H[i]);
               cout <<"Сумма модулей элементов массива,после первого равного нулю=:"<< summa<<endl;
 
    /*Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине — элементы, стоявшие в нечетных позициях*/
 
    int i=0, j=0,k=0, chet[e], nechet[e];//инициализирую еще два массива,что бы в один записать четные в другой не четные
 
      for (int i = 0;  i < e; i++)
         if (((i % 2) - 1) == 0)
             {
             chet[e] = H[i];
             
             }
         cout << chet[e];
 
    _getch();
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2017, 13:48
Ответы с готовыми решениями:

Найти минимальный элемент массива среди положительных элементов, расположенных левее первого нуля
Дан целочисленный вектор A(n). Найти минимальный элемент среди положительных элементов,...

Найти сумму модулей элементов массива, расположенных после минимального по модулю
Добрый вечер! :) Столкнулся с непреодолимой для себя задачей на данный момент. Очень нужна ваша...

Найти сумму модулей элементов массива, рассположенных после минимального по модулю элемента
Здравствуйте помогите мне пожалуйста с лабораторкой на тему одномерные массивы. вот задание: В...

Найти сумму модулей элементов массива, расположенных после минимального по модулю элемента
в одномерном массиве {3.24, -7.16, 2.28, -0.16, -3.22, 7.14, 2.88, -3.20, 0.99, -4.15} найти сумму...

2
Заблокирован
31.05.2017, 19:13 2
Цитата Сообщение от Sergeev88 Посмотреть сообщение
C++
1
for(int i = 0; i < e; i++)  //цикл на проверку по модулю
- вот тут нужно с первого элемента начать сравиение, хотя и такой код допускается.

Добавлено через 2 минуты
Цитата Сообщение от Sergeev88 Посмотреть сообщение
C++
1
int firstzero = 0, summa = 0;  //инициализируем первый нулевой элемент и переменная суммы
- присвой первоначальное значение переменной firstzero = e + 1; и тогда получишь возможность контролировать есть ли 0 вообще или его нет. Или е тут даже подойдет.

Добавлено через 1 минуту
Потом еще нужно будет добавить условие, типа такого:
C++
1
2
if(firstzero != (e+1))
    //тогда находим сумма после первого нуля
Добавлено через 2 минуты
Цитата Сообщение от Sergeev88 Посмотреть сообщение
C++
1
int i=0, j=0,k=0, chet[e], nechet[e];//инициализирую еще два массива,что бы в один записать четные в другой не четные
- для экономии памяти можно завести эти массивы размером ((e/2)+1).

Добавлено через 5 минут
Цитата Сообщение от Sergeev88 Посмотреть сообщение
C++
1
2
3
4
5
6
for(int i = 0; *i < e; i++)
* * if(((i % 2) - 1) == 0)
* * {
* * * * chet[e] = H[i];
    }
cout << chet[e];
- вот этот код нужно переписать вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int i, n1 = 0, n2 = 0;
 
for(i = 0; *i < e; i++)
* * if(i%2)
* * {//нечетное
* * * * chet[n1] = H[i];
        n1++;
    }
    else
    {//четное   
         nechet[n2] = H[i];
         n2++;
    }
for(i = 0; i < n1; i++)
    H[i] = chet[i];
for(i = n1; i < (n1+n2); i++)
    H[i] = nechet[i];
- код не компилировал, но Вы все-равно попробуйте, может что-нибудь и получиться.
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
01.06.2017, 12:06 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <vector>
#include <algorithm>
#include <cmath>
#include <numeric>
#include <iterator>
#include <iostream>
 
int main()
{
    std::vector <int> v { 5, 4, -2, -10, 0, 4, 8, 3, 99, -9, -5, -2 };
    std::cout << " Min. element on modul = " << *std::min_element(v.cbegin(), v.cend(), [](const auto x, const auto y)
    {return std::abs(x) < std::abs(y); });
    std::cout << std::endl;
    std::vector <int>::iterator it;
    it = std::find(v.begin(), v.end(), 0);
    int it1 = std::distance (v.begin(),it);
    std::cout << " Summa elements on modul after 0 = " << std::accumulate(v.cbegin() + it1, v.cend(), 0,
        [](auto x,auto y) { return x += abs(y); });
    std::cout << std::endl;
    system("pause");
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2017, 12:06
Помогаю со студенческими работами здесь

Найти сумму модулей элементов массива, расположенных после минимального по модулю элемента
Дан целочисленный массив размера n. Нужно: Найти сумму модулей элементов массива, расположенных...

Найти сумму модулей элементов массива, расположенных после минимального по модулю элемента
решите задачи по делфи пожалуйста 2.Дан одномерный целочисленный массив. Найти сумму модулей...

Найти сумму модулей элементов массива, расположенных после минимального по модулю элемента
Помогите, пожалуйста, решить задачу. В одномерном массиве, состоящем из n вводимых с клавиатуры...

Найти сумму модулей элементов массива, расположенных после минимального по модулю элемента
Помогите пожалуйста с написанием программы!Вот условие : Найти сумму модулей элементов массива,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru