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

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

Восстановить пароль Регистрация
 
mashka4190
2 / 2 / 1
Регистрация: 02.12.2013
Сообщений: 175
02.07.2015, 16:51     Удалить из массива все элементы, расположенные перед максимальным элементом массива #1
Задан целочисленный массив размера 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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Cuellius
176 / 84 / 62
Регистрация: 23.06.2015
Сообщений: 218
Завершенные тесты: 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
Сообщений: 218
Завершенные тесты: 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
Сообщений: 267
02.07.2015, 19:57     Удалить из массива все элементы, расположенные перед максимальным элементом массива #6
mashka4190, исправь
Yandex
Объявления
02.07.2015, 19:57     Удалить из массива все элементы, расположенные перед максимальным элементом массива
Ответ Создать тему
Опции темы

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