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

Заменить нулями все положительные элементы массива, идущие после минимального элемента

31.10.2019, 20:10. Показов 3955. Ответов 13
Метки нет (Все метки)

Решить задачу для динамического массива, не используя
индексацию. В одномерном массиве заменить нулями все
положительные элементы, идущие после минимального
элемента массива. Вывести адреса элементов исходного
массива, расположенных внутри интервала [a, b].

 Комментарий модератора 
П.5.16.Правил
Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2019, 20:10
Ответы с готовыми решениями:

В массиве A=(a1, а2, ., an) удалить все положительные элементы, имеющие четный порядковый номер, идущие после минимального элемента массива
В массиве A=(a1, а2, ..., an) удалить все положительные элементы, имеющие четный порядковый номер,...

Массив. Удалить все положительные элементы, имеющие четный порядковый номер, идущие после минимального элемента массива
11. В массиве A=(a1, а2, ..., аn) удалить все положительные элементы, имеющие четный порядковый...

Заменить единицами все положительные элементы массива имеющие четный номер и идущие после максимального
Задан массив из k чисел. Заменить единицами все положительные элементы, имеющие четный порядковый...

Все элементы массива, стоящие после минимального, заменить нулями
Все элементы массива, стоящие после минимального, заменить нулями Написал программу. Но не пашет....

13
0 / 0 / 0
Регистрация: 12.05.2018
Сообщений: 72
31.10.2019, 21:31 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
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    vector<int> a;
    cout << "Введите размер массива \n";
    int n, e;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> e;
        a.push_back(e);
    }
    vector<int>::iterator it = find(a.begin(), a.end(), *min_element(a.begin(), a.end()));
    int index = distance(a.begin(), it);
    for (int i = index + 1; i < n; i++)
        a.at(i) > 0 ? a.at(i) = 0 : 1;
    for (int i = 0; i < n; i++)
        cout << a.at(i) << " ";
    return 0;
}
Вот такое получилось решение. Не знаю,нужно ли был вам вводить значение размера массива,но все же..
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
31.10.2019, 21:40  [ТС] 3
Вывести адреса элементов исходного
массива, расположенных внутри интервала [a, b].
Как ещё сделать, чтоб это работало?

Добавлено через 4 минуты
Никогда не делал задания через вектор и алгоритм , а это задание можно через стандартные библиотеки выполнить?
0
0 / 0 / 0
Регистрация: 12.05.2018
Сообщений: 72
31.10.2019, 21:41 4
Адрес, в смысле адрес ячейки памяти,в которой хранится элемент?
На счет "стандартных библиотек",как вы их обозвали.Вы сами указали,что хотите,чтобы было решено БЕЗ индексации ( как я понял,без a[i] )
И еще : в с++ ДИНАМИЧЕСКИЙ массив - это и есть vector. Если вы считаете,что массив,обьявленный,например,как int a[10] является ДИНАМИЧЕСКИМ, то у меня для вас плохие новости.
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
31.10.2019, 21:47  [ТС] 5
Решить задачу для динамического массива, не используя
индексацию. В одномерном массиве заменить нулями все
положительные элементы, идущие после минимального
элемента массива. Вывести адреса элементов исходного
массива, расположенных внутри интервала [a, b].
Вот так изначально задание звучит. Ну видимо да , в ячейке.

Добавлено через 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
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
 
#include <time.h>
 
#include<stdlib.h>
 
#include<locale.h>
 
#include <iomanip>
 
using namespace std;
 
int main()
 
{
 
setlocale(LC_ALL, "Rus");
 
int* pArr, N, i, sum, MinValue, MaxValue;
 
cout << "Введите количество элементов массива: ";
 
cin >> N;
 
pArr = new int[N];
 
srand(time(NULL));
 
for (i = 0; i < N; i++) {
 
*(pArr + i) = rand() % 29 - 14;
 
}
 
cout << endl;
 
cout << setw(24) << "Массив " << endl;
 
for (i = 0; i < N; i++) {
 
cout << *(pArr + i) << setw(4);
 
}
 
cout << endl << "\n";
 
MinValue = *(pArr + 0);
 
for (i = 1; i < N; i++) {
 
if (*(pArr + i) < MinValue) {
 
MinValue = *(pArr + i);
 
}
 
}
 
cout << "Минимальное значение элемента массива= " << MinValue << endl << "\n";
 
MaxValue = *(pArr + 0);
 
for (i = 1; i < N; i++) {
 
if (*(pArr + i) > MaxValue) {
 
MaxValue = *(pArr + i);
 
}
 
}
 
cout << "Максимальное значение элемента массива= " << MaxValue << endl << "\n";
 
sum = 0;
 
for (int i = 0; i < N; ++i) {
 
if (MinValue <= *(pArr + i) && *(pArr + i) <= MaxValue) {
 
sum += *(pArr + i);
 
}
 
}
 
cout << "Сумма элементов массива в диапазоне от мин. до макс. значения= " << sum << endl << "\n";
 
cout << "Адресса отрицательных элементов массива: " << endl;
 
for (int i = 0; i < N; i++) {
 
if (*(pArr + i) < 0) {
 
cout << setw(5) << "\n" << pArr + i << setw(3) << *(pArr + i);
 
}
 
}
 
cout << endl << "\n\n";
 
system("pause");
 
return (0);
 
}
Типо я вот код написал для другого задания , это тоесть неправильно?
Решить задачу для динамического массива, не используя
индексацию. Дана последовательность из N различных целых
чисел. Найти сумму ее членов, расположенных между
максимальным и минимальным значениями (в сумму включить
и оба этих числа). Вывести адреса отрицательных элементов
исходного массива.
Вот задание для этого кода.
0
0 / 0 / 0
Регистрация: 12.05.2018
Сообщений: 72
31.10.2019, 21:53 6
Моя ошибка, я забыл про new [],это также динамический массив,но все же vector лучше. Вот эта программа неправильно находит сумму членов, расположенных между максимальным и минимальным значениями.
И мне очень непонятно,зачем писать такой замудренный код с указателями,если все это можно было написать за 4 цикла : ввод элементов, нахождение максимального и минимального, нахождение суммы чисел между ними, вывод адреса отрицательных элементов.
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
31.10.2019, 21:59  [ТС] 7
Просто у меня задание на векторе не примут , в этом проблема. Там разные алгоритмы решения.

Добавлено через 1 минуту
Да я в любом случае не то задание сделал. Так что на него можете вообще не смотреть ,оно не нужно , надо задание которое в заголовке темы.
0
0 / 0 / 0
Регистрация: 12.05.2018
Сообщений: 72
31.10.2019, 22:11 8
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
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Введите кол-во элементов массива\n";
    int n;
    cin >> n;
    int *a = new int[n];
    for (int i = 0; i < n; i++)
        cin >> a[i];
    int max = a[0], min = a[0], nmin = 0, nmax = 0;
 
    for (int i = 1; i < n; i++)
        if (a[i] > max)
        {
            max = a[i];
            nmax = i;
        }
        else if (a[i] < min)
        {
            min = a[i];
            nmin = i;
        }
    int s = 0;
    if (nmin < nmax)
        for (int i = nmin; i <= nmax; i++)
            s += a[i];
    else
        for (int i = nmax; i <= nmin; i++)
            s += a[i];
    cout << "Min = " << min << " Max = " << max << endl;
    cout << "Сумма элементов между min и max = " << s << endl;
    cout << "Adress min =" << &min << " Address max = " << &max;
 
    return 0;
}
Вот это задание немного мною переделанное, код которого вы мне кинули.
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
31.10.2019, 22:22  [ТС] 9
Смотрите . Код который я кидал , он не нужен , я просто к примеру привёл как надо сделать.
Мне надо по такому же типу сделать задание вот это:
Решить задачу для динамического массива, не используя
индексацию. В одномерном массиве заменить нулями все
положительные элементы, идущие после минимального
элемента массива. Вывести адреса элементов исходного
массива, расположенных внутри интервала [a, b].
0
7422 / 5017 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
31.10.2019, 22:32 10
Цитата Сообщение от Translater757 Посмотреть сообщение
Решить задачу для динамического массива, не используя индексацию. В одномерном массиве заменить нулями все положительные элементы, идущие после минимального элемента массива.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, imin=0;
    cout << "n="; cin >> n;
 
    double*a = new double[n];
 
    for (int i = 0; i < n; i++)
      {
      *(a + i)=rand()%19 - 9;
      if (*(a + i)<*(a + imin)) imin=i;
      cout << *(a + i) << " ";
      }
    cout << "\n";
    
    for (int i = 0; i < n; i++)
    {
    if (i>imin && *(a + i)>0.) *(a + i)=0.;
    cout << *(a + i) << " ";
    }
    
    delete[]a;
system("pause");
return 0;
}
если потребуется инкрементировать указатель, сообщите
0
0 / 0 / 0
Регистрация: 12.05.2018
Сообщений: 72
31.10.2019, 22:32 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Введите кол-во элементов массива\n";
    int n;
    cin >> n;
    cout << "Введите значения a и b\n";
    int a1, b1;
    cin >> a1 >> b1;
 
    int* a = new int[n];
    cout<<"Введите значение массива\n";
    for (int i = 0; i < n; i++)
        cin >> a[i];
    int max = a[0], min = a[0], nmin = 0, nmax = 0;
 
    for (int i = 1; i < n; i++)
        if (a[i] > max)
        {
            max = a[i];
            nmax = i;
        }
        else if (a[i] < min)
        {
            min = a[i];
            nmin = i;
        }
    for (int i = a1; i <=b1; i++)
    {
        cout << &a[i] << " ";
    }
    cout<<'\n';
    int s = 0;
    if (nmin < nmax)
        for (int i = nmin; i <= nmax; i++)
            s += a[i];
    else
        for (int i = nmax; i <= nmin; i++)
            s += a[i];
    cout << "Min = " << min << " Max = " << max << endl;
    cout << "Сумма элементов между min и max = " << s << endl;
    cout << "Adress min =" << &min << " Address max = " << &max;
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
31.10.2019, 22:39  [ТС] 12
Так это же не то задание)
0
0 / 0 / 0
Регистрация: 12.05.2018
Сообщений: 72
31.10.2019, 22:43 13
Лучше сразу формулируй свой вопрос ясно, т.к. на тебя мало кому интересно тратить свое время
0
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 51
31.10.2019, 23:03  [ТС] 14
Решить задачу для динамического массива, не используя
индексацию. В одномерном массиве заменить нулями все
положительные элементы, идущие после минимального
элемента массива. Вывести адреса элементов исходного
массива, расположенных внутри интервала [a, b].
Мне вот это надо . А вы сумму искали.

Добавлено через 1 минуту
Ну мы просто не допоняли друг друга изначально.

Добавлено через 18 минут
Решить задачу для динамического массива, не используя
индексацию. В одномерном массиве заменить нулями все
положительные элементы, идущие после минимального
элемента массива. Вывести адреса элементов исходного
массива, расположенных внутри интервала [a, b].
Мне это надо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2019, 23:03
Помогаю со студенческими работами здесь

Заменить все положительные элементы массива на значение минимального элемента
Заменить все положительные элементы целочисленного массива размера 10 на значение минимального,...

Заменить все положительные элементы целочисленного массива на значение минимального
Заменить все положительные элементы целочисленного массива размера 10 на значения минимального

Заменить все положительные элементы целочисленного массива на значение минимального
пожалуйста, помогите решить задачку на турбо си. заменить все положительные|отрицательные элементы...

Указатели: заменить все положительные элементы целочисленного массива на значение минимального
Заменить все положительные элементы целочисленного массива размера 10 на значение минимального....


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

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

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