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

В одномерном массиве перенести в конец минимальный элемент - C++

Восстановить пароль Регистрация
 
pash-oook
0 / 0 / 0
Регистрация: 17.02.2013
Сообщений: 4
17.02.2013, 17:16     В одномерном массиве перенести в конец минимальный элемент #1
В одномерном массиве перенести в конец минимальный элемент
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 17:16     В одномерном массиве перенести в конец минимальный элемент
Посмотрите здесь:

C++ В одномерном массиве, состоящем из n вещественных, вычислить минимальный элемент
C++ В одномерном массиве, состоящем из n элементов массива, вычислить минимальный элемент массива
C++ В одномерном массиве вычислить минимальный элемент
C++ В одномерном масстве найти наибольшую последовательность из отрицаельных чисел и перенести ее в конец массива
C++ В одномерном массиве вычислить минимальный по модулю элемент массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sergey_B
163 / 163 / 14
Регистрация: 08.01.2013
Сообщений: 335
17.02.2013, 17:49     В одномерном массиве перенести в конец минимальный элемент #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
31
32
33
34
35
36
37
38
39
40
#include<iostream>
#include<conio.h>
 
using namespace std;
int main()
{
    
    int n=0;
    while(n<=0)
    {
         cout<<"Ââåäèòå Г°Г*çìåð Г¬Г*Г±Г±ГЁГўГ*: ";
         cin>>n;
    }
    int *mas = new int[n];
    
    int minIndex=0; 
    for (int i=0;i<n;i++) //ïîèñê ГЁГ*äåêñГ* ìèГ*ГЁГ¬Г*ëüГ*îãî ýëåìåГ*ГІГ*
    {
        cin>>mas[i];
        if (mas[i]<mas[minIndex]){minIndex=i;}
    }
    cout<<"\nГ€Г*äåêñ ìèГ*ГЁГ¬Г*ëüГ*îãî ýëåìåГ*ГІГ*: "<<minIndex;
    
    int temp = mas[minIndex]; //ïåðåìåГ*Г*Г*Гї äëÿ õðГ*Г*ГҐГ*ГЁГї ìèГ*. ГЅГ«-ГІГ* Г¬Г*Г±Г±ГЁГўГ*
    for (int i=minIndex; i<n; i++)
    {
        if (i<n-1){ mas[i]=mas[i+1];}
        else {mas[i]=temp;}
    }
     
    cout<<"\nÏðåîáðГ*çîâГ*Г*Г*ûé Г¬Г*Г±Г±ГЁГў: ";
    for (int i=0; i<n; i++)
    {
        cout<<mas[i]<<" ";
    }
    getch();
    delete[] mas;
    return 0;
       
}
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
17.02.2013, 21:45     В одномерном массиве перенести в конец минимальный элемент #3
А на место минимального какой?) тот, что раньше стоял в конце массива? или сдвиг циклический?)

Добавлено через 6 минут
Может, лучше воспользоваться дарами STL?)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <algorithm>
#include <iostream>
using namespace std;
 
int main()
{
    /*  подготовим массив для работы    */
    const size_t size = 100;
    int arr[ size ];    
    for( int i = 0; i < size; i++ ) arr[ i ] = i;
    arr[26] = -1; // пусть этот элемент - минимальный)
 
    /* собсно то, что выполняет поставленную задачу */
    int shift = min_element( arr, arr + size ) - arr + 1;
    std:: rotate( arr, arr + shift, arr + size );
 
    /*  глянем на результат */
    for( int i = 0; i < size; i++ ) std:: cout << arr[ i ] << " ";
 
    return 0;
}
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
17.02.2013, 22:29     В одномерном массиве перенести в конец минимальный элемент #4
Цитата Сообщение от ITcrusader Посмотреть сообщение
Может, лучше воспользоваться дарами STL?)
поддерживаю
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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <random>
#include <ctime>
 
int main ()
{
    auto fRandom = std::bind(std::uniform_int_distribution <> (-25, 25),
                             std::mt19937 (time(nullptr)));
    int vectSize = 15;
    std::vector <int> vect (vectSize);
    std::cout << "Vector: " << std::endl;
    std::generate(vect.begin(), vect.end(), fRandom);
    std::copy(vect.begin(), vect.end(), std::ostream_iterator <int> (std::cout, " "));
 
    int minimal = (std::min_element(vect.begin(), vect.end()) - vect.begin()) + 1;
    std::cout << std::endl << "Vector: " << std::endl;
    std::rotate(vect.begin(), vect.begin() + minimal, vect.end());
    std::copy(vect.begin(), vect.end(), std::ostream_iterator <int> (std::cout, " "));
 
    return 0;
}
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
17.02.2013, 22:34     В одномерном массиве перенести в конец минимальный элемент #5
Надеюсь, это не камень в огород использования мной классического массива?)) Потому как в задаче звучит "одномерный массив")

А вообще, твой STL круче моего
Yandex
Объявления
17.02.2013, 22:34     В одномерном массиве перенести в конец минимальный элемент
Ответ Создать тему
Опции темы

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