0 / 0 / 0
Регистрация: 15.12.2012
Сообщений: 6
1

Поменять местами максимальный элемент массива и минимальный элемент части массива, расположенной после максимального

15.12.2012, 16:59. Показов 4450. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача
Поменять местами максимальный элемент массива и минимальный элемент части массива, расположенной после максимального. Массив необходимо использовать в качестве параметра.

У меня получается просто мин и мах поменять, а надо элемент, расположенной после максимального

подскажите что необходимо поменять? я совсем новичок

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
60
61
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication7
{
    class Program
    {
        static void maxx(int[] x, ref int xmax, ref int imax)
         {
            xmax = x[0];
            imax = 0;
            for (int i = 0; i < x.Length; i++)
            {
                if (x[i] >= xmax)
                {
                    xmax = x[i];
                    imax = i;
                }
            }
         }
        static void minn(int[] x, ref int xmin, ref int imin, int imax)
        {
 
            xmin = x[imax];  // по идеи что бы начал искать после максимального числа, но что не то
            imin = imax;
            for (int i = 0; i < x.Length; i++)
            {
                if (x[i] <= xmin)
                {
                    xmin = x[i];
                    imin = i;
                }
            }
        }
        static void Main()
        {
            int[] a = new int[]{1, 7, 3, 5, 6, 2};
           
            for (int i=0; i<a.Length; i++)
            {
                Console.Write("{0:d}   ", a[i]);
            }
            Console.WriteLine();
            Console.WriteLine();
 
            int amax = 0, amin=0, iamax=0, iamin=0;
            maxx (a, ref amax, ref iamax);
            minn(a, ref amin, ref iamin, iamax);    // тут видимо что то другое должно быть, а не iamax
            a[iamax] = amin; a[iamin]=amax;
           
            for (int i =0; i<a.Length;i++)
            {
                Console.Write("{0:d}   ", a[i]);
            }
            Console.WriteLine();
          
            
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2012, 16:59
Ответы с готовыми решениями:

Поменять местами строку, содержащую максимальный элемент массива, со строкой, содержащей минимальный элемент массива
сложно дались массивы, помогите написать код. Дан вещественный массив А. Поменять местами строку,...

Поменять местами минимальный элемент первого массива и максимальный элемент второго массива
Нужно создать два массива( например A и D) состоящих из 10 элементов заданных случайным образом на...

Найти максимальный элемент массива и минимальный элемент массива и поменять их местами
Задача 1. Массив X(50). Найти максимальный элемент массива и минимальный элемент массива и поменять...

Найти максимальный элемент и минимальный элемент массива и поменять их местами.
2)В массиве М(45) лежат целые числа. Найти максимальный элемент (первый) и минимальный элемент...

3
737 / 282 / 82
Регистрация: 12.12.2012
Сообщений: 561
15.12.2012, 21:06 2
Лучший ответ Сообщение было отмечено Jacen11 как решение

Решение

Разбирать ваш код не стал. Если хотите, вот вам мой вариант.
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
static void ChangeArr(int[] a)
        {
            int indxMaxNum = 0; // Индекс максимального элемента
            int indxMinNum = 0; // Индекс минимального элемента
            int tempNum = 0; // Временная переменная
            int i = 0; // Переменная цикла
 
            // Ищем индекс максимального элемента
            tempNum = int.MinValue;
            for (i = 0; i < a.Length; i++)
                if (a[i] > tempNum)
                {
                    indxMaxNum = i;
                    tempNum = a[i];
                } // if
 
            // Ищем индекс минимального элемента в оставшихся
            tempNum = int.MaxValue;
            if (indxMaxNum < a.Length - 1) // Если максимальный элемент не последний
            {
                for (i = indxMaxNum + 1; i < a.Length; i++)
                    if (a[i] < tempNum)
                    {
                        indxMinNum = i;
                        tempNum = a[i];
                    } // if for
            } // if
 
            // Меняем местами
            if (indxMinNum > indxMaxNum) // 
            {
                tempNum = a[indxMaxNum];
                a[indxMaxNum] = a[indxMinNum];
                a[indxMinNum] = tempNum;
            } // if
        } // ChangeArr(int[] a)
1
0 / 0 / 0
Регистрация: 15.12.2012
Сообщений: 6
16.12.2012, 21:54  [ТС] 3
а в мэйне что писать в таком случае?
0
737 / 282 / 82
Регистрация: 12.12.2012
Сообщений: 561
18.12.2012, 01:38 4
Лучший ответ Сообщение было отмечено Jacen11 как решение

Решение

Цитата Сообщение от Jacen11 Посмотреть сообщение
а в мэйне что писать в таком случае?
Инициализацию массива и применение метода. Например так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
static void Main(string[] args)
        {
            Random randNum = new Random();
            int[] arr = new int[20]; // Целочисленный массив на 20 элементов
 
            // Инициализируем массив случайными числами диапазона от -10 до 10
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = randNum.Next(-10, 10);
            }
 
            Console.WriteLine("Исходный массив:"); // Выводим исходный массив
            foreach (int i in arr)
                Console.Write("{0} ", i);
            Console.WriteLine();
 
            ChangeArr(arr); // Обрабатываем массив
 
            Console.WriteLine("Изменённый массив:"); // Выводим изменённый массив
            foreach (int i in arr)
                Console.Write("{0} ", i);
            Console.WriteLine();
        } // Main()
Кстати, сейчас возник вопрос. Как должна себя повести программа, если в массиве встречается не один, а, скажем два элемента, имеющих максимальное значение? От какого из них отталкиваться? При заполнении случайными числами такое очень даже возможно.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2012, 01:38
Помогаю со студенческими работами здесь

Поменять местами минимальный элемент с первым элементом массива, а максимальный элемент с последним
Здравствуйте. Помогите пожалуйста написать программу: для поиска минимального и максимального...

В матрице поменять местами строку, содержащую минимальный элемент, со строкой, содержащей максимальный элемент массива
Помогите пожалуйста поправить код... Задание:В двумерном N*K массиве целых чисел поменять местами...

Поменять местами минимальный и максимальный элемент массива V[25] и подсчитать количество парных элементов массива
Поменять местами минимальный и максимальный элемент массива V и подсчитать количество парных...

Oпределить минимальный элемент массива и его порядковый номер, найденный минимальный элемент поменять местами с последним элементом массива.
Обработать на компьютере одномерный массив E(N): определить минимальный элемент массива и его...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru