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

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

20.12.2010, 23:22. Показов 4525. Ответов 7
Метки нет (Все метки)

В общем, есть две задачи, ух на какую же веселую и ни черта не понятную для меня тему.

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

2. Задан вещественный массив размера N. Отсортировать все отрицательные элементы в порядке возрастания. Остальные элементы оставить без изменений. Пример:
-4 5 -7 9 0 -1 3 -5 2 -6 → -7 5 -6 9 0 -5 3 -4 2 -1
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2010, 23:22
Ответы с готовыми решениями:

Дан целочисленный массив размера N. Вывести все содержащиеся в данном массиве четные числа в порядке убывания их индексов, а также их количество K
Помогите написать программу. Дан целочисленный массив размера N. Вывести все содержащиеся в данном...

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

Дан целочисленный массив размера N. Вывести вначале все содержащиеся в данном массиве четные числа в порядке возрастания их индексов
Дан целочисленный массив размера N. Вывести вначале все содержащиеся в данном массиве четные числа...

Задан целочисленный массив размера N
Задан целочисленный массив размера N. Удалить из массива все элементы, значение которых равно X...

7
2 / 2 / 0
Регистрация: 08.12.2010
Сообщений: 40
22.12.2010, 22:52  [ТС] 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;
}
массив я получил, однако все отрицательные элементы из него получить я не могу, только последний, естественно происходит ситуация, что я не могу отсортировать данные элементы в порядке возрастания.
0
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
22.12.2010, 23:12 3
Цитата Сообщение от napalm2005 Посмотреть сообщение
все отрицательные элементы из него получить я не могу, только последний,
действительно странного, ведь n - это размер массива, и arr[n] - ссылка некорректна, ибо обращается к несуществующему элементу массива. это во-первых.
А во вторых, размером массива(кроме динамического) должна быть константа, а n - у вас это просто переменная. то есть объявление double arr[n] - не корректно.
0
2 / 2 / 0
Регистрация: 08.12.2010
Сообщений: 40
23.12.2010, 19:31  [ТС] 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;
}
А вот добраться до отрицательных элементов как-то не получается.
0
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
23.12.2010, 19:35 5
Цитата Сообщение от napalm2005 Посмотреть сообщение
Размер массива в данном случае вообще не может быть константой, т.к. он задается пользователем.
Это бред...
Если Вы хотите, чтобы размер массива задавал пользователь, используйте динамический массив
0
2 / 2 / 0
Регистрация: 08.12.2010
Сообщений: 40
23.12.2010, 19:45  [ТС] 6
Цитата Сообщение от RUSya82 Посмотреть сообщение
Это бред...
Если Вы хотите, чтобы размер массива задавал пользователь, используйте динамический массив
Этого я делать не буду. Во-первых, я не знаю, что такое динамический массив, во вторых, из последнего кода мне удалось получить и вывести массив на экран, теперь мне необходимо остортировать его отрицательные элементы по возрастанию.
0
242 / 120 / 14
Регистрация: 15.10.2010
Сообщений: 395
23.12.2010, 20:06 7
Цитата Сообщение от napalm2005 Посмотреть сообщение
Но ведь я ручками ввожу как размер, так и элементы массива
Так то Ваш компилятор этого пропустить не должен, в любом случае это грубейшая ошибка.
Цитата Сообщение от napalm2005 Посмотреть сообщение
Этого я делать не буду
Я Вас и не заставляю, больно надо...
Удачи
0
2 / 2 / 0
Регистрация: 08.12.2010
Сообщений: 40
24.12.2010, 01:02  [ТС] 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;
}

Все-таки я это сделал. Да!!! Народ, может кто подсказать, что такое серия, а то я толком врубиться не могу.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2010, 01:02
Помогаю со студенческими работами здесь

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

Отсортировать Массив в порядке убывания
#include &lt;iostream&gt; using namespace std; int main() { int a, j; cout &lt;&lt; &quot;Vvedite massiv&quot; &lt;&lt;...

Задан массив чисел B (M). Упорядочить K первых элементов (K <M) в порядке убывания их значений
Задан массив чисел B (M). Упорядочить K первых элементов (K &lt;M) в порядке убывания их значений.

Отсортировать массив М и строки матрицы А в порядке убывания
Отсортировать массив М(50) и строки матрицы А(6х7) в порядке убывания


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

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

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