Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2017, 21:22   #1
PickaBuu
Пользователь
 
Регистрация: 25.05.2017
Сообщений: 16
По умолчанию [C#] Дан массив.Создать новый массив, в который поместить элементы так: первым поместить макс. элемент исходного массива, затем мин; далее макс и мин из оставшихся и так далее

5. Дан массив действительных чисел. Создать новый массив, в который поместить элементы следующим образом: первым поместить максимальный элемент исходного массива, затем минимальный; далее максимальный и минимальный из оставшихся элементов и т.д.
Понимаю, что нужно делать, но не понимаю, как сделать так, чтобы после нахождения первого самого максимального и минимального исключить их дальнейшего поиска.
PickaBuu вне форума Ответить с цитированием
Старый 11.12.2017, 21:45   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от PickaBuu Посмотреть сообщение
Понимаю, что нужно делать, но не понимаю, как сделать так, чтобы после нахождения первого самого максимального и минимального исключить их дальнейшего поиска.
Просто отсортируйте исходный массив, потом берите для нового массива первый с начала, потом первый с конца, потом второй с начала, второй с конца и так далее, пока не дойдёте до середины массива.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.12.2017, 21:00   #3
PickaBuu
Пользователь
 
Регистрация: 25.05.2017
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Просто отсортируйте исходный массив, потом берите для нового массива первый с начала, потом первый с конца, потом второй с начала, второй с конца и так далее, пока не дойдёте до середины массива.
Цитата:
потом берите для нового массива первый с начала, потом первый с конца, потом второй с начала, второй с конца и так далее, пока не дойдёте до середины массива.
Можете показать, как это реализовать?
Размерность массива задается пользователем, т.е она не фиксированная.
Вот, у меня есть уже отсортированный одномерный массив(от меньшего к большему).
Как сделать так, чтобы он хватал сначала последний, потом первый итд, как вы сказали.
Помогите :с
PickaBuu вне форума Ответить с цитированием
Старый 17.12.2017, 21:03   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Вот, основываясь на вашем коде, полное решение
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 18.12.2017, 01:50   #5
PickaBuu
Пользователь
 
Регистрация: 25.05.2017
Сообщений: 16
По умолчанию

Код:
//начнем заполнение нового массива
            int f = razm1 - 1;
            int s = 0;
            do
            {
                for (int i = 0; i <= razm1; i = i + 2)
                {
                    newMass[i] = massiv1[f];
                    newMass[i + 1] = massiv1[s];
                    f = f - 1;
                    s = s + 1;
                }
            }
            while (f != s);

            for (int j = 0; j < razm1; j++)//вывод измененного исходного массива
            { listBox3.Items.Add(newMass[j]); };
        }
Вот, накидала код.
Выдает ошибку: Индекс находился вне границ массива
PickaBuu вне форума Ответить с цитированием
Старый 18.12.2017, 07:49   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от PickaBuu Посмотреть сообщение
Выдает ошибку: Индекс находился вне границ массива
из-за того что размер массива не четный.
Как вариант:
Код:
public static void Main(string[] args)
        {
            Random rnd = new Random();
            int razm1 = rnd.Next(10);
            int[] massiv1= new int[razm1];
            int[] newMas = new int[razm1];
            
            for(int i = 0;i<razm1;i++) {massiv1[i] = rnd.Next(-10,10); Console.Write("{0} ",massiv1[i]);}
            Console.WriteLine();
            for(int i = 0;i<razm1;i++)
                for(int j=i;j<razm1;j++)
                  if(massiv1[i]<massiv1[j]) {int h=massiv1[i];massiv1[i]=massiv1[j];massiv1[j]=h;}
            for(int i = 0;i<razm1;i++) Console.Write("{0} ",massiv1[i]);
            Console.WriteLine();
            
            int mid = razm1 / 2;
            Console.WriteLine("{0} <= {1}",mid, razm1);
            int f = razm1 - 1;
            int s = 0;
            int p = 0;
            for(;s<f;s++,f--)
            //do
            {
                    Console.WriteLine("{0}: {1} <> {2}",p,massiv1[s],massiv1[f]);
                    newMas[p] = massiv1[s];
                    newMas[p + 1] = massiv1[f];
              //      f--;
              //      s++;
                    p = p + 2;
            }
            //while (f >= s);
            newMas[razm1-1]=massiv1[f];
            for(int i = 0;i<razm1;i++) Console.Write("{0} ",newMas[i]);
        }
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удалить элементы массива между мин.и макс. элементами(С) novichok_yu Помощь студентам 1 25.05.2014 09:29
макс. и мин. элемент массива С++ Danil_59 Фриланс 3 27.12.2011 19:19
макс. и мин. элемент массива Danil_59 Помощь студентам 2 26.12.2011 21:28
Матрица, каждой строке найти макс. и мин. элементы и поменять их с первым и последним элементом строки (Паскаль) тина222 Помощь студентам 0 02.11.2011 22:01
Поставить мин. элемент вначало массива, а макс.-в конец dima-intro Помощь студентам 7 19.12.2010 18:23