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

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

Войти
Регистрация
Восстановить пароль
 
kenasa
Сообщений: n/a
#1

Как вставить индекс после максимального элемента массива со смещением остальных элементов? - C++

24.02.2011, 16:20. Просмотров 942. Ответов 2
Метки нет (Все метки)

После первого максимального (минимального) элемента массива вставьте его номер, передвинув все элементы массива, сле¬дующие за ним, вправо на одну позицию. При этом значение последнего элемента теряется.

то есть если дан массив 23 5 9 245 8 7
то должно на выходе получиться 23 5 9 245 4(индекс максимального элемента) 8

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 "conio.h"
#include  "stdio.h"
#include "iostream"
using namespace std;
#define N 6 // определение размера массива
#include "locale.h"
 
void main()
{
    setlocale(LC_ALL,"Russian");
    int mass[N];//исходный массив
    int max,imax; //максимальный элемент и его индекс
    int min,imin; // минимальный элемент и его индекс
    int i; //счетчики
 
    cout<<"Введите элементы массива ,не более "<<N <<endl;
    for (i = 0; i < N; i++) // цикл ввода элементов массива
    cin >>mass[i]; // ввод
    max=0;
    min=0;// обнуляем максимальный и минимальный элемент
    min = mass[0]; // мин и макс равны первому элементу
    max = mass[0];
    for (int i = 1; i < N; i++)
   {
   if (mass[i] < min) // если текущий элемент меньше мин
   {min = mass[i]; // то мин = текущий элемент
   imin=i;}
   if (mass[i] > max) // если текущий элемент больше макс
   { max = mass[i]; // то макс = текущий элемент
   imax=i;}
   }
    
//вот с этого места проблема!!! вместо сдвига получаеться просто замена максимального элемента
for(i=N;i>imax;i--)
{  mass[i]=mass[i-1]; 
 mass[imax] = imax;
}
for (i=0;i<N;i++)
{    cout<<"mass="<<mass[i]<<endl;}
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2011, 16:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как вставить индекс после максимального элемента массива со смещением остальных элементов? (C++):

Массив: произвести сдвиг элементов на к позиций, где к-индекс максимального элемента массива - C++
помогите пожалуйста разобраться с указателями, т.к. тема для меня новая и, как оказалось, сложная(( В задаче дан массив A. Нужно...

После максимального элемента вставить 5 элементов, которые равны минимальному элементу контейнера - C++
задание. Использование шаблонов и классов и алгоритмов библиотеки stl Задание: после максимального элемента вставить 5 элементов,...

Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – индекс максимального элемента - C++
Помогите пожалуйста решить эту задачу, Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций,...

Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента. - C++
Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.

В одновременном массиве, состоящем из n элементов, вычислить сумму элементов после максимального элемента массива - C++
В одновременном массиве, состоящем из n элементов, вычислить сумму элементов после максимального элемента массива

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

2
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
24.02.2011, 17:06 #2
Я может что-то недопонял? Но у Вас получается тогда двойное смещение, если одновременно заменять и минимальное число и максимальное так? Или, как в Вашем примере, только один вариант менять мин/макс?
0
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
24.02.2011, 17:16 #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
 
int main(){
    int mas[]={88, 5, 9, 245, 8, 7, 85, 7}, *p=mas, *pmax=mas;
    for(; p<mas+sizeof(mas)/sizeof(mas[0]); ++p){
        if(*p>*pmax) pmax=p;
    }
    --p;
    while((p-1)!=pmax){
        *p--=*(p-1);
    }
    *p=pmax-mas+1;
    for(p=mas; p<mas+sizeof(mas)/sizeof(mas[0]); p++){
        printf("%d  ", *p);
    }
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2011, 17:16
Привет! Вот еще темы с ответами:

Вычислить сумму элементов массива, расположенных после максимального элемента - C++
Доброго времени суток! Дали задания на языке С++: Задача 3.1. Вводить линейные массивы разных размеров (размерность также вводится...

Произведение элементов массива, расположенных после максимального по модулю элемента - C++
Помогите написать программу. Я работаю с программой MS Visual Studio 2005. В одномерном массиве, состоящем из п целых элементов,...

Произведение элементов массива расположенных после максимального по модулю элемента (С) - C++
Помогите пожалуйста написать программу. Очень буду Вам благодарен, очень срочно надо. В одномерном массиве состоящем из n вещественных...

Найти сумму и произведение элементов перед и после максимального элемента массива - C++
В заданном массиве S (10) найти сумму элементов, расположенных перед максимальным элементом и произведение элементов, стоящих после...


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

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

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