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

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

Восстановить пароль Регистрация
 
kenasa
Сообщений: n/a
24.02.2011, 16:20     Как вставить индекс после максимального элемента массива со смещением остальных элементов? #1
После первого максимального (минимального) элемента массива вставьте его номер, передвинув все элементы массива, сле¬дующие за ним, вправо на одну позицию. При этом значение последнего элемента теряется.

то есть если дан массив 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++
C++ Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.
C++ В одновременном массиве, состоящем из n элементов, вычислить сумму элементов после максимального элемента массива
C++ В одномерном массиве вычислить номер максимального элемента массива и сумму элементов массива, расположенных после первого положительного
Массив: произвести сдвиг элементов на к позиций, где к-индекс максимального элемента массива C++
Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – индекс максимального элемента C++
Вычислить сумму элементов массива, расположенных после максимального элемента C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
24.02.2011, 17:06     Как вставить индекс после максимального элемента массива со смещением остальных элементов? #2
Я может что-то недопонял? Но у Вас получается тогда двойное смещение, если одновременно заменять и минимальное число и максимальное так? Или, как в Вашем примере, только один вариант менять мин/макс?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 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;
}
Yandex
Объявления
24.02.2011, 17:16     Как вставить индекс после максимального элемента массива со смещением остальных элементов?
Ответ Создать тему
Опции темы

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