Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mashka4190
2 / 2 / 1
Регистрация: 02.12.2013
Сообщений: 175
#1

Удалить из массива все элементы, расположенные перед максимальным элементом массива - C++

02.07.2015, 16:51. Просмотров 282. Ответов 5
Метки нет (Все метки)

Задан целочисленный массив размера N. Удалить из массива все элементы, расположенные перед максимальным элементом массива.
Под удалением элементов из массива следует понимать изменение размера массива посредством изменения переменной, хранящей размер массива (например, n), а не создание нового массива.

Добавлено через 5 часов 31 минуту
// актуальна
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2015, 16:51     Удалить из массива все элементы, расположенные перед максимальным элементом массива
Посмотрите здесь:

Обнулить элементы массива, расположенные между его минимальным и максимальным элементами C++
Получить массив В, содержащий элементы массива А, расположенные между максимальным и минимальным элементами массива C++
Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами C++
C++ Дан массив int *a. Удалить из массива все элементы совпадающие с первым элементом
C++ Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Переставить в обратном порядке элементы массива, расположенные между минимальным и максимальным элементами C++
Вывести элементы массива расположенные между максимальным и минимальным элементами C++
Обнулить элементы массива, расположенные между его минимальным и максимальным элементам C++
Удалить из массива А(М) элементы, стоящие за первым максимальным элементом, количество цифр которых равно k C++
C++ Перед указанным элементом массива вставить все элементы другого массива
C++ Элементы массива, расположенные между его минимальным и максимальным элементами (не включая минимальный и макс
Удалить все элементы массива расположенные между максимальным и минимальным элементами C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Cuellius
176 / 84 / 62
Регистрация: 23.06.2015
Сообщений: 219
Завершенные тесты: 2
02.07.2015, 17:14     Удалить из массива все элементы, расположенные перед максимальным элементом массива #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
#include <string.h>
 
int GetMaxElement(int *arr, int first, int last)
{
    if (first == last) return last;
    int *largest = arr + first;
    int *pfirst = arr + first;
    int *plast = arr + last;
 
    while (++pfirst != plast)
        if (*largest < *pfirst)    
            largest = pfirst;
    return largest - arr;
}
 
int main()
{
    //Ввод массива...
        //arr - заданный массив, N - размер заданного массива
 
    int iMaxPos = GetMaxElement(arr, 0, N);
    N -= iMaxPos;
 
    if(iMaxPos != 0)
        memcpy(arr, arr + iMaxPos, N * sizeof(int));
    
    //Вывод массива...
 
    return 0;
}
mashka4190
2 / 2 / 1
Регистрация: 02.12.2013
Сообщений: 175
02.07.2015, 19:31  [ТС]     Удалить из массива все элементы, расположенные перед максимальным элементом массива #3
Cuellius, а можно вместе с вводом и выводом массива?
Cuellius
176 / 84 / 62
Регистрация: 23.06.2015
Сообщений: 219
Завершенные тесты: 2
02.07.2015, 19:40     Удалить из массива все элементы, расположенные перед максимальным элементом массива #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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int GetMaxElement(int *arr, int first, int last)
{
    if (first == last) return last;
    int *largest = arr + first;
    int *pfirst = arr + first;
    int *plast = arr + last;
 
    while (++pfirst != plast)
        if (*largest < *pfirst)    
            largest = pfirst;
    return largest - arr;
}
 
int main()
{
    int N, i;
    scanf("%d", &N);
    int *arr = (int*)malloc(N * sizeof(int));
    for(i = 0; i < N; i++)
    {
        scanf("%d", &arr[i]);
    }
 
    int iMaxPos = GetMaxElement(arr, 0, N);
    N -= iMaxPos;
 
    if(iMaxPos != 0)
        memcpy(arr, arr + iMaxPos, N * sizeof(int));
    
    for(i = 0; i < N; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    free(arr);
 
    return 0;
}
mashka4190
2 / 2 / 1
Регистрация: 02.12.2013
Сообщений: 175
02.07.2015, 19:50  [ТС]     Удалить из массива все элементы, расположенные перед максимальным элементом массива #5
Cuellius, спасибо большое!

Добавлено через 5 минут
Cuellius, только почему еще удаляет последний элемент массива?
Nkey
308 / 61 / 10
Регистрация: 21.12.2011
Сообщений: 275
02.07.2015, 19:57     Удалить из массива все элементы, расположенные перед максимальным элементом массива #6
mashka4190, исправь
Yandex
Объявления
02.07.2015, 19:57     Удалить из массива все элементы, расположенные перед максимальным элементом массива
Ответ Создать тему
Опции темы

Текущее время: 10:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru