С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 13
1

Массивы: кол-во элементов, больших своего правого соседа, сумму на нечетных позициях после мин, отсортировать

07.05.2015, 22:08. Показов 956. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В одномерном массиве, что состоит с N элементов, посчитать:
1)количество элементов массива, которые больше своего правого соседа;
2)сумму элементов массива, расположенных на не четных позициях после минимального элемента;
3)отсортировать по возрастанию отдельно элементы, которые расположены на четных местах, и элементы, которые расположены на не четных местах.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2015, 22:08
Ответы с готовыми решениями:

Массивы. найти индексы тех элементов массива , которые больше своего правого соседа и количество таких элементов (почему то не работает корректно)
Задание : Дан одномерный массив b, найти индексы тех элементов массива , которые больше своего...

Найти номера тех элементов массива, которые больше своего правого соседа, и количество таких элементов
Задача 1. Дан целочисленный массив А(а1...аn). Найти номера тех элементов массива, которые больше...

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

Найти номера тех элементов массива, которые больше своего правого соседа, и количество таких элементов
1) Дан массив размера N. Найти номера тех элементов массива, которые больше своего правого соседа,...

10
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
07.05.2015, 22:11 2
mmmmmmm, Тут положено демонстрировать свои попытки, наработки, усилия, наброски...
"Сделать за меня" - это во Фриланс. И сделают, и объяснят... за небольшую плату....
0
0 / 0 / 3
Регистрация: 07.02.2015
Сообщений: 153
07.05.2015, 22:17 3
Цитата Сообщение от mmmmmmm Посмотреть сообщение
В одномерном массиве, что состоит с N элементов, посчитать:
1)количество элементов массива, которые больше своего правого соседа;
2)сумму элементов массива, расположенных на не четных позициях после минимального элемента;
3)отсортировать по возрастанию отдельно элементы, которые расположены на четных местах, и элементы, которые расположены на не четных местах.
С высоты 2 курса скажу: Если ты это не можешь делать, то меняй специальность.Далее тебя ждёт огромная ЖОПА сложность.
Возьми листок бумаги нарисуй массив на крайняк и посмотри как что надо сравнивать. У нас это было на 1 курсе 1 семестр.

P.S. А если ты заочник , то и правда иди во фриланс...
0
volvo
07.05.2015, 22:21
  #4
 Комментарий модератора 
Следующая попытка нарушить Правила Форума:
5.9 Запрещено отсылать пользователей из тематических разделов в разделы фриланса, а также рекламировать свои услуги или просить/требовать оплату за помощь, кроме разделов для платных услуг.
приведет к картам.
0
120 / 34 / 19
Регистрация: 19.03.2015
Сообщений: 90
08.05.2015, 12:46 5
Массивы: кол-во элементов, больших своего правого соседа, сумму на нечетных позициях после мин, отсортировать

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
//Написано "на коленке", времени на оптимизацию нет
#include <conio.h>
#include <iostream>
//Используем стандартное пространство имен std для удобства
using namespace std; 
 
int main()
{
    const int N = 9;//Здесь регулируем размер массива объявленного в след. строчке
    int mas[N];
    //Объявляем кучу переменных для удобства и понимания (никогда так не делайте)
    int count=0,min=0,sum=0,MinNumber=0,temp=0,Even=0,NotEven=0;
    //Даешь вывод текста на Русском
    setlocale(LC_ALL,"Russian");
    //Шапка
    cout << "\n\t\t\t\t*** for mmmmmmm ***\n\n";
    //Ввод значений для элементов массива
    cout << "\t\t\t Введите значения " << N << " элементов\n";
 
    for (int i = 0;i < N;i++)
        {
            cin >> mas[i];
        }
    //Очищаем консоль от введенных значений и выводим обратно шапку
    system("cls");
    cout << "\n\t\t\t\t*** for mmmmmmm ***\n\n";
    //Показываем полученный массив
    cout << "\tВаш массив: \n";
 
    for (int i = 0;i < N;i++)
        {
            cout << "Элемент массива номер "<< i << ": " << mas[i] << endl;
        }
//*Задача номер 1
//Количество элементов массива, которые больше своего правого соседа
    //Узнаем количество элементов имеющих значение большее чем у следующего
    for (int i = 0;i < N-1;i++)
        {
            if (mas[i]>mas[i+1])count+=1;   
        }
 
    cout << "\t*Задача 1: \nКоличество элементов имеющих большее значение чем следующий: "<< count << endl;
//*Задача номер 2
//Сумму элементов массива, расположенных на не четных позициях после минимального элемента
    //Для начала находим минимальный элемент и его адрес 
    min = mas[0]; //На старте определяем первый элемент массива как минимальный
    for (int i = 0;i < N;i++)
        {
            if (min>mas[i]){min=mas[i];MinNumber=i;}    
        }
 
    cout << "Номер минимального элемента массива: " << MinNumber << " значение: " << min << endl;
    //Вычисляем сумму элементов расположенные на не четных позициях после минимального элемента
    for (int i = MinNumber+1;i < N;i++) //Начинаем просматривать не с начала, а с номера минимального элемента +1
    {                                   //(Без +1 минимальное число тоже войдет в сумму,а по условиям нам нужна сумма только тех чисел которые идут ПОСЛЕ минимального) 
            if (i % 2 != 0)sum+=mas[i]; /*Если остаток от деления номера текущего элемента не равен нулю
                                        **(проще если номер не четный) то добавляем к сумме
                                        **значение текущего элемента массива*/
        }
    cout << "\t*Задача 2: \nСумма элементов на не четных позициях после мин. элемента: "<< sum << endl;
//*Задача номер 3
//Отсортировать по возрастанию отдельно элементы, которые расположены на четных местах, и элементы, которые расположены на не четных местах
    //Принцип тот же:
    cout << "\t*Задача 3: \nОтсортированные элементы расположенные на четных и не четных местах: " << endl;
    Even=N-1;//Четное при не четном N
    NotEven=N-2;//Не четное при не четном N
    if (N%2==0){Even=N-2;NotEven=N-1;}//Предусматриваем что N четное  
 
    for(int i=0; i<N-2; i+=2)
        for(int j=0; j<Even; j+=2)
            if(mas[j]>mas[j+2])
            {
                temp=mas[j];
                mas[j]=mas[j+2];
                mas[j+2]=temp;
            }
    
    for(int i=1; i<N-2; i+=2)
        for(int j=1; j<NotEven; j+=2)
            if(mas[j]>mas[j+2])
            {
                temp=mas[j];
                mas[j]=mas[j+2];
                mas[j+2]=temp;
            }
 
    cout << "Отсортированные по возрастанию не четные элементы массива: \n";
    for (int i = 0;i < N;i++)
        {
            if (i % 2 != 0)//Если число не четное
            cout << "\t" << mas[i] << endl;
        }
    cout << "Отсортированные по возрастанию четные элементы массива: \n";
    for (int i = 0;i < N;i++)
        {
            if (i % 2 == 0)//Если число четное
            cout << "\t" << mas[i] << endl;
        }
 
    getch();
    return 0;
}
0
0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 13
08.05.2015, 21:11  [ТС] 6
а как разбить эту программу на функции?
0
3 / 3 / 8
Регистрация: 29.12.2014
Сообщений: 29
08.05.2015, 21:40 7
без 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
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
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;
 
int GetRightCount(int * arr, int size, int index);
int GetIndexOfMin(int * arr, int size);
int GetSummOfAferMinElement(int * arr, int size);
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    //границы значений элементов
    const int m = -10;
    const int n = 30;
    const int fieldWidth = 3;
    
    const int N = 20;
    int arr[N];
 
    srand(time(NULL));
 
    //генерация и печать
    for (int i = 0; i < N; i++)
    {
        arr[i] = rand() % (n - m + 1) + m;  
        cout << setw(fieldWidth) << arr[i] << " ";
    }
    
    cout << endl << endl;
 
    //для каждого элемента колечество элементов, больших своего правого соседа
    for (int i = 0; i < N; i++)
        cout << setw(2)<< i << ": " << setw(fieldWidth) << arr[i] << " - " << GetRightCount(arr, N, i) << endl;
 
    cout << "Индекс мин. элемента: " << GetIndexOfMin(arr, N) << endl;
    cout << "Сумма элементов массива, расположенных на нечетных позициях после мин. элемента: " << GetSummOfAferMinElement(arr, N) << endl;
 
 
 
    return 0;
}
 
int GetRightCount(int * arr, int size, int index)
{
    if (index == size - 1 || index == size - 2)//если элемент последний или предпоследний
        return 0;
 
    int rightNeighbor = index + 1;
    int count = 0;
 
    for (int i = rightNeighbor + 1; i < size; i++)
    {
        if (arr[i] > arr[rightNeighbor])
            count++;
    }
 
    return count;
}
 
int GetSummOfAferMinElement(int * arr, int size)
{
    int summ = 0;
    int indexOfMin = GetIndexOfMin(arr, size);
    for (int i = indexOfMin + 1; i < size; i++)
    {
        if (i % 2 != 0)
            summ += arr[i];
    }
    return summ; 
}
 
int GetIndexOfMin(int * arr, int size)
{
    int min = arr[0];
    int index = 0;
    for (int i = 1; i < size; i++)
    {
        if (arr[i] < min)
        { 
            min = arr[i];
            index = i;
        }           
    }
    return index;
}
0
120 / 34 / 19
Регистрация: 19.03.2015
Сообщений: 90
08.05.2015, 22:20 8
Цитата Сообщение от mmmmmmm Посмотреть сообщение
а как разбить эту программу на функции?
Перенести код решающий каждую задачу в отдельную функцию или заголовочный файл, передавать параметры при вызове функции в теле main.
Если основной целью является "сдать" то код выше отвечает всем условиям задачи,а если саморазвитие в C++ стоит у Вас не на последнем месте, то в следующий раз пишите заранее о требуемом формате оформления программы.
А вообще Вам написали полностью отвечающий требованиям код за Вас и не увидели(как подмечали Уважаемые выше) никаких самостоятельных попыток, а Вы даже не соизволили поблагодарить.
0
0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 13
08.05.2015, 22:23  [ТС] 9
Спасибо большое за помощь, очень помогли!
0
3 / 3 / 8
Регистрация: 29.12.2014
Сообщений: 29
08.05.2015, 23:42 10
в этой версии добавлена сортировка и печать элеменов вынесена в отдельную функцию

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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;
 
const int fieldWidth = 3;
 
int GetRightCount(int * arr, int size, int index);
int GetIndexOfMin(int * arr, int size);
int GetSummOfAferMinElement(int * arr, int size);
void Print(int * arr, int size);
void Sort(int * arr, int size);
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    //границы значений элементов
    const int m = -10;
    const int n = 30;   
    
    const int N = 19;
    int arr[N];
 
    srand(time(NULL));
 
    //генерация 
    for (int i = 0; i < N; i++)
        arr[i] = rand() % (n - m + 1) + m;
        
    Print(arr, N);  
 
    //для каждого элемента колечество элементов, больших своего правого соседа
    for (int i = 0; i < N; i++)
        cout << setw(2)<< i << ": " << setw(fieldWidth) << arr[i] << " - " << GetRightCount(arr, N, i) << endl;
        
    cout << "Индекс мин. элемента: " << GetIndexOfMin(arr, N) << endl;
    cout << "Сумма элементов массива, расположенных на нечетных позициях после мин. элемента: " << GetSummOfAferMinElement(arr, N) << endl;
        
    Sort(arr, N);   
    Print(arr, N);
    
    return 0;
}
 
int GetRightCount(int * arr, int size, int index)
{
    if (index == size - 1 || index == size - 2)//если элемент последний или предпоследний
        return 0;
 
    int rightNeighbor = index + 1;
    int count = 0;
 
    for (int i = rightNeighbor + 1; i < size; i++)
    {
        if (arr[i] > arr[rightNeighbor])
            count++;
    }
 
    return count;
}
 
int GetSummOfAferMinElement(int * arr, int size)
{
    int summ = 0;
    int indexOfMin = GetIndexOfMin(arr, size);
    for (int i = indexOfMin + 1; i < size; i++)
    {
        if (i % 2 != 0)
            summ += arr[i];
    }
    return summ; 
}
 
int GetIndexOfMin(int * arr, int size)
{
    int min = arr[0];
    int index = 0;
    for (int i = 1; i < size; i++)
    {
        if (arr[i] < min)
        { 
            min = arr[i];
            index = i;
        }           
    }
    return index;
}
 
void Sort(int * arr, int size)
{   
    for (int i = 0; size % 2 == 0 ? i <= size - 4 : i <= size - 3; i = i + 2)
    {       
        for (int j = i + 2; size % 2 == 0 ? j <= size - 2 : j <= size - 1; j = j + 2)
        {
            if (arr[i] > arr[j])
            {
                int tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
    }
 
    for (int i = 1; size % 2 == 0 ? i <= size - 3 : i <= size - 4; i = i + 2)
    {
        for (int j = i + 2; size % 2 == 0 ? j <= size - 1 : j <= size - 2; j = j + 2)
        {
            if (arr[i] > arr[j])
            {
                int tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}
 
void Print(int * arr, int size)
{
    for (int i = 0; i < size; i++)
        cout << setw(fieldWidth) << arr[i] << " ";
    cout << endl << endl;
}
0
0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 13
09.05.2015, 09:38  [ТС] 11
спасибо большое!!!!
0
09.05.2015, 09:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2015, 09:38
Помогаю со студенческими работами здесь

Найти номера тех элементов массива, которые больше своего правого соседа, и количество таких элементов
1. Дан массив размера N. Найти номера тех элемонтов массива, которые больше своего правого соседа,...

Найти номера тех элементов массива,которые больше своего правого соседа
Array30.Дан массив размера N.Найти номера тех элементов массива,которые больше своего правого...

Определить индексы тех элементов массива, которые больше своего правого соседа
Здравствуйте. дали задание по C# а как сделать без понятия( Дан массив n. Определить индексы...

Найти номера тех элементов массива, которые больше своего правого соседа
Помогите пожалуйста решить.позарес как надо!!! 1) Дан массив размера N. Найти номера тех...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru