Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 1
Регистрация: 27.06.2016
Сообщений: 37

Определить, сколько элементов между самым большим отрицательным числом и самым маленьким положительным

27.08.2016, 22:17. Показов 2437. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите в чем проблема!
Код определяет самое большое отрицательное число и самое маленькое положительное число, НО не отрабатывает кол-во между мини, а если отрабатывает ты дает не правильные числа!!!
Благодарен заранее!!!

Создать массив из 20 элементов, значение от - 50 до 26,
найти самое большое отрицательное число и самое маленькое положительное число,
определить сколько между ними элементов.

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
#include<iostream>
#include<time.h>
#include<stdlib.h>
 
using namespace std;
void main()
{
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
 
    const int size = 20;
    int array[size], number_of = 0;
    for (int i = 0; i < size; i++)
    {
        array[i] = rand() % (26 - (-50)) + (-50);
        cout << " array[" << i << "] = " << array[i] << "\n";
    }
    cout << "\n============================================================\n"
        << " Генерация псевдо-случайных чисел (от - 50 до 26) завершена. \n"
        << "\n============================================================\n";
    int max = array[0], min = array[0], max1 = 0, min1 = 0;
    for (int i = 0; i < size; i++)
    {
        if (array[i] > max)
        {
            max = array[i];
        }
        if (array[i] < min)
        {
            min = array[i];
        }
    }
    cout << " Минимальный элемент (min) = " << min << "\n"
        << " Максимальный элемент (max) = " << max << "\n"
        << "\n============================================================\n";
    for (int i = 0; i < size; i++)
        {
            cout << " array[" << i << "] = " << array[i] << "\n";
        }
    for (int i = 0; i < size; i++)
    {
        if (array[i] < 0 && array[i] < max1)
        {
            max1 = array[i];
            ///number_of++;
        }
    }
    for (int i = 0; i < size; i++)
    {
        if (array[i] > 0 && array[i] > min1)
        {
            min1 = array[i];
            //number_of++;
        }
    }
    for (int i = 0; i < size; i++)
    {
        if (array[i] > min1 && array[i] < max1)
        {
            number_of++;
        }
    }
 
    cout << "\n============================================================\n"
        << " Самое большое отрицательное число (- max) = " << max1 << "\n"
        << " Самое маленькое положительное число (+ min) = " << min1 << "\n"
        << "\n============================================================\n"
        << " Кол-во элементов между отрицательными и положительными = " << number_of << "\n"
        << "\n============================================================\n";
 
}
Добавлено через 4 минуты
Можете подсказать в чем проблема!?
Код определяет самое большое отрицательное число и самое маленькое положительное число,
НО не отрабатывает кол-во между мини, а если отрабатывает то дает не правильные числа!!!
Благодарен заранее!!!

Создать массив из 20 элементов, значение от - 50 до 26,
найти самое большое отрицательное число и самое маленькое положительное число,
определить сколько между ними элементов.

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
#include<iostream>
#include<time.h>
#include<stdlib.h>
 
using namespace std;
void main()
{
setlocale(LC_ALL, "rus");
srand(time(NULL));
 
const int size = 20;
int array[size], number_of = 0;
for (int i = 0; i < size; i++)
{
array[i] = rand() % (26 - (-50)) + (-50);
cout << " array[" << i << "] = " << array[i] << "\n";
}
cout << "\n============================================================\n"
<< " Генерация псевдо-случайных чисел (от - 50 до 26) завершена. \n"
<< "\n============================================================\n";
int max = array[0], min = array[0], max1 = 0, min1 = 0;
for (int i = 0; i < size; i++)
{
if (array[i] > max)
{
max = array[i];
}
if (array[i] < min)
{
min = array[i];
}
}
cout << " Минимальный элемент (min) = " << min << "\n"
<< " Максимальный элемент (max) = " << max << "\n"
<< "\n============================================================\n";
for (int i = 0; i < size; i++)
{
cout << " array[" << i << "] = " << array[i] << "\n";
}
for (int i = 0; i < size; i++)
{
if (array[i] < 0 && array[i] < max1)
{
max1 = array[i];
///number_of++;
}
}
for (int i = 0; i < size; i++)
{
if (array[i] > 0 && array[i] > min1)
{
min1 = array[i];
//number_of++;
}
}
for (int i = 0; i < size; i++)
{
if (array[i] > min1 && array[i] < max1)
{
number_of++;
}
}
 
cout << "\n============================================================\n"
<< " Самое большое отрицательное число (- max) = " << max1 << "\n"
<< " Самое маленькое положительное число (+ min) = " << min1 << "\n"
<< "\n============================================================\n"
<< " Кол-во элементов между отрицательными и положительными = " << number_of << "\n"
<< "\n============================================================\n";
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.08.2016, 22:17
Ответы с готовыми решениями:

Определить,сколько элементов массива располагается между самым большим и самым маленьким элементами являющимися простыми числами
Определить,сколько элементов массива располагается между самым большим и самым маленьким элементами являющимися простыми числами:wall:

Разница между самым большим числом и самым маленьким за определенный период
Сама задача: Посчитать разницу между самым большим числом и самым маленьким за определенный период, который вводит пользователь.

Есть три числа. Найти среднее среди них (то есть число которое лежит между самым большим и самым маленьким)
Сделайте пожалуйста задачу. Сама задача ниже: Есть три числа. Найти среднее среди них (то есть число которое лежит между самым большим и...

5
9 / 9 / 5
Регистрация: 06.01.2016
Сообщений: 55
29.08.2016, 02:55
Лучший ответ Сообщение было отмечено Semenov Alex как решение

Решение

Для вычисления количества элементов между двумя числами не нужен цикл. Достаточно написать
C++
1
number_of = max1 - min1 - 1;
1
0 / 0 / 1
Регистрация: 27.06.2016
Сообщений: 37
29.08.2016, 09:46  [ТС]
Спасибо, разобрался!!!
С помощью индекса тоже работает смотрю!
Как Вам, если так написать ?
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
                        const int size = 20;
            int array[size], number_of = 0;
            for (int i = 0; i < size; i++)
            {
                array[i] = rand() % (26 - (-50)) + (-50);
                cout << " array [" << i << "] = " << array[i] << "\n";
            }
            cout << "\n============================================================\n"
                << " Генерация псевдо-случайных чисел (от - 50 до 26) завершена. \n"
                << "\n============================================================\n";
            int max = array[0], min = array[0], index_min, index_max;
            for (int i = 0; i < size; i++)
            {
                if (array[i] < 0 && array[i] < max)
                {
                    max = array[i];
                    index_max = i;
                }
            }
            for (int i = 0; i < size; i++)
            {
                if (array[i] > 0 && array[i] > min)
                {
                    min = array[i];
                    index_min = i;
                }
            }
            if (index_min > index_max)
            {                         
                for (int i = index_max + 1; i < index_min; i++)
                {                  
                    number_of++;
                }
            }
            if (index_min < index_max)
            {                        
                for (int i = index_min + 1; i < index_max; i++)
                {                  
                    number_of++;
                }
            }
            for (int i = 0; i < size; i++)
            {
                cout << " array[" << i << "] = " << array[i] << "\n";
            }
            cout << "\n============================================================\n"
                << " Cамое большое отрицательное число (- max) = " << max << "\n"
                //<< " Индекс_max = " << index_max <<"\n"
                << " Cамое маленькое положительное число (+ min) = " << min << "\n"
                //<< " Индекс_min = "<< index_min <<"\n"
                << "\n============================================================\n"
                << " Кол-во элементов между отрицательными и положительными = " << number_of << "\n"
                << "\n============================================================\n";
}
Можете помочь еще, пожайлуста?
(Создать массив из 10 элементов, значением от 0 до 108.
Найти минимальный элемент,
в него записать сумму 3 - х самых больших чисел в этом массиве)
Создал массив, нашел минимальный элемент, но как в него возможно записать сумму 3 - х самых больших чисел в этом массиве???
И так, и сяк.....бред выходит!
0
9 / 9 / 5
Регистрация: 06.01.2016
Сообщений: 55
29.08.2016, 13:28
Лучший ответ Сообщение было отмечено Semenov Alex как решение

Решение

После того, как нашли наименьший элемент, в какой-нибудь переменной сохраняете его индекс в массиве.
Затем создаёте новый массив, в который копируете исходный. Этот массив сортируете по возрастанию. Есть два способа: можно использовать стандартную библиотеку algorithm, в которой есть готовая функция sort(), а можно написать функцию сортировки самому. Алгоритмы описаны, например, здесь. Поскольку задача учебная, лучше использовать второй вариант.
Затем будет достаточно написать:
C++
1
arr[min] = sortedArr[sortedArr.length()-1] + sortedArr[sortedArr.length()-2] + sortedArr[sortedArr.length()-3];
Где arr - исходный массив, sortedArr - отсортированный. [min] - индекс наименьшего элемента.
1
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
29.08.2016, 14:09
Альт. вариант:
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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <cstdlib>
 
bool MinPositive(const int a, const int b)
{
    if ((a > 0) && (b > 0)) return a < b;
    else if (((a > 0) && (b <= 0)) || ((a <= 0) && (b > 0))) return true;
    else return false;
}
 
bool MaxNegative(const int a, const int b)
{
    if ((a < 0) && (b < 0)) return a > b;
    else if (((a < 0) && (b >= 0)) || ((a >= 0) && (b < 0))) return false;
    else return true;
}
 
int main()
{
    const size_t N = 11;
    
    int a[N] = {-1, -2, -3, -4, -5, 0, 5, 4, 3, 2, 1};
    
    auto minPositive = std::min_element(&a[0], &a[N], MinPositive);
    auto maxNegative = std::max_element(&a[0], &a[N], MaxNegative);
    
    std::cout << "Mix positive: " << *minPositive << " at position " << std::distance(&a[0], minPositive) << std::endl <<
                 "Max negative: " << *maxNegative << " at position " << std::distance(&a[0], maxNegative) << std::endl <<
                 "distance between them: " << std::abs(std::distance(minPositive, maxNegative)) << std::endl;
        
    return 0;
}
1
0 / 0 / 1
Регистрация: 27.06.2016
Сообщений: 37
29.08.2016, 15:21  [ТС]
Это новый код, с таким я еще не сталкивался (точнее не проходил еще такое)!!!
Спасибо большое!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.08.2016, 15:21
Помогаю со студенческими работами здесь

Найти сумму элементов между крупнейшим и самым маленьким элементом в массиве
Нужно найти сумму элементов между крупнейшим и самым маленьким элементом в массиве(включая эти элементы). Вроде Бы работает, но мне не...

Определить разницу в возрасте между самым старшим и самым младшим из заданного списка
3. В массиве хранятся года рождения некоторого числа людей. Составьте программу, которая определит разницу в возрасте между самым старшим и...

Определить разницу между самым высоким и самым низким учеником в класе . Организовать ввод значений с клавиатуры.
Можно пожалуйста полный алгоритм.

дана матрица порядка n. Проверьте, является ли a(pq) самым большим элементом в своем столбце и самым маленьки
дана матрица порядка n. Проверьте, является ли а самым большим элементом в своем столбце и самым маленьким в своей строке Ребят срочно...

Вычислить средний рост студентов и разность в росте между самым высоким и самым низким студентом
Одномерный массив вещественных чисел R75 содержит данные о росте группы студентов. Массив заполнить значениями путем ввода с клавиатуры. ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru