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

В заданном массиве из n элементов отсортировать по возрастанию его часть - C++

Восстановить пароль Регистрация
 
elka
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 38
01.04.2012, 12:58     В заданном массиве из n элементов отсортировать по возрастанию его часть #1
Здравствуйте!
В заданном массиве из n элементов отсортировать по возрастанию его часть, находящуюся между двумя введенными номерами. Массив формируется из случайных чисел в диапазоне от –100 до 100, номера вводятся как два целых числа, не большие чем n
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2012, 12:58     В заданном массиве из n элементов отсортировать по возрастанию его часть
Посмотрите здесь:

C++ во в введённом массиве отсортировать по возрастанию все элементы на нечётных позициях массива.
В заданном массиве из n элементов отсортировать по возрастанию его часть C++
C++ В заданном массиве отсортировать по возрастанию его часть, находящуюся между двумя введенными номерами.
прочитать массив из файла и отсортировать его по возрастанию C++
C++ Переписать все элементы з матрицы С в одномерный массив F, отсортировать его по возрастанию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
eji
116 / 116 / 6
Регистрация: 17.09.2010
Сообщений: 288
01.04.2012, 13:21     В заданном массиве из n элементов отсортировать по возрастанию его часть #2
elka,
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
#include <iostream>
#include <stdio.h>
#include <time.h>
 
using namespace std;
 
int main()
{
    cout << "Array"
         << endl;
    int sz;
    printf("Array size: ");
    scanf("%i", &sz);
    srand(time(NULL));
    int a[sz];
    cout << "-------------------------------------------\n";
    for(int i = 0; i < sz; i++)
    {
        a[i] = rand() % 200 - 100;
        printf("[%i]: %i\n", i, a[i]);
    }
    int x, y;
    printf("Input x: ");
    scanf("%i", &x);
    printf("Input y: ");
    scanf("%i", &y);
    for(int i = 0; i < sz; i++)
    {
        if(!(i >= x && i <= y)) goto A;
        for(int j = 1 + i; j < sz; j++)
        {
            if(!(j >= x && j <= y)) continue;
            if(a[i] < a[j])
            {
                int tmp = a[i];
                a[i] = a[j];
                a[j] = tmp;
            }
        }
        A: printf("[%i]: %i\n", i, a[i]);
    }
    system("pause");
    return 0;
}
elka
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 38
01.04.2012, 13:25  [ТС]     В заданном массиве из n элементов отсортировать по возрастанию его часть #3
можете объяснить вот это как раз место?
C++
1
2
3
4
if(!(i >= x && i <= y)) goto A;
        for(int j = 1 + i; j < sz; j++)
        {
            if(a[i] < a[j])
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
01.04.2012, 13:30     В заданном массиве из n элементов отсортировать по возрастанию его часть #4
Цитата Сообщение от eji Посмотреть сообщение
elka,
C++
1
2
3
4
5
6
7
8
for(int i = 0; i < sz; i++)
    {
        if(!(i >= x && i <= y)) goto A;
        for(int j = 1 + i; j < sz; j++)
        {        }
        A: printf("[%i]: %i\n", i, a[i]);
    }
}
Какая жесть с гоуту!! Таких еретиков с безусловными переходами в коде в средние века на кострах сжигали.
Тем более вас не понять.
Не легче написать так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for(int i = x; i < y; i++)
    {
        for(int j = 1 + i; j < y; j++)
        {   
            if(a[i] < a[j])
            {
                int tmp = a[i];
                a[i] = a[j];
                a[j] = tmp;
            }   
        }
    }
}
eji
116 / 116 / 6
Регистрация: 17.09.2010
Сообщений: 288
01.04.2012, 13:34     В заданном массиве из n элементов отсортировать по возрастанию его часть #5
elka, если текущий индекс элемента массива не попадает в диапазон, который задан пользователем, то пропускаем сортировку и переходим к метке "А". Да, небольшая ошибочка, чтобы забыл вставить еще одно условие перед:
C++
1
if(a[i] < a[j])
Вставьте туда вот это:
C++
1
if(!(j >= x && j <= y)) continue;
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
01.04.2012, 13:36     В заданном массиве из n элементов отсортировать по возрастанию его часть #6
метки ето плохой тон
elka
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 38
01.04.2012, 13:40  [ТС]     В заданном массиве из n элементов отсортировать по возрастанию его часть #7
можно все-таки узнать,что значит это?
C++
1
2
3
for(int i = x; i < y; i++)
    {
        for(int j = 1 + i; j < y; j++)
Добавлено через 2 минуты
для чего введено j?
eji
116 / 116 / 6
Регистрация: 17.09.2010
Сообщений: 288
01.04.2012, 13:44     В заданном массиве из n элементов отсортировать по возрастанию его часть #8
Kuzia domovenok,
C++
1
Таких еретиков с безусловными переходами в коде в средние века на кострах сжигали.
Говори, да не заговаривайся, я тебе что в кашу плюнул что ли? Стоял бы рядом ты... Теперь по теме, в твоем коде идет цикл не по всем элементам и соответственно на печать ты их не выводишь, а у меня выводятся на печать все элементы. Я знаю, что готу используется редко, но инога он полезен, будете отрицать? Да валяйте.

Добавлено через 2 минуты
elka, http://ru.wikipedia.org/wiki/%D0%A1%...80%D0%BE%D0%BC
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 13:46     В заданном массиве из n элементов отсортировать по возрастанию его часть
Еще ссылки по теме:

C++ С++ Отсортировать целочисленный массив по возрастанию суммы двух последних цифр в записи его элементов
C++ Заполнить массив размером 10 случайными числами от 0 до 10, отсортировать его по возрастанию
Отсортировать строки в двумерном массиве по возрастанию минимального элемента C++

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

Или воспользуйтесь поиском по форуму:
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.04.2012, 13:46     В заданном массиве из n элементов отсортировать по возрастанию его часть #9
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
#include <vector>
#include <iostream>
#include <algorithm>
#include <random>
#include <cstdlib>
#include <iomanip>
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> uid(-100, 100);
    const std::size_t size = 10;
    std::vector<int> v(size);
    std::generate(v.begin(), v.end(), [&gen, &uid] () { return uid(gen); });
    for(const auto& elem: v)
        std::cout << std::setw(4) << elem;
    std::cout << std::endl;
    const std::size_t   first   = 3,
                        last    = 8;
    std::sort(v.begin() + first, v.begin() + last);
    for(const auto& elem: v)
        std::cout << std::setw(4) << elem;
    std::cout << std::endl;
    return 0;
}
Yandex
Объявления
01.04.2012, 13:46     В заданном массиве из n элементов отсортировать по возрастанию его часть
Ответ Создать тему
Опции темы

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