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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.82
RAMON@
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 67
#1

visual c++. Удалить минимальный и максимальный элементы массива. - C++

09.03.2010, 21:06. Просмотров 3797. Ответов 7
Метки нет (Все метки)

Ввести одномерный статический массив из k чисел.
Удалить минимальный и максимальный элементы массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2010, 21:06     visual c++. Удалить минимальный и максимальный элементы массива.
Посмотрите здесь:
Удалить минимальный и максимальный элементы массива C++
C++ Удалить минимальный и максимальный элементы массива
Удалить минимальный и максимальный элементы массива C++
Удалить минимальный и максимальный элементы массива C++
Удалить минимальный и максимальный элементы массива C++
C++ Удалить из массива, в котором все элементы различны, максимальный и минимальный элементы
C++ Удалить из массива максимальный и минимальный элемент
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 1
09.03.2010, 21:15     visual c++. Удалить минимальный и максимальный элементы массива. #2
из статического массива удалить что - то не возможно... да и вобще из любого массива что то удалить нельзя... (Можно просто сместить или создать новый массив. )
RAMON@
0 / 0 / 0
Регистрация: 07.11.2009
Сообщений: 67
09.03.2010, 21:18  [ТС]     visual c++. Удалить минимальный и максимальный элементы массива. #3
Цитата Сообщение от ISergey Посмотреть сообщение
из статического массива удалить что - то не возможно... да и вобще из любого массива что то удалить нельзя... (Можно просто сместить или создать новый массив. )
да ну я это ректору говорил он говорил что тебе сместить надо... что то вроде этого.. напиши плиз хоть что..
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
09.03.2010, 22:49     visual c++. Удалить минимальный и максимальный элементы массива. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
int main()
{
    const int n = 10;
    int mas[n], i, imin = 0, imax = 0;
    for(i = 0; i < n; ++i)
        std::cin>>mas[i];
    for(i = 1; i < n; ++i)
    {
        if(mas[i] > mas[imax])
            imax = i;
        if(mas[i] < mas[imin])
            imin = i;
    }
    for(i = (imin < imax) ? imin : imax; i < (imin < imax) ? imax : imin; ++)
        mas[i] = mas[i + i];
    for(i = (imin > imax) ? imin : imax; i < n - 1; ++)
        mas[i] = mas[i + i]; 
    return 0;   
}
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 1
09.03.2010, 23:04     visual c++. Удалить минимальный и максимальный элементы массива. #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
#include <iostream>
 
int *x_remove_copy_if(int *first, int *last, int *out, int x){
    for(; first != last; ++first)
        if( *first != x)
            *out++ = *first;
    return out;
}
 
int find_max(int *first, int *last){
    int max = *first;
    for(; first != last; ++first)
        if( *first > max )
            max = *first;
    return max;
}
 
int find_min(int *first, int *last){
    int min = *first;
    for(; first != last; ++first)
        if( *first < min )
            min = *first;
    return min;
}
 
int main(){
 
    const int n = 10;
    int arr[n] = {1, 1, 3, 4, 5, 5, 5, 4, 2, 3}; // [min = 1] [max = 5]
 
    int *end = arr + n;
 
    // remove max
    end = x_remove_copy_if(arr, end, arr, find_max(arr, end));
    // remove min
    end = x_remove_copy_if(arr, end, arr, find_min(arr, end));
 
    for(int *beg = arr; beg != end; ++beg)
        std::cout << *beg << ' ';
    std::cout << std::endl;
    return 0;
}
http://codepad.org/pI3Epq4w
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
09.03.2010, 23:22     visual c++. Удалить минимальный и максимальный элементы массива. #6
Статический - не интересно...
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
/*
*   Удалить минимальный и максимальный элементы массива. 
*/
 
int main(){
    int k, tmp;
    std::cout << "Number of elements: ";
    std::cin >> k;
    if ( !k ){
        std::cerr << "Wrong number!" << std::endl;
        return 1;
    }
    std::vector<int> vec;
    while ( k-- ){
        std::cout << "Next vale: ";
        std::cin >> tmp;
        vec.push_back(tmp);
    }
    
    std::cout << "All array:" << std::endl;
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    std::cout << "Without min and max elements:" << std::endl;
    vec.erase(std::min_element(vec.begin(), vec.end()));
    vec.erase(std::max_element(vec.begin(), vec.end()));
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    
    return 0;
}
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
10.03.2010, 00:26     visual c++. Удалить минимальный и максимальный элементы массива. #7
STL - не интересно...
Main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include "Array.h"
int main()
{
    setlocale(LC_ALL, "Russian");
    int size;
    std::cout<<"Введите размерность массива:\n> ",
        std::cin>>size;
    Array* arr = new Array(size);
    arr->Input();
    arr->removeMinMax();
    arr->Output();
    system("pause");
    return EXIT_SUCCESS;
}
Array.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Array
{
public:
    Array(int);
    int getValue(int);
    void setValue(int, int);
    int getSize();
    void Input();
    void Output();
    int findMin();
    int findMax();
    void removeMinMax();
private:
    int* Copy();
    int* arr;
    int size;
};
Array.cpp
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
#include "Array.h"
#include <iostream>
 
Array::Array(int _size)
{
    size = _size;
    arr = new int[size];
}
 
int Array::getValue(int index)
{
    return arr[index];
}
void Array::setValue(int value, int index)
{
    arr[index] = value;
}
int Array::getSize()
{
    return size;
}
 
void Array::Input()
{
    std::cout<<"Введите массив:\n";
    for(int index = 0; index < size; ++index)
        std::cin>>arr[index];
    fflush(stdin);
}
void Array::Output()
{
    std::cout<<"Массив:\n";
    for(int index = 0; index < size; ++index)
        std::cout<<arr[index]<<' ';
    std::cout<<std::endl;
}
 
int* Array::Copy()
{
    int* buf = new int[size];
    for(int index = 0; index < size; ++index)
        buf[index] = arr[index];
    return buf;
}
int Array::findMin()
{
    int index, indexMin = 0;
    for(index = 1; index < size; ++index)
        if(arr[index] < arr[indexMin])
            indexMin = index;
    return indexMin;
}
int Array::findMax()
{
    int index, indexMax = 0;
    for(index = 1; index < size; ++index)
        if(arr[index] > arr[indexMax])
            indexMax = index;
    return indexMax;
}
void Array::removeMinMax()
{
    int* buf = Copy();
    int index, fExtr = findMin(), sExtr = findMax();
    arr = new int[size - 2];
    if(fExtr > sExtr)
    {
        fExtr ^= sExtr;
        sExtr ^= fExtr;
        fExtr ^= sExtr;
    }
    for(index = 0; index < fExtr; ++index)
        arr[index] = buf[index];
    for(index = fExtr; index < sExtr - 1; ++index)
        arr[index] = buf[index + 1];
    for(index = sExtr - 1; index < size - 2; ++index)
        arr[index] = buf[index + 2];
    size -= 2;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2010, 00:29     visual c++. Удалить минимальный и максимальный элементы массива.
Еще ссылки по теме:
C++ Задан массив значений из 10 элементов. Найти максимальный и минимальный элементы и удалить их
Найти минимальный и максимальный элементы массива и упорядочить элементы по убыванию, стоящие между ними, методом «пузырька». C++
Минимальный и максимальный элементы массива C++
C++ Найти максимальный и минимальный элементы массива
C++ Найти максимальный и минимальный элементы массива

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

Или воспользуйтесь поиском по форуму:
easybudda
10.03.2010, 00:29     visual c++. Удалить минимальный и максимальный элементы массива.
  #8

Не по теме:

M128K145, да, вот это по-джедайски!

Yandex
Объявления
10.03.2010, 00:29     visual c++. Удалить минимальный и максимальный элементы массива.
Ответ Создать тему
Опции темы

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