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

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

Восстановить пароль Регистрация
 
Godbrit
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 6
28.10.2013, 09:19     Переставить максимальный и минимальный элементы в массиве #1
Здравствуйте
Есть 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();   }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2013, 09:19     Переставить максимальный и минимальный элементы в массиве
Посмотрите здесь:

C++ В массиве переставить местами первый и максимальный элементы, а также последний и минимальный
Переставить максимальный и минимальный элементы в массиве. C++
Найти в массиве минимальный и максимальный элементы. Вывести последовательность значений из этого диапазона, не встречающихся в данном массиве C++
C++ Найти в массиве максимальный и минимальный элементы в массиве и их количество
Переставить в массиве местами максимальный и минимальный элементы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
}
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 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...
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) значит на с++)
Евгений12
 Аватар для Евгений12
59 / 57 / 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.
Что не так?
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 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");
  
}
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
28.10.2013, 10:19     Переставить максимальный и минимальный элементы в массиве #7
Евгений12, sizeof возвращает количество байт, потому в цикле for (i = 0; i < sizeof(array); i++) вылазите за пределы
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 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...
Godbrit
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 6
28.10.2013, 10:57  [ТС]     Переставить максимальный и минимальный элементы в массиве #9
Странно... Делал в Borland C++
Godbrit
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 6
28.10.2013, 11:16  [ТС]     Переставить максимальный и минимальный элементы в массиве #10
Установил Визуал студио ну проблема в том что в сплывающем окне ничего не написано и нельзя ввести массив, да и я в программе не вижу где сама строчка с этой командой.
Миниатюры
Переставить максимальный и минимальный элементы в массиве  
rpsv
15 / 46 / 3
Регистрация: 14.10.2013
Сообщений: 161
28.10.2013, 11:20     Переставить максимальный и минимальный элементы в массиве #11
Godbrit, потому что вы взяли код DmitryM5! Там юзер в приницпе ничего не делает, прога сама собой пыхтит и все (и еще не факт что работает).

Попробуйте коды которые ДО него кидали! Тот который я кидал ТОЧНО работает! ;-)
Godbrit
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 6
28.10.2013, 11:24  [ТС]     Переставить максимальный и минимальный элементы в массиве #12
rpsv, и вправду. Огромное спасибо.Все работает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2013, 11:29     Переставить максимальный и минимальный элементы в массиве
Еще ссылки по теме:

C++ максимальный и минимальный элементы в линейном массиве
C++ Переставить местами максимальный и минимальный элементы массива
C++ В двухмерном массиве найти максимальный и минимальный элементы и их координаты в массиве

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

Или воспользуйтесь поиском по форуму:
rpsv
15 / 46 / 3
Регистрация: 14.10.2013
Сообщений: 161
28.10.2013, 11:29     Переставить максимальный и минимальный элементы в массиве #13
Godbrit, вообще всегда пробуйте несколько вариантов ... потому что люди часто по разному абсолютно пишут, и один код где-то лучше, где-то хуже!

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

DmitryM5, на досуге почитайте "Рефакторинг. улучшение существующего кода" Мартин Фаулер. Вам полезно!
Yandex
Объявления
28.10.2013, 11:29     Переставить максимальный и минимальный элементы в массиве
Ответ Создать тему
Опции темы

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