Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 14
1

Преобразовать массив, увеличив каждую его серию на один элемент

22.05.2013, 11:49. Показов 2667. Ответов 11
Метки нет (Все метки)

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

Помогите решить задачу, сам пытался, но чет не могу додуматься как сделать, подкиньте идей вот код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Console.Write("Введите количество элементов N: ");
            int N = int.Parse(Console.ReadLine());
            int[] mass = new int[N];
            int i;
            Console.WriteLine("Исходный массив");
            for (i = 0; i < N; i++)
            {
                Console.Write("A[{0}]= ", i + 1);
                mass[i] = int.Parse(Console.ReadLine());
            }
            Console.WriteLine();
            int count = 0 ;
            for (i = 0; i < N -1  ; i++)
            {
                if (mass[i] == mass[i + 1]) count++;
 
 
            for (i = 0; i < mass.Length; i++)
            {
                Console.Write(mass[i] + "  ");
            }
            Console.ReadKey();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2013, 11:49
Ответы с готовыми решениями:

Преобразовать массив, увеличив каждую его серию на один элемент
Дан целочисленный массив размера N. Преобразовать массив увеличив каждую его серию на один элемент....

Преобразовать массив, увеличив его последнюю серию наибольшей длины на один элемент
Дан целочисленный массив размера N. Преобразовать массив, увеличив его последнюю серию наибольшей...

Преобразовать массив, увеличив его первую серию наибольшей длины на один элемент
Всем доброго времени суток! Дали в инсте задания сделал все кроме этих. Помогите с их решением,...

Преобразовать массив, увеличив его первую серию наибольшей длины на один элемент
дан целочисленный массив размера N. Преобразовать массив, увеличив его первую серию наибольшей...

11
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
22.05.2013, 11:52 2
Длинна серии может быть минимально равна 2. А то 1 элемент это как то не очень.
Я попробую вам сделать задание, но будет это ближе к вечеру.
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
22.05.2013, 12:13 3
C#
1
2
3
4
5
6
7
8
int[] rezaltmass = new int[N*2];
int ofset =0;
 
for (i = 0; i < N -1  ; i++)
            {
             rezaltmass[i+ofset]=mass[i];   
             if (mass[i] != mass[i + 1]) {ofset++; rezaltmass[i+ofset]=mass[i];}
            }

Если я правильно понял условия задачи , дано 111 55 6 получаем 1111 555 66
2
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
22.05.2013, 12:21 4
EVG-1980, хорошее решение, оптимальное. Держите плюсик.

Добавлено через 1 минуту
Только есть небольшое замечание, оно нифига не работает, ну на это можно закрыть глаза.
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
22.05.2013, 12:24 5
Цитата Сообщение от Дмитрий3241 Посмотреть сообщение
Только есть небольшое замечание, оно нифига не работает, ну на это можно закрыть глаза.
В смысле?
0
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
22.05.2013, 12:29 6
EVG-1980, тебе виднее, не я написал это. Попробуй вот такой массив { 0, 0, 1, 2, 2 }, посмотри что из него получится.

Добавлено через 1 минуту
Элемент с индексом 2 не входит в серию.
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
22.05.2013, 12:55 7
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
       for (i = 0; i < N - 1; i++)
            {
                rezaltmass[i + ofset] = mass[i];
                if (mass[i] != mass[i + 1]) { ofset++; rezaltmass[i + ofset] = mass[i]; }
 
            }
            rezaltmass[i + ofset] = mass[i];
            ofset++;  rezaltmass[i + ofset] = mass[i];
 
            ofset = i + ofset;
 
 
 
            for (i = 0; i <= ofset; i++)
            {
                Console.Write(rezaltmass[i]);
            }
Добавлено через 1 минуту
Цитата Сообщение от Дмитрий3241 Посмотреть сообщение
Элемент с индексом 2 не входит в серию.
ну это понятно если он войдет будет выход за границы массива
0
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 14
22.05.2013, 13:52  [ТС] 8
Цитата Сообщение от EVG-1980 Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
       for (i = 0; i < N - 1; i++)
            {
                rezaltmass[i + ofset] = mass[i];
                if (mass[i] != mass[i + 1]) { ofset++; rezaltmass[i + ofset] = mass[i]; }
 
            }
            rezaltmass[i + ofset] = mass[i];
            ofset++;  rezaltmass[i + ofset] = mass[i];
 
            ofset = i + ofset;
 
 
 
            for (i = 0; i <= ofset; i++)
            {
                Console.Write(rezaltmass[i]);
            }
Добавлено через 1 минуту
ну это понятно если он войдет будет выход за границы массива
спасибо большое

Добавлено через 19 минут
Все равно чет не пашет.
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
22.05.2013, 13:59 9
lewkaneprowaet, конкретно что вводите, что получаете и что не правильно
0
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 14
22.05.2013, 14:06  [ТС] 10
Добавлено через 47 секунд
Цитата Сообщение от EVG-1980 Посмотреть сообщение
lewkaneprowaet, конкретно что вводите, что получаете и что не правильно
Ввожу 1 2 2 3 3 должно получится 1 2 2 2 3 3 3 , но вообще ничего не происходит, программа подвисает
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
22.05.2013, 14:10 11
lewkaneprowaet,
Цитата Сообщение от lewkaneprowaet Посмотреть сообщение
длина серии может быть равна1
если вводите 1 2 2 3 3 значит должно быть 1 1 2 2 2 3 3 3

Кликните здесь для просмотра всего текста
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
        static void Main(string[] args)
        {
        
        Console.Write("Введите количество элементов N: ");
            int N = int.Parse(Console.ReadLine());
            int[] mass = new int[N];
            int i;
            
            Console.WriteLine("Исходный массив");
            for (i = 0; i < N; i++)
            {
                Console.Write("A[{0}]= ", i + 1); mass[i] = int.Parse(Console.ReadLine());
            }
            Console.WriteLine();
            
            int[] rezaltmass = new int[N * 2];
            int ofset = 0;
 
            
            for (i = 0; i < N - 1; i++)
            {
                rezaltmass[i + ofset] = mass[i];
                if (mass[i] != mass[i + 1]) { ofset++; rezaltmass[i + ofset] = mass[i]; }
 
            }
            rezaltmass[i + ofset] = mass[i];
            ofset++;  rezaltmass[i + ofset] = mass[i];
 
            ofset = i + ofset;
 
 
 
            for (i = 0; i <= ofset; i++)
            {
                Console.Write(rezaltmass[i]);
            }
 
            Console.ReadKey();
        
        
        }


У меня все работает ничего не подвисает
1
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 14
22.05.2013, 14:17  [ТС] 12
Цитата Сообщение от EVG-1980 Посмотреть сообщение
lewkaneprowaet,


если вводите 1 2 2 3 3 значит должно быть 1 1 2 2 2 3 3 3

Кликните здесь для просмотра всего текста
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
        static void Main(string[] args)
        {
        
        Console.Write("Введите количество элементов N: ");
            int N = int.Parse(Console.ReadLine());
            int[] mass = new int[N];
            int i;
            
            Console.WriteLine("Исходный массив");
            for (i = 0; i < N; i++)
            {
                Console.Write("A[{0}]= ", i + 1); mass[i] = int.Parse(Console.ReadLine());
            }
            Console.WriteLine();
            
            int[] rezaltmass = new int[N * 2];
            int ofset = 0;
 
            
            for (i = 0; i < N - 1; i++)
            {
                rezaltmass[i + ofset] = mass[i];
                if (mass[i] != mass[i + 1]) { ofset++; rezaltmass[i + ofset] = mass[i]; }
 
            }
            rezaltmass[i + ofset] = mass[i];
            ofset++;  rezaltmass[i + ofset] = mass[i];
 
            ofset = i + ofset;
 
 
 
            for (i = 0; i <= ofset; i++)
            {
                Console.Write(rezaltmass[i]);
            }
 
            Console.ReadKey();
        
        
        }


У меня все работает ничего не подвисает
все заработало, исправил в коде ошибку, спасибо
0
22.05.2013, 14:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2013, 14:17
Помогаю со студенческими работами здесь

Преобразовать массив, уменьшив каждую его серию на один элемент
Дан целочисленный массив размера N. Преобразовать массив, уменьшив каждую его серию на один элемент.

Преобразовать массив, уменьшив каждую его серию на один элемент
Дан целочисленный массив размером N. Преобразовать массив, уменьшив каждую его серрию на один...

Преобразовать массив, увеличив все его серии наибольшей длины на один элемент
Дан целочисленный массив размера N. Преобразовать массив, увеличив все его серии наибольшей длины...

Преобразовать массив, увеличив все его серии наибольшей длины на один элемент
У меня вот такое задание: Дан целочисленный массив размера N. Преобразовать массив,увеличив все...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru