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

Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
20.12.2010, 23:22     Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины #1
В общем, есть две задачи, ух на какую же веселую и ни черта не понятную для меня тему.

1. Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины.

2. Задан вещественный массив размера N. Отсортировать все отрицательные элементы в порядке возрастания. Остальные элементы оставить без изменений. Пример:
-4 5 -7 9 0 -1 3 -5 2 -6 → -7 5 -6 9 0 -5 3 -4 2 -1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2010, 23:22     Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины
Посмотрите здесь:

C++ pelles c Задан целочисленный массив размера N
C++ Задан вещественный массив размера N. Создать целочисленный массив такого же размера, в котором будут записаны индексы исходного массива в порядке во
Отсортировать массив М и строки матрицы А в порядке убывания C++
Дан целочисленный массив размера N. Вывести все содержащиеся в данном массиве четные числа в порядке убывания их индексов, а также их количество K C++
C++ Дан целочисленный массив размера N. Вывести вначале все содержащиеся в данном массиве четные числа в порядке возрастания их индексов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
22.12.2010, 22:52  [ТС]     Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины #2
Решил чиркануть мысль по поводу второй задачи.

#include <stdio.h>

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main(int argc, char *argv[])
{
    int n;
    printf("Enter size of massive ");
    scanf("%d", &n);
    double arr[n];
    for(int i = 0; i < n; i++){
    printf("arr[%d] ", i);
        scanf("%lf", &arr[n]);
    
    }
            if(arr[n] < 0){
            printf("%lf \n", arr[n]);
        }
    return 0;
}
массив я получил, однако все отрицательные элементы из него получить я не могу, только последний, естественно происходит ситуация, что я не могу отсортировать данные элементы в порядке возрастания.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
22.12.2010, 23:12     Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины #3
Цитата Сообщение от napalm2005 Посмотреть сообщение
все отрицательные элементы из него получить я не могу, только последний,
действительно странного, ведь n - это размер массива, и arr[n] - ссылка некорректна, ибо обращается к несуществующему элементу массива. это во-первых.
А во вторых, размером массива(кроме динамического) должна быть константа, а n - у вас это просто переменная. то есть объявление double arr[n] - не корректно.
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
23.12.2010, 19:31  [ТС]     Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины #4
Цитата Сообщение от RUSya82 Посмотреть сообщение
действительно странного, ведь n - это размер массива, и arr[n] - ссылка некорректна, ибо обращается к несуществующему элементу массива. это во-первых.
А во вторых, размером массива(кроме динамического) должна быть константа, а n - у вас это просто переменная. то есть объявление double arr[n] - не корректно.
Но ведь я ручками ввожу как размер, так и элементы массива(через цикл). Размер массива в данном случае вообще не может быть константой, т.к. он задается пользователем.

Добавлено через 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
#include <stdio.h>
 
int main(int argc, char *argv[])
{
    int n;
    printf("Enter size of massive ");
    scanf("%d", &n);
    double arr[n];
    for(int i = 0; i < n; i++){
    printf("arr[%d] ", i);
        scanf("%lf", &arr[n]);
        int pos =0;
    for(int i = 1; i < n; i++)
    {
        if(arr[i] < arr[pos] && arr[i] < 0) i = pos;
    }
    
    }
    
    printf("\n sorted: \n");
    for (int i = 0; i < n; i++) {
        printf("%lf ", arr[i]);
    }
    return 0;
}
Эх, обидно до невозможности, все сводится к тому, что я не могу зафиксировать вообще элементы массива, как итог, одни нолики.

Добавлено через 19 часов 44 минуты
Продолжим по поводу второй задачи, чутка разобрался как вывести массив.

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 <stdio.h>
 
int main(int argc, char *argv[])
{
    int n;
    printf("Enter size of massive ");
    scanf("%d", &n);
 
 
    double arr[n];
    for(int i = 0; i < n; i++){
    printf("arr[%d] ", i);
        scanf("%lf", &arr[i]);}
    printf("\n massive: \n");
    for (int i = 0; i < n; i++) {
        printf("%lf ", arr[i]);
    }
 
    int pos = 0;
    
    for(int i = 1; i < n; i++)
    {
        if(arr[i] < 0) i = pos;
    }
    
    
    
    printf("\n sorted: \n");
    for (int i = 0; i < n; i++) {
        printf("%lf ", arr[i]);
    }
    return 0;
}
А вот добраться до отрицательных элементов как-то не получается.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
23.12.2010, 19:35     Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины #5
Цитата Сообщение от napalm2005 Посмотреть сообщение
Размер массива в данном случае вообще не может быть константой, т.к. он задается пользователем.
Это бред...
Если Вы хотите, чтобы размер массива задавал пользователь, используйте динамический массив
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
23.12.2010, 19:45  [ТС]     Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины #6
Цитата Сообщение от RUSya82 Посмотреть сообщение
Это бред...
Если Вы хотите, чтобы размер массива задавал пользователь, используйте динамический массив
Этого я делать не буду. Во-первых, я не знаю, что такое динамический массив, во вторых, из последнего кода мне удалось получить и вывести массив на экран, теперь мне необходимо остортировать его отрицательные элементы по возрастанию.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
23.12.2010, 20:06     Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины #7
Цитата Сообщение от napalm2005 Посмотреть сообщение
Но ведь я ручками ввожу как размер, так и элементы массива
Так то Ваш компилятор этого пропустить не должен, в любом случае это грубейшая ошибка.
Цитата Сообщение от napalm2005 Посмотреть сообщение
Этого я делать не буду
Я Вас и не заставляю, больно надо...
Удачи
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2010, 01:02     Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины
Еще ссылки по теме:

C++ Задан массив размера N. Определить число положительных элементов в массиве
C++ Массивы. Отсортировать 100 самых больших чисел в порядке убывания и добавить отсортированные числа в созданный 3 массив
Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в порядке убывания C++

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

Или воспользуйтесь поиском по форуму:
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
24.12.2010, 01:02  [ТС]     Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины #8
Цитата Сообщение от RUSya82 Посмотреть сообщение
Так то Ваш компилятор этого пропустить не должен, в любом случае это грубейшая ошибка.

Удачи
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int main(int argc, char *argv[])
{
        int n;
        printf("Enter size of massive ");
        scanf("%d", &n);
 
 
        double arr[n];
        for(int i = 0; i < n; i++){
        printf("arr[%d] ", i);
                scanf("%lf", &arr[i]);}
        printf("\n massive: \n");
        for (int i = 0; i < n; i++) {
                printf("%lf ", arr[i]);
        }
        return 0;
}
Компилятор выводит этот массив без проблем. Я его несколько раз прогонял.

И теперь я вроде бы знаю, как получить отрицательные элементы, однако как их отсортировать, да так, чтобы не затрагивать иные элементы массива, вот это уже вопрос.

Добавлено через 3 часа 51 минуту
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
#include <stdio.h>
 
int main(int argc, char *argv[])
{
    int n;
    printf("Enter size of massive ");
    scanf("%d", &n);
 
 
    double arr[n];
    for(int i = 0; i < n; i++){
    printf("arr[%d] ", i);
        scanf("%lf", &arr[i]);}
 
    
    // представляем, что отрицательный элемент самый первый
    for(int pos = 0; pos < n; pos++)
    {
    for(int x = pos +1; x < n; x++){
            if(arr[x] <0) x=pos;
            if(arr[pos] < arr[x]){
            int min = arr[pos];
                arr[pos] = arr[x];
                arr[x] = min;
            }
        }
    }
        
    printf("\n sorted: \n");
    for (int i = 0; i < n; i++) {
        printf("%lf ", arr[i]);
    }
    return 0;
}
Прога после получения массива вообще не компилируется, а понятного все меньше.

Добавлено через 51 минуту
#include <stdio.h>

int main(int argc, char *argv[])
{
int n;
printf("Enter size of massive ");
scanf("%d", &n);


double arr[n];
for(int i = 0; i < n; i++){
printf("arr[%d] ", i);
scanf("%lf", &arr[i]);}
printf("\n prostoi massiv \n");
for(int i = 0; i < n; i++){
printf("%lf ", arr[i]);}

// представляем, что отрицательный элемент самый первый
for(int pos = 0; pos < n; pos++)
{
for(int x = pos +1; x < n; x++)
if(arr[pos] > arr[x] && arr[x] < 0 && arr[pos] < 0){
int min = arr[x];
arr[x] = arr[pos];
arr[pos] = min;
}

}

printf("\n sorted: \n");
for (int x = 0; x < n; x++) {
printf("%lf ", arr[x]);
}
return 0;
}

Все-таки я это сделал. Да!!! Народ, может кто подсказать, что такое серия, а то я толком врубиться не могу.
Yandex
Объявления
24.12.2010, 01:02     Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины
Ответ Создать тему
Опции темы

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