Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
328 / 163 / 89
Регистрация: 03.11.2010
Сообщений: 920
1

Удалить из массива все соседние одинаковые элементы, оставив их первые вхождения

23.05.2012, 04:48. Показов 2927. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Условие:
Дан целочисленный массив размера N. Удалить из массива все соседние одинаковые элементы, оставив их первые вхождения

Пробую так...

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
          
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Lab11
{
    class Program
    {
        static void Main(string[] args)
        {
   int[] a = new int[10] { 1, 2, 3, 3, 5, 6, 8, 8, 9, 10 };
            int[] b = new int[a.Length] ;
            for (int i=0; i<a.Length;i++)
            {
                Console.WriteLine(a[i]);
                
            }
            int j=1;
            for (int i=0; i<a.Length-1;i++)
            {
                if ((a[i] == a[i + 1]) && (a[i + 1] != a[i + 2]))
 
                {
                    b[j]=a[i];
                    j=j+1;
                }
                
            }
            Console.WriteLine();
            Console.WriteLine("b[" + j + "]= " + b[j]);
            }
 Console.ReadKey();
 
        }
    }
}
и так

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
          
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Lab11
{
    class Program
    {
        static void Main(string[] args)
        {
  Console.WriteLine("Введите N (N<=10)");
            int j = 0;
            int N = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Значение массива А");
            int[] a = new int[N]; //{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
                for (int i=0; i < a.Length; i++)
                {
                    Console.WriteLine("a["+i+"]=");
                    a[i] = Convert.ToInt32(Console.ReadLine());
 
                }
                j=1;
                for (int i=2; i<a.Length;i++)
                {
                    if (a[j] != a[i])
                    {
                        j++; 
                        a[j] = a[i];
                    }
                }
            N=j+1;
            Console.WriteLine();
            Console.WriteLine("Ответ");
            Console.WriteLine();
            Console.WriteLine("Размер полученного массива: "+N);
            Console.WriteLine("A[]: ");
            for (int i=0; i<a.Length;i++)
            {
                Console.WriteLine(a[i]+" ");
            }
            Console.ReadKey();
 
        }
    }
}
Подскажите, что делаю неправильно !?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2012, 04:48
Ответы с готовыми решениями:

Удалить из массива все соседние одинаковые элементы, оставив их первые вхождения
const n=10; type vect=array of integer; var i,k:integer; r:vect; begin randomize; for i:=1...

Удалить из массива все соседние одинаковые элементы, оставив их первые вхождения
Нуждаюсь в совете мудрых . . . 2)Дан целочисленный массив размера N. Удалить из массива все...

Удалить из массива все соседние одинаковые элементы,оставив их первые вхождения
2) Дан целочисленный массив размера N.Удалить из массива все соседние одинаковые элементы,оставив...

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

6
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
23.05.2012, 05:21 2
Попробуйте еще вот так
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
        static void Main()
        {
            var arr = new int[10];
            for (int i = 0; i < arr.Length; i++)
            {
                Console.WriteLine("Input arr[{0}]", i);
                arr[i] = int.Parse(Console.ReadLine());
            }
 
            var pointer = 1;
            int prev = arr[0];
            var temp = new List<int> { arr[0] };
            while (pointer < arr.Length)
            {
                if (arr[pointer] != prev)
                    temp.Add(arr[pointer]);
                prev = arr[pointer];
                pointer++;
            }
 
            arr = temp.ToArray();
            for (int i = 0; i < arr.Length; i++)
                Console.WriteLine("arr[{0}] = {1}", i, arr[i]);
        }
Уверен, что можно в пару строк через LINQ, но, боюсь, это не в моих силах)
1
328 / 163 / 89
Регистрация: 03.11.2010
Сообщений: 920
23.05.2012, 05:33  [ТС] 3
Lasur, Все работает! Спасибо дружище!!!
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
23.05.2012, 10:02 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
 
class Program
{
    static void Main(string[] args)
    {
        int[] a = new int[] { 1, 2, 3, 3, 5, 6, 8, 8, 8, 9 };
        int result = 0, last = a.Length;
        int first = 0;
        Console.WriteLine(string.Join(" ", a));
        while (++first != last)
        {
            if (!(a[result] == a[first]))
                a[++result] = a[first];
        }
        ++result;
        Array.Resize(ref a, result);
        Console.WriteLine(string.Join(" ", a));
    }
}
2
773 / 553 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
23.05.2012, 10:44 5
Ну если использовать Linq то метод Distinct() просто создан для этой задачи
C#
1
2
3
4
5
6
    int[] a = { 1, 2, 3, 3, 5, 6, 8, 8, 9, 10 };
            int[] b = a.Distinct().ToArray();
            foreach (int c in b)
            { 
              Console.WriteLine(c.ToString());
            }
1
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
23.05.2012, 10:53 6
Vitall, может я что путая, но ...
Цитата Сообщение от Pahanuch Посмотреть сообщение
Удалить из массива все соседние одинаковые элементы, оставив их первые вхождения
1
773 / 553 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
23.05.2012, 11:09 7
Петррр, Да нет не путаете .Я не внимателен .Но массив ни в одном примере не подобран ,который иллюстрируют эту особенность .Мой способ тоже даёт тот же результат потому и ошибся
Массив такой хотя бы тогда лучше
C#
1
 int[] a = new int[] { 1, 2, 3, 3, 5, 6, 8, 8, 8, 9 ,10,2};
0
23.05.2012, 11:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2012, 11:09
Помогаю со студенческими работами здесь

Массив: Удалить из массива все одинаковые элементы, оставив их первые вхождения.
В С# решите задачу плиииз... Дан целочисленный массив N. Удалить из массива все одинаковые...

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

Удалить из массива все одинаковые элементы, оставив их последние вхождения
Можете подсказать на счет одной задачи пожалуйста, просто если я пойму эту задачу, то я смогу...

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


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

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