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

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

Войти
Регистрация
Восстановить пароль
 
 
meowsaw
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 29
#1

Вычислить минимальный элемент - C++

05.06.2012, 16:07. Просмотров 672. Ответов 19
Метки нет (Все метки)

В одномерном массиве вычислить минимальный элемент и вытолкнуть его из массива.
Помогите пож.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2012, 16:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычислить минимальный элемент (C++):

Вычислить минимальный элемент массива - C++
Привет всем!! Здесь нужна ваша помощь ребята!! В одномерном массиве, состоящем из п целочисленных элементов, вычислить: 1)...

Вычислить минимальный по модулю элемент - C++
Ребят помогите пожалуйста изменить код что бы искало по "модулю" а не просто минимальный элемент массива. #include <iostream> ...

Вычислить минимальный по модулю элемент массива - C++
Помогите решить задачу! Наработки есть, но... В одномерном массиве, состоящем из n целых элементом, вычислить: 1. Минимальный по модулю...

Вычислить минимальный элемент одномерного массива - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) минимальный элемент массива; 2) сумму элементов массива,...

Вычислить минимальный элемент одномерного массива - C++
В одномерном массиве, состоящем из N действительных элементов, вычислить: n минимальный элемент массива; n сумму элементов массива,...

Вычислить минимальный по модулю элемент массива - C++
В одномерном массиве , состоящем из n целых элементов , вычислить : 1. минимальный по модулю элемент массива ; 2. сумму модулей...

19
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
05.06.2012, 16:29 #2
C++
1
2
3
4
5
6
7
8
template <typename T>
void RemoveMin(T a[ ], unsigned n) {
    unsigned min = 0;
    for (unsigned i = 1; i < n; i++)
        if (a[i] < a[min])
            min = i;
    a[min] = a[n - 1];
}
1
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
05.06.2012, 16:35 #3
Кот Ангенс
хороший пример, но слишком мне кажется общий. для человека, который самые основы не знает, шаблонные функции будут только всё усложнять =)

Добавлено через 2 минуты
ммм кстати, вы вначале принимаете за минимальный элемент = 0, а если в массиве все отрицательные числа, и нет нуля?
0
lowercase
212 / 201 / 34
Регистрация: 09.05.2012
Сообщений: 494
05.06.2012, 16:47 #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
#include <iostream.h>
#include <conio.h>
 
int main(){
    cout << "enter array size: ";
    int n; cin >> n;
    int *a = new int[n];
    for(int i = 0; i < n; i++){
        cout << "enter a["<<i+1<<"]: ";
        cin >> a[i];
    }
    int min = a[0];
    for(int i = 1; i < n; i++)
        if(a[i] < min) min = a[i];
 
    int ns = n;
    for(int i = 0; i < n; i++)
        if(a[i] == min) ns--;
 
    int *t = new int[ns];
    int k = 0;
    for(int i = 0; i < n; i++){
        if(a[i] != min) t[k++] = a[i];
    }
    a = t;
    delete[] t;
    for(int i = 0; i < ns; i++)
        cout << t[i] << endl;
    delete[] a;
    getch();
}
Добавлено через 1 минуту
Цитата Сообщение от bLesk Посмотреть сообщение
а если в массиве все отрицательные числа, и нет нуля?
тогда вначале минимальному елемету надо присвоить первый елемент масива. а в примере от Кот Ангенс, не минимальный елемент, а индекс минимального
1
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
05.06.2012, 16:50 #5
тогда вначале минимальному елемету надо присвоить первый елемент масива
я это знаю =) ещё можно присвоить наименьшее значение для типа, ну например для int вроде -32с чем то тысяч, т.к. для int - меньше числа быть не может, то в массиве точно найдется хоть один больше такого значения
0
grizlik78
Эксперт С++
1964 / 1457 / 119
Регистрация: 29.05.2011
Сообщений: 3,016
05.06.2012, 16:57 #6
Цитата Сообщение от bLesk Посмотреть сообщение
ммм кстати, вы вначале принимаете за минимальный элемент = 0, а если в массиве все отрицательные числа, и нет нуля?
Нулём принимается индекс минимального элемента, а не значение. Так что всё правильно будет работать.
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
05.06.2012, 17:08 #7
Цитата Сообщение от grizlik78 Посмотреть сообщение
Нулём принимается индекс минимального элемента, а не значение. Так что всё правильно будет работать.
действительно, прошу прощения =)
0
grizlik78
Эксперт С++
1964 / 1457 / 119
Регистрация: 29.05.2011
Сообщений: 3,016
05.06.2012, 17:11 #8
Название переменной min, просто, неудачное. Лучше было бы i_min какое-нибудь.
0
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
05.06.2012, 19:19 #9
Цитата Сообщение от bLesk Посмотреть сообщение
хороший пример, но слишком, мне кажется, общий.
Спасибо, но автор темы не говорил, из каких элементов состоит массив.
lowercase, похоже, я неправильно понял, что значит "вытолкнуть". Если требуется сдвиг, тогда вот так:
C++
1
2
3
4
5
6
7
8
9
template <typename T>
void RemoveMin(T a[ ], unsigned n) {
    unsigned minInd = 0;
    for (unsigned i = 1; i < n; i++)
        if (a[i] < a[minInd])
            minInd = i;
    while (++minInd < n)
        a[minInd - 1] = a[minInd];
}
1
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
05.06.2012, 20:24 #10
вот простенький быдло код
C++
1
2
3
4
5
6
7
8
#define size_aray 100
int aray[size_aray],min=aray[0],tmp=0;
for(int i=0;i<size_aray;i++)
{
if (min<aray[i])
{min=aray[i];tmp=i;
}
memcpy(aray[tmp],aray[tmp+1],(size_aray-tmp-1)*sizeof(int))
1
grizlik78
Эксперт С++
1964 / 1457 / 119
Регистрация: 29.05.2011
Сообщений: 3,016
05.06.2012, 21:59 #11
Van111, в случае перекрывающихся областей вместо memcpy() следует использовать memmove().
0
meowsaw
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 29
05.06.2012, 23:40  [ТС] #12
спасибо большое, ребят
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
06.06.2012, 15:21 #13
Цитата Сообщение от grizlik78 Посмотреть сообщение
Van111, в случае перекрывающихся областей вместо memcpy() следует использовать memmove().
тут такой проблемы не возникнет

Добавлено через 16 секунд
Цитата Сообщение от grizlik78 Посмотреть сообщение
Van111, в случае перекрывающихся областей вместо memcpy() следует использовать memmove().
тут такой проблемы не возникнет
0
grizlik78
Эксперт С++
1964 / 1457 / 119
Регистрация: 29.05.2011
Сообщений: 3,016
06.06.2012, 16:07 #14
Цитата Сообщение от Van111 Посмотреть сообщение
тут такой проблемы не возникнет
Это почему? Хотя знаю почему. Потому что вызов в таком виде вообще не скомпилируется
1
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
06.06.2012, 20:47 #15
meowsaw, вот правильно работающий код
C++
1
2
3
4
5
6
7
8
9
10
11
int push_min(int aray[])
{
    int min=aray[0],tmp=0;    
    for(int i=0;i<size_aray;i++)
        if (min>aray[i])
        {
            min=aray[i];
            tmp=i;
        }
memcpy(&aray[tmp],&aray[tmp+1],(size_aray-tmp-1)*sizeof(int));    
}
grizlik78, вот специально из за вас привёл код в работу, и все равно я оказался прав ,memcpy достаточно
0
06.06.2012, 20:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 20:47
Привет! Вот еще темы с ответами:

В одномерном массиве вычислить минимальный элемент - C++
В одномерном массиве, состоящем из п вещественных элементов, вычислить: - минимальный элемент массива; - сумму элементов массива,...

Вычислить минимальный по модулю элемент массива - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1.минимальный по модулю элемент массива; 2.сумму модулей...

Вычислить минимальный по модулю элемент массива - C++
В одномерном массиве, состоящем из п целых элементов, вычислить: 1) минимальный по модулю элемент массива; 2) сумму модулей элементов...

Вычислить минимальный по модулю элемент массива - C++
Составить программы на двух языках программирования C + + и Pascal В одномерном массиве, состоящий из n целых элементов, вычислить: ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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