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

Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть - C++

Восстановить пароль Регистрация
 
Лена касимова
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 7
17.05.2011, 06:41     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #1
а)Дана последовательность n элементов в виде массива. Найти минимальный элемент массива,паставить его на первое место,остальные эл.сдвигаются.
б)Дана матрица А размерности m*n и вектор Х размерности m. Найти произведение Х*А.
Помогите решить!!!у меня не получается!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 06:41     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть
Посмотрите здесь:

C++ Найти минимальный элемент массива и определить его местоположение
Наименьший элемент массива на первое место... C++
C++ Найти минимальный элемент массива, упорядочить элементы
Найти минимальный элемент массива и его порядковый номер. C++
Найти минимальный по значению элемент и записать его на начало массива, высвободив для него место путем смещ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
17.05.2011, 10:34     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #2
1. Пройдись по всему массиву и путем сравнения найди самое малое и его индекс в массиве. Запиши в какие нить доп.переменные. Затем начинай сдвигать элементы в массиве. Элемент перед самым малым ставишь на место самого малого. И так далее. Как только все сдвинешь, ставишь первым твое самое маленькое значение.
2. Простое умножение. В чем проблема? кинь код.
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
17.05.2011, 10:42     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #3
Цитата Сообщение от Лена касимова Посмотреть сообщение
Помогите решить!!!у меня не получается!!!
=
Не хочу ничё читать, а скоро сессия/зачет/экзамен, решите за меня
absokolov
29 / 29 / 1
Регистрация: 10.05.2011
Сообщений: 120
17.05.2011, 11:06     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #4
Цитата Сообщение от Лена касимова Посмотреть сообщение
а)Дана последовательность n элементов в виде массива. Найти минимальный элемент массива,паставить его на первое место,остальные эл.сдвигаются.
б)Дана матрица А размерности m*n и вектор Х размерности m. Найти произведение Х*А.
Помогите решить!!!у меня не получается!!!
А что у Вас уже решено?

P.S. LineStown + 1 ))))))
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
18.05.2011, 12:52     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #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
#include <iostream>
#include <limits>
using namespace std;
const int size = 100001;
void BubbleSort(int Array[], int size) {
    int i, j, x;
    for(i = 0; i < size; i++) {  
        for( j = size - 1; j > i; j-- ) {  
            if ( Array[j - 1] < Array[j] ) { 
                x = Array[j - 1]; 
                Array[j - 1] = Array[j]; 
                Array[j] = x; 
            }
        }
    }
}
int main() {
    int arr[size], n, min = INT_MAX, imin;
    freopen("INPUT.TXT", "r", stdin);
    freopen("OUTPUT.TXT", "w", stdout);
    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> arr[i];
    }  
    BubbleSort(arr, n);
    for (int i = 0; i < n; ++i) {
        if (arr[i] < min) {
            min = arr[i];
            imin = i;
        }       
    }
    for(int i = imin; i > 1; i--) {
        arr[i] = arr[i - 1];
        arr[0] = min;
    }
    for(int i = 0; i < n; ++i)
        cout << arr[i] << " ";
    return 0;
}
к примеру ввод 3 2 1, выводит 1 2 2 а должен 1 3 2, в чем проблема?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.05.2011, 13:22     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #6
C++
1
2
3
const std::vector<int>::iterator i=std::min_element(vec.begin(),vec.end());
vec.front()=*i;
vec.erase(i);
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
18.05.2011, 14:36     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #7
diagon, а как Ваш код использовать в Моей программе?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.05.2011, 14:39     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #8
Переделать программу под векторы=)
И насколько я понял задание, при вводе 3 2 1 вывод должен быть 1 2, т.к. минимальный элемент удаляется
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
18.05.2011, 14:50     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #9
И насколько я понял задание, при вводе 3 2 1 вывод должен быть 1 2, т.к. минимальный элемент удаляется
Найти минимальный элемент массива,паставить его на первое место,остальные эл.сдвигаются.

Не по теме:

Переделать под векторы??))) Я тут бессилен)))

-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
18.05.2011, 15:00     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #10
Цитата Сообщение от Лена касимова Посмотреть сообщение
а)Дана последовательность n элементов в виде массива. Найти минимальный элемент массива,паставить его на первое место,остальные эл.сдвигаются.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main()
{
    int i,n;
    cout<<"  N=";
    cin>>n;
    int *a=new int [n];
    cout<<"  Enter elements: ";
    for(i=0;i<n;i++) cin>>a[i];    
    int min=a[0];
    for(i=1;i<n;i++) if(a[i]<min) min=a[i];
    cout<<"  min="<<min<<endl;    
    cout<<"  New array: "<<min<<" ";
    for(i=0;i<n;i++) if(a[i]!=min) cout<<a[i]<<" ";
    delete[] a;
    cout<<endl;
    system("pause");
    return 1;
}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.05.2011, 15:00     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #11
Тогда так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <algorithm>
#define size 3
int main(){
    int a[size]= {3,2,1};
    std::vector<int> vec;
    vec.assign(a,a+size);
    for (std::vector<int>::iterator i = vec.begin(); i < vec.end(); i++)
        std::cout << *i << ' ';
    std::cout << std::endl;
    const std::vector<int>::iterator i=std::min_element(vec.begin(),vec.end());
    int temp=*i;
    vec.erase(i);
    vec.insert(vec.begin(),temp);
    for (std::vector<int>::iterator i = vec.begin(); i < vec.end(); i++)
        std::cout << *i << ' ';
    return 0;
}
Вывод: http://liveworkspace.org/code/86d226...6e68b1e9901077
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
18.05.2011, 15:16     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #12
C++
1
2
3
 cout<<"  min="<<min<<endl;    
    cout<<"  New array: "<<min<<" ";
    for(i=0;i<n;i++) if(a[i]!=min) cout<<a[i]<<" ";
-comrade-, хитрый подход =)))
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
18.05.2011, 15:22     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #13
Цитата Сообщение от Temirlan90 Посмотреть сообщение
-comrade-, хитрый подход =)))
Где тут хитрость?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2011, 15:24     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть
Еще ссылки по теме:

Найти максимальный элемент массива и поставить его первым C++
C++ Найти минимальный элемент массива и его индексы
Переставить шестой элемент исходного массива на первое место.Вычислить произведение C++

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

Или воспользуйтесь поиском по форуму:
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
18.05.2011, 15:24     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть #14
Что бы не сдвигать массив, а ставить минимальный элемент на первое место потом выводить без минимального элемента, в Моих глазах Ваше решение вызвало уважение=)))
Yandex
Объявления
18.05.2011, 15:24     Найти минимальный элемент массива, поставить его на первое место, остальные элементы сдвинуть
Ответ Создать тему
Опции темы

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