Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
#1

pelles c Задан целочисленный массив размера N - C++

17.01.2011, 14:42. Просмотров 1943. Ответов 23
Метки нет (Все метки)

Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2011, 14:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос pelles c Задан целочисленный массив размера N (C++):

Задан вещественный массив размера N pelles c - C++
Задан вещественный массив размера N. Найти сумму второго максимума и третьего минимума массива. Все элементы, расположенные между ними,...

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

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

Задан целочисленный массив размерности N - C++
//Задан целочисленный массив размерности N.Есть ли среди элементов массива простые числа ? Если да, то вывести номера этих элементов. ...

Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую его серию на один элемент - C++
1. Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую его серию на один элемент. (Серия - группа подряд идущих...

Дан целочисленный массив размера N. Преобразовать массив, увеличив каждую его серию на один элемент - C++
Помогите преобразовать код из языка С# в С++. Занимался разбором задачи на языке С++. Вот условие задачи: Дан целочисленный массив...

23
valeriikozlov
Эксперт С++
4676 / 2502 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.01.2011, 12:26 #16
компилятор выдает кучу ошибок.
Какие ошибки выдает?
0
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
19.01.2011, 12:28  [ТС] #17
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Какие ошибки выдает?
D:\progi for pelles\4-2-25\main.c(8): error #2048: Undeclared identifier 'new'.
D:\progi for pelles\4-2-25\main.c(8): error #2168: Operands of '=' have incompatible types 'int *' and 'int'.
D:\progi for pelles\4-2-25\main.c(8): error #2001: Syntax error: expected ';' but found 'int'.
D:\progi for pelles\4-2-25\main.c(8): error #2092: Missing identifier.
D:\progi for pelles\4-2-25\main.c(54): error #2048: Undeclared identifier 'delete'.
D:\progi for pelles\4-2-25\main.c(54): error #2039: Illegal expression.
D:\progi for pelles\4-2-25\main.c(54): error #2001: Syntax error: expected ']' but found 'mas'.
D:\progi for pelles\4-2-25\main.c(54): error #2144: Type error: pointer expected.
D:\progi for pelles\4-2-25\main.c(54): error #2001: Syntax error: expected ';' but found 'mas'.
D:\progi for pelles\4-2-25\main.c(54): warning #2114: Local 'delete' is not referenced.
0
valeriikozlov
Эксперт С++
4676 / 2502 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.01.2011, 12:32 #18
napalm2005, Тогда давайте по Вашему попробуем:
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
#include <stdio.h>
 
int main()
{
        int N, i, i_max, i_t=0, fl=1, len_temp, len_max, i_temp; 
        printf("N= ");
        scanf("%d", &N);
        int mas[N];
        for(i=0; i<N; i++)
        {
            printf("[%d]= ", i);
            scanf("%d", &mas[i]);
        }
        for(i=0; i<N; i++)
            printf("%d ", mas[i]);
        printf("\n");
        while(i_t<N)
        {
            len_temp=len_max=1;
            i_temp=i_max=i_t;
            for(i=i_t+1; i<N; i++)
            {
                if(mas[i]!=mas[i-1])
                {
                    if(len_temp>len_max)
                    {
                        len_max=len_temp;
                        i_max=i_temp;
                    }
                    i_temp=i;
                    len_temp=1;
                }
                else
                    len_temp++;
            }
            if(len_temp>len_max)
            {
                len_max=len_temp;
                i_max=i_temp;
            }
            if(i_max!=i_t)
            {
                int temp=mas[i_max];
                for(i=i_max-i_t; i>0; i--)
                    mas[len_max-1+i_t+i]=mas[-1+i_t+i];
                for(i=0; i<len_max; i++)
                    mas[i_t+i]=temp;
            }
            i_t+=len_max;
        }
        for(i=0; i<N; i++)
            printf("%d ", mas[i]);      
        printf("\n"); 
        return 0;
}
1
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
19.01.2011, 12:37  [ТС] #19
Цитата Сообщение от valeriikozlov Посмотреть сообщение
napalm2005, Тогда давайте по Вашему попробуем:
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
#include <stdio.h>
 
int main()
{
        int N, i, i_max, i_t=0, fl=1, len_temp, len_max, i_temp; 
        printf("N= ");
        scanf("%d", &N);
        int mas[N];
        for(i=0; i<N; i++)
        {
            printf("[%d]= ", i);
            scanf("%d", &mas[i]);
        }
        for(i=0; i<N; i++)
            printf("%d ", mas[i]);
        printf("\n");
        while(i_t<N)
        {
            len_temp=len_max=1;
            i_temp=i_max=i_t;
            for(i=i_t+1; i<N; i++)
            {
                if(mas[i]!=mas[i-1])
                {
                    if(len_temp>len_max)
                    {
                        len_max=len_temp;
                        i_max=i_temp;
                    }
                    i_temp=i;
                    len_temp=1;
                }
                else
                    len_temp++;
            }
            if(len_temp>len_max)
            {
                len_max=len_temp;
                i_max=i_temp;
            }
            if(i_max!=i_t)
            {
                int temp=mas[i_max];
                for(i=i_max-i_t; i>0; i--)
                    mas[len_max-1+i_t+i]=mas[-1+i_t+i];
                for(i=0; i<len_max; i++)
                    mas[i_t+i]=temp;
            }
            i_t+=len_max;
        }
        for(i=0; i<N; i++)
            printf("%d ", mas[i]);      
        printf("\n"); 
        return 0;
}
Все супер, только мало что понятно.
0
Chelioss
180 / 180 / 4
Регистрация: 08.01.2011
Сообщений: 1,134
19.01.2011, 12:45 #20
Отсортировать серии в массиве в порядке убывания их длины.
А где вы в моем алгоритме увидели длины? Я сделал убывание по значению, а вам надо лишь переделать убывание по серии, т.е. сравнивать не mas[i]>mas[i-1], а seria1(текущая)>seria2(серия перед текущей)
0
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
19.01.2011, 14:02  [ТС] #21
Цитата Сообщение от Chelioss Посмотреть сообщение
А где вы в моем алгоритме увидели длины? Я сделал убывание по значению, а вам надо лишь переделать убывание по серии, т.е. сравнивать не mas[i]>mas[i-1], а seria1(текущая)>seria2(серия перед текущей)
здорово, только я не знаю, как пполучить серию.

Добавлено через 1 час 14 минут
Цитата Сообщение от valeriikozlov Посмотреть сообщение
napalm2005, Тогда давайте по Вашему попробуем:
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
#include <stdio.h>
 
int main()
{
        int N, i, i_max, i_t=0, fl=1, len_temp, len_max, i_temp; 
        printf("N= ");
        scanf("%d", &N);
        int mas[N];
        for(i=0; i<N; i++)
        {
            printf("[%d]= ", i);
            scanf("%d", &mas[i]);
        }
        for(i=0; i<N; i++)
            printf("%d ", mas[i]);
        printf("\n");
        while(i_t<N)
        {
            len_temp=len_max=1;
            i_temp=i_max=i_t;
            for(i=i_t+1; i<N; i++)
            {
                if(mas[i]!=mas[i-1])
                {
                    if(len_temp>len_max)
                    {
                        len_max=len_temp;
                        i_max=i_temp;
                    }
                    i_temp=i;
                    len_temp=1;
                }
                else
                    len_temp++;
            }
            if(len_temp>len_max)
            {
                len_max=len_temp;
                i_max=i_temp;
            }
            if(i_max!=i_t)
            {
                int temp=mas[i_max];
                for(i=i_max-i_t; i>0; i--)
                    mas[len_max-1+i_t+i]=mas[-1+i_t+i];
                for(i=0; i<len_max; i++)
                    mas[i_t+i]=temp;
            }
            i_t+=len_max;
        }
        for(i=0; i<N; i++)
            printf("%d ", mas[i]);      
        printf("\n"); 
        return 0;
}
я еще бы узнать хотел, а не нужно ли в 41 строке, чтобы вместо if стояло else if?
0
valeriikozlov
Эксперт С++
4676 / 2502 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.01.2011, 14:08 #22
а не нужно ли в выделенной строке, чтобы было вместо if стояло else if?
не нужно.
Это для случая когда серия стоит на своем месте.
1
napalm2005
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 40
19.01.2011, 14:44  [ТС] #23
Цитата Сообщение от valeriikozlov Посмотреть сообщение
не нужно.
Это для случая когда серия стоит на своем месте.
а если применить else if?

Добавлено через 30 минут
valeriikozlov, тогда еще один к вам вопрос, а если мне нужно поменять только серию, к примеру с минимальной длиной, с последней серией в массиве?
0
valeriikozlov
Эксперт С++
4676 / 2502 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.01.2011, 16:35 #24
а если применить else if?
тогда должно быть так: если последняя последовательность не самая короткая, то выдаст ерунду.
а если мне нужно поменять только серию, к примеру с минимальной длиной, с последней серией в массиве?
Код должен сработать и для этого случая
0
19.01.2011, 16:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2011, 16:35
Привет! Вот еще темы с ответами:

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

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

Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не превышает 1 - C++
Помогите пожалуйста написать программу: Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не...

Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не превышает 1 - C++
Помогите пожалуйста написать программу. Дан целочисленный массив размера N. Сжать массив, удалив из него все элементы, модуль которых не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.