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

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

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

Переставить максимальный и минимальный элементы в массиве - C++

28.10.2013, 09:19. Просмотров 853. Ответов 12
Метки нет (Все метки)

Здравствуйте
Есть 1 массив, который надо вбить. В этом массиве нужно определить и переставить максимальный и минимальный элементы в массиве.
Вроде должно работать,однако я что-то неправильно написал. Помогите пожалуйста. Заранее Спасибо

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
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
 { const n = 4;
  int  i,  a[n], b, k ;
  int max, min;
   clrscr();
    cout << "Vvedite elementi massiva: \n";
      for   ( i = 0; i <= n-1; i++ )
       {
           printf("a[ %d ]=    ", i); // 
              scanf( "%d", &a[i] ); // 
                }
;
   max = a[0];
  for   (i = 0; i < n;  i++)
     if (max < a[i] ) max = a[i];
   printf(" \n  max= %d", max);
     min = a[0];
     k=i  ;
  for   (i = 0; i > n;  i++)
     if (min < a[i] ) min = a[i];
   printf(" \n  min= %d", min);
     b=i   ;
a[k]=max;
a[b]=min;
cout << "\n Vveden massiv \n";
for ( i = 0; i <= n-1; i++ )
printf("%d ", a[i]);
getch(); }
    getch();   }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2013, 09:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переставить максимальный и минимальный элементы в массиве (C++):

Переставить максимальный и минимальный элементы в массиве. - C++
Добрый день, помогите. Переставить максимальный и минимальный элементы в массиве.

Переставить в массиве местами максимальный и минимальный элементы - C++
Вычислить выражение 1*2+2*3*4+3*4*5*6+...+n*(n+1)*(n+2)*...*2n Дан массив X из N целых чисел. Переставить в X местами...

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

Переставить местами максимальный и минимальный элементы массива - C++
Дан массив, состоящий из n целых чисел (n&lt;=10). Переставить местами максимальный и минимальный элементы.

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

Найти в массиве максимальный и минимальный элементы в массиве и их количество - C++
Помогите, пожалуйста, начал осваивать c++...Не могу справиться с такой задачей: Написать программу, которая вводит с клавиатуры массив...

12
rpsv
15 / 46 / 3
Регистрация: 14.10.2013
Сообщений: 161
28.10.2013, 09:55 #2
Godbrit, у меня такое подозрение что вы темой ошиблись, потому что код у вас на С написан, а не на С++:

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
 
using namespace std;
 
int main()
{
    const int Count = 4;
    int a[Count];
    //
    // Ввод массива
    //
    for (int i = 0; i < Count; i++)
    {
        cout<<"a["<< i <<"] = ";
        cin>>a[i];
    }
    //
    // Поиск максимального и минимального элемента
    //
    int max = INT_MIN;
    int index_max = -1;
    //
    int min = INT_MAX;
    int index_min = -1;
    //
    for (int i = 0; i < Count; i++)
    {
        if ( a[i] > max )
        {
            max = a[i];
            index_max = i;
        }
        //
        if ( a[i] < min )
        {
            min = a[i];
            index_min = i;
        }
    }
    //
    // Выводим ответы
    //
    cout<<"\n\nMAX item a["<< index_max <<"] = "<< max <<endl;
    cout<<"MIN item a["<< index_min <<"] = "<< min <<endl;
    //
    // Выводим начальный массив
    //
    cout<<"\n\nINPUT: a[] = { "<<a[0]<<", "<<a[1]<<", "<<a[2]<<", "<<a[3]<<"}"<<endl;
    //
    // Меняем элементы местами и выводим полученный массив
    //
    a[index_max] = min;
    a[index_min] = max;
    //
    cout<<"OUTPUT: a[] = { "<<a[0]<<", "<<a[1]<<", "<<a[2]<<", "<<a[3]<<"}\n"<<endl;
    //
    system("pause");
    return 0;
}
0
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 863
Записей в блоге: 1
28.10.2013, 10:01 #3
Цитата Сообщение от Godbrit Посмотреть сообщение
Здравствуйте
Есть 1 массив, который надо вбить. В этом массиве нужно определить и переставить максимальный и минимальный элементы в массиве.
Вроде должно работать,однако я что-то неправильно написал. Помогите пожалуйста. Заранее Спасибо

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
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
 { const n = 4;
  int  i,  a[n], b, k ;
  int max, min;
   clrscr();
    cout << "Vvedite elementi massiva: \n";
      for   ( i = 0; i <= n-1; i++ )
       {
           printf("a[ %d ]=    ", i); // 
              scanf( "%d", &a[i] ); // 
                }
;
   max = a[0];
  for   (i = 0; i < n;  i++)
     if (max < a[i] ) max = a[i];
   printf(" \n  max= %d", max);
     min = a[0];
     k=i  ;
  for   (i = 0; i > n;  i++)
     if (min < a[i] ) min = a[i];
   printf(" \n  min= %d", min);
     b=i   ;
a[k]=max;
a[b]=min;
cout << "\n Vveden massiv \n";
for ( i = 0; i <= n-1; i++ )
printf("%d ", a[i]);
getch(); }
    getch();   }
У вас скорее всего ошибки в for и в операторах if.
Так как нету { }.
Некоторые действий выполняются всегда,независимо от if...
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
28.10.2013, 10:10 #4
Вместо <iostream.h> лучше писать просто <iostream>
Не забываем, что надо указать какое пространство имен используете: using namespace std; или std:: пере функциями из этого пространства(такими как cout)
Если вы пишите в VS, то лучше писать system("cls"), а не clrscr();
C++
1
const n = 4;
моя студия не захавала, укажите тип..
эта часть кода вообще не выполняется,ибо условие фора неправильное(поменяйте знак неравенства)
Цитата Сообщение от Godbrit Посмотреть сообщение
for * (i = 0; i > n; *i++)
* * *if (min < a[i] ) min = a[i];
последний getch() вообще стоит за закрывающей скобкой главной функции, проверьте расположение скобок.
Так же не рекомендуется писать void main(); Все-так лучше,чтобы main-функция возвращала int

Добавлено через 5 минут
rpsv, там есть cout) значит на с++)
0
Евгений12
60 / 58 / 10
Регистрация: 16.02.2013
Сообщений: 146
28.10.2013, 10:16 #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
using namespace std;
 
int main()
    {
        int array[10], i, max, min, Countmax, Countmin;
        for (i = 0; i < 10; i++)
            array[i] = i + 5;
        max = array[0];
        min = array[0];
        for (i = 0; i < sizeof(array); i++)
            {
                if(array[i] > max)
                    {
                    max = array[i];
                    Countmax = i;
                    }
 
                if(array[i] < min)
                    {
                    min = array[i];
                    Countmin = i;
                    }
            }
        array[Countmax] = min;
        array[Countmin] = max;
        return 0;
    }
возникает исключение:
Run-Time Check Failure #2 - Stack around the variable 'array' was corrupted.
Что не так?
0
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 863
Записей в блоге: 1
28.10.2013, 10:18 #6
Цитата Сообщение от Godbrit Посмотреть сообщение
Здравствуйте
Есть 1 массив, который надо вбить. В этом массиве нужно определить и переставить максимальный и минимальный элементы в массиве.
Вроде должно работать,однако я что-то неправильно написал. Помогите пожалуйста. Заранее Спасибо

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
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
 { const n = 4;
  int  i,  a[n], b, k ;
  int max, min;
   clrscr();
    cout << "Vvedite elementi massiva: \n";
      for   ( i = 0; i <= n-1; i++ )
       {
           printf("a[ %d ]=    ", i); // 
              scanf( "%d", &a[i] ); // 
                }
;
   max = a[0];
  for   (i = 0; i < n;  i++)
     if (max < a[i] ) max = a[i];
   printf(" \n  max= %d", max);
     min = a[0];
     k=i  ;
  for   (i = 0; i > n;  i++)
     if (min < a[i] ) min = a[i];
   printf(" \n  min= %d", min);
     b=i   ;
a[k]=max;
a[b]=min;
cout << "\n Vveden massiv \n";
for ( i = 0; i <= n-1; i++ )
printf("%d ", a[i]);
getch(); }
    getch();   }
Если это действительно C,то я его не знаю,но вот примерное что у вас набросал на C++.
Я думаю чуть сможете переделать если что...
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
41
42
43
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <cstdlib>
 
using namespace std;
void main() { 
  const int N = 4;
  int  a[N], b, k ;
  int max, min;
  cout << "Vvedite elementi massiva: \n";
      for   (int i = 0; i < N; i++ )
       {
           printf_s("a[ %d ]=    ", i); // 
              scanf_s( "%d", &a[i] ); // 
                }
;
   max = a[0];min=a[0];
   k=0;b=0;
  for   (int i = 0; i < N;  i++) {
     if ( a[i]>max) {
         max = a[i];
         k=i  ;
     }
     if(a[i]<min) {
         min=a[i];
         b=i;
     }
}
 
 
int t=a[k];
a[k]=a[b];
a[b]=t;
 
cout << "\n Vveden massiv \n";
for (int  i = 0; i < N; i++ )
printf("%d ", a[i]);
 
 system("pause");
  
}
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
28.10.2013, 10:19 #7
Евгений12, sizeof возвращает количество байт, потому в цикле for (i = 0; i < sizeof(array); i++) вылазите за пределы
2
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 863
Записей в блоге: 1
28.10.2013, 10:19 #8
Цитата Сообщение от Евгений12 Посмотреть сообщение
У меня на такой код
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
using namespace std;
 
int main()
    {
        int array[10], i, max, min, Countmax, Countmin;
        for (i = 0; i < 10; i++)
            array[i] = i + 5;
        max = array[0];
        min = array[0];
               Countmax=0; Countmin=0;
        for (i = 0; i < sizeof(array); i++)
            {
                if(array[i] > max)
                    {
                    max = array[i];
                    Countmax = i;
                    }
 
                if(array[i] < min)
                    {
                    min = array[i];
                    Countmin = i;
                    }
            }
        array[Countmax] = min;
        array[Countmin] = max;
        return 0;
    }
возникает исключение:
Run-Time Check Failure #2 - Stack around the variable 'array' was corrupted.
Что не так?
Так пробуйте!
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
using namespace std;
 
int main()
    {
        int array[10], i, max, min, Countmax, Countmin;
        for (i = 0; i < 10; i++)
            array[i] = i + 5;
        max = array[0];
        min = array[0];
               Countmax=0; Countmin=0;
        for (i = 0; i < sizeof(array); i++)
            {
                if(array[i] > max)
                    {
                    max = array[i];
                    Countmax = i;
                    }
 
                if(array[i] < min)
                    {
                    min = array[i];
                    Countmin = i;
                    }
            }
        array[Countmax] = min;
        array[Countmin] = max;
        return 0;
    }
Думал мусор будет в Countmin...
1
Godbrit
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 6
28.10.2013, 10:57  [ТС] #9
Странно... Делал в Borland C++
0
Godbrit
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 6
28.10.2013, 11:16  [ТС] #10
Установил Визуал студио ну проблема в том что в сплывающем окне ничего не написано и нельзя ввести массив, да и я в программе не вижу где сама строчка с этой командой.
0
Миниатюры
Переставить максимальный и минимальный элементы в массиве  
rpsv
15 / 46 / 3
Регистрация: 14.10.2013
Сообщений: 161
28.10.2013, 11:20 #11
Godbrit, потому что вы взяли код DmitryM5! Там юзер в приницпе ничего не делает, прога сама собой пыхтит и все (и еще не факт что работает).

Попробуйте коды которые ДО него кидали! Тот который я кидал ТОЧНО работает! ;-)
0
Godbrit
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 6
28.10.2013, 11:24  [ТС] #12
rpsv, и вправду. Огромное спасибо.Все работает
0
rpsv
15 / 46 / 3
Регистрация: 14.10.2013
Сообщений: 161
28.10.2013, 11:29 #13
Godbrit, вообще всегда пробуйте несколько вариантов ... потому что люди часто по разному абсолютно пишут, и один код где-то лучше, где-то хуже!

P.S. а еще лучше читать книжки и самому писать!

DmitryM5, на досуге почитайте "Рефакторинг. улучшение существующего кода" Мартин Фаулер. Вам полезно!
0
28.10.2013, 11:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2013, 11:29
Привет! Вот еще темы с ответами:

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

Максимальный и минимальный элементы в линейном массиве - C++
Здравствуйте! ПОмогите пожалуйста! Нужно найти минимальный и максимальный элемент в линейном массиве из 15 элеметов. Но , чтобы вместо cout...

Поменять местами максимальный и минимальный элементы в массиве - C++
помогите пожалуйста, никак не получаются задачки... 2) Записать элементы массива Х, удовлетворяющие условию 1≤Xi≤2, подряд в массив Y....

Найти в массиве максимальный и минимальный элементы и поменять их местами - C++
Помогите разобраться Дан массив целых чисел. Найти в нем максимальный и минимальный элементы и поменять их местами. Задать размерность...


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

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

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