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

Определить номер минимального элемента массива

06.12.2019, 23:26. Показов 2362. Ответов 4
Метки нет (Все метки)

В одномерном массиве, состоящей из n вещественных элементов, вычислить:
1) номер минимального элемента массива;
2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами.
3) Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом - все остальные.

 Комментарий модератора 
П.5.16.Правил
Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.


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
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <locale> 
 
using namespace std;
 
double minElem(double *arr, int n);
double summElem(double *arr, int n);
 
int main() {
    int n = 0;
    
    setlocale(0, "rus");
    srand((unsigned)time(NULL));
 
    cout << "Введите количество элементов: ";
    cin >> n;
 
    double *arr = new double [n];
    
    for(int i = 0; i < n; i++) {
         arr[i]=rand() % 20 - 10;
        cout << " [" << i << "] = ";
        cout << arr[i];
    }
    cout << "\n Минимальный элемент: " << minElem(arr, n) << endl;
    cout << "\n Сумма элементов: " << summElem(arr, n) << endl;
    delete [] arr;
    
    system("PAUSE");
    return 0;
}
 
double minElem(double *arr, int n) 
{
    double min = arr[0];
 
    for(int i = 1; i < n; i++) {
        if(arr[i] < min)
            min = arr[i];
    }
    return min;
}
 
double summElem(double *arr, int n)
{
    double summ = 0.0;
    bool flag = false;  // Флаг
    int begin = 0;
    int end = 0;    
 
    for(int i = 0; i < n; i++) {
        if(arr[i] < 0 && !flag) {
            begin = i;
            flag = true;
        }
        else if(arr[i] < 0 && flag) {
            end = i;
            break;
        }
    }
    
    for(int i = begin + 1; i < end; i++) {
        summ += arr[i];
    }
    return summ;
}
Первые 2 подпункта сделаны, все работает. Помогите пожалуйста сделать 3 подпункт
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2019, 23:26
Ответы с готовыми решениями:

Определить номер минимального элемента массива
Доброй ночи, это снова я. помогите решить задачу. В одномерном массиве, состоящем из n...

Определить порядковый номер минимального элемента массива
Создайте одномерный массив из 10 чисел. Выведите его на экран. Определите порядковый номер...

Для каждой заданной матрицы определить местоположение (номер строки и номер столбца) минимального элемента
Даны массивы А, В, С. Для каждого определить местоположение (номер строки и номер столбца)...

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

4
3888 / 2813 / 651
Регистрация: 08.06.2007
Сообщений: 9,569
Записей в блоге: 4
07.12.2019, 02:03 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void exchangeElem(double *arr, int n)
{
    int i, j, f, temp;
 
    for(i = 0; i < n; i++) {
        if(fabs(arr[i]) > 1.0) {
            f = -1;
            for(j = i+1; j < n; j++) {
                if(fabs(arr[j]) <= 1.0) {
                    f = j;
                    break;
                }
            }
            if(f == -1) break;
            else {
                temp = arr[i];
                arr[i] = arr[f];
                arr[f] = temp;
            }
        }
    }
}
0
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
07.12.2019, 02:06 3
Лучший ответ Сообщение было отмечено nobs_rozhead как решение

Решение

Цитата Сообщение от nobs_rozhead Посмотреть сообщение
все работает
только считает не то что требуется. Вам нужен не min, а его номер:
C++
1
2
3
4
5
6
7
double NumberMin(double *arr, int n) 
{
    int imin=0;
    for (int i=1; i<n; i++)
    if (a[i]<a[imin]) imin=i;
    return imin+1;
}
для пункта 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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, k=0;
    cout << "n="; cin >> n;
    double*a = new double[n];
 
    for (int i = 0; i < n; i++)
        {
        a[i]=0.1*(rand()%101 - 50);
        cout << a[i] << " ";
        }
    cout << "\n";     
      
    for (int i = 0; i < n; i++)
        if (fabs(a[i])<=1.)
        {
            for (int j = i; j > k; j--) 
            swap(a[j],a[j-1]);
            k++;
        }
        
    for (int i = 0; i < n; i++)
      cout << a[i] <<" ";
      cout << "\n";
 
     delete[]a;
system("pause");
return 0;
}
0
30 / 21 / 9
Регистрация: 29.10.2019
Сообщений: 79
07.12.2019, 02:30 4
А элементы должны сохранять последовательность, типа просто сдвиг? Или главное - чтобы слева были с модулем<=1, неважно в каком порядке?

Если неважно, то может как то возрастание использовать. Или так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cmath>
#include <algorithm>
int main(){
    int n=10;
    int arr[10]{1,4,1,-1,0,9,1,6,8,1};
int leftIndex{0};
 
    for(int i = 0; i < n; i++)
 {
    if(fabs(arr[i])<=1)
 {std::swap(arr[i],arr[leftIndex]);++leftIndex;}
    }           
    for(auto &ref:arr)
    std::cout<<ref<<" ";
 
    return 0;}
Если важно, то пузырьковая сортировка наверное, времени нет.
0
0 / 0 / 0
Регистрация: 24.10.2017
Сообщений: 47
07.12.2019, 05:17  [ТС] 5
все, спасибо, разобрался
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2019, 05:17
Помогаю со студенческими работами здесь

Определить номера минимального элемента массива и элемента, являющегося минимальным без учета этого элемента.
Дан массив. Определить номера минимального элемента массива и элемента, являющегося мини-мальным...

Найти номер минимального элемента массива
Одномерные Массивы Вариант 8 в одномерном массиве, состоящем из п вещественных элементов,...

Не выводится номер минимального элемента массива
Добрый вечер. Наверно лёгкая проблема, но у меня не получается её решить. Последовательно задана...

Найти номер минимального элемента массива
Рябят, помогите пожалуйста...просто очень срочно нужно.... С одномерным динамическим массивом,...


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

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

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