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

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
PS5124
0 / 0 / 0
Регистрация: 22.03.2016
Сообщений: 16
#1

Удаление элементов из массива - C#

21.11.2016, 18:34. Просмотров 425. Ответов 7
Метки нет (Все метки)

Дан целочисленный массив размера 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
    int n,i,j,k;
Console.Write("n=");
n = Convert.ToInt32(Console.ReadLine());
 int [] a = new int[n];
Console.WriteLine("Исходный массив:");
for( i=0; i<n; i++) {
  Console.Write("Элемент",a[i]);
     a[i]= Convert.ToInt32(Console.ReadLine());}
Console.WriteLine();
                        do{j=i+1;
do {
    if (a[j] == a[i])
    {
        for (k = j; k < n - 1; k++) { a[k] = a[k + 1]; n = n - 1; }
    }
    else j = j + 1;
} while (j <= n);
   i = i + 1; 
                        }
while (i<=n);
Console.WriteLine("Массив без повторений");
for (i = 1; i < n; i++) { Console.Write("{0}", a[i]); }
Console.ReadKey();


Суть:
Ругается на фрагмент
C#
1
if (a[j] == a[i])
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2016, 18:34
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Удаление элементов из массива (C#):

Удаление элементов массива - C#
Всем доброго времени суток. Мне нужно удалить первые элементы массива до определенного числа. Это нужно сделать в функции: public static...

Удаление элементов из массива - C#
Кто может помочь с алгоритмом удаления? Вот задание: удалить элементы, значение которых меньше среднего значения всех элементов массива

Удаление элементов из массива по значению - C#
Добрый вечер. Дан одномерный массив. Необходимо удалить элементы из массива по указанному значению. Не могу запустить саму функцию из...

Удаление, редактирование элементов массива - C#
Если я добавляю таким образом работников в конец массива, то как их можно будет удалить и чтобы можно было редактировать. Как это сделать?...

Добавление и удаление элементов массива - C#
Есть динамический массив А с кол-вом эл-тов n Весь массив заполнен (от 1 эл-та до n-го) какой-то инфой Вопрос: Как можно удалить i-й...

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

7
TuM0xA
195 / 195 / 85
Регистрация: 21.12.2015
Сообщений: 526
21.11.2016, 18:51 #2
"индекс вышел за границы массива" и что не понятно?
i и j получают значение больше максимального индекса
вы не сбрасываете значение i после цикла for
0
Diamante
1256 / 1017 / 321
Регистрация: 14.08.2016
Сообщений: 3,536
Завершенные тесты: 1
21.11.2016, 20:36 #3
PS5124, ругается, и правильно делает, у вас i внешняя переменная, и после цикла ввода массива вашего, значение ее n-1, далее вы j присваиваете значение i+1, и оно, ессно, получается равно n. А что у вас в массиве под индексом n?!
0
PS5124
0 / 0 / 0
Регистрация: 22.03.2016
Сообщений: 16
22.11.2016, 05:39  [ТС] #4
Кол-во элементов в массиве
0
Diamante
1256 / 1017 / 321
Регистрация: 14.08.2016
Сообщений: 3,536
Завершенные тесты: 1
22.11.2016, 14:46 #5
я про то, какое значение хранится в a[n]?
0
PS5124
0 / 0 / 0
Регистрация: 22.03.2016
Сообщений: 16
24.11.2016, 17:03  [ТС] #6
Не могу понять,где нужно обнулить именно
0
Diamante
1256 / 1017 / 321
Регистрация: 14.08.2016
Сообщений: 3,536
Завершенные тесты: 1
24.11.2016, 17:05 #7
между 9й и 10й строками
0
PS5124
0 / 0 / 0
Регистрация: 22.03.2016
Сообщений: 16
24.11.2016, 20:04  [ТС] #8
без методов новых работает, с ними не так
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void enter(out int[] a,int n)
        {
          
            
            a = new int[n];
            int i;
            for (i = 0; i < n; i++)
            {
                Console.Write("Элемент ");
                a[i] = int.Parse(Console.ReadLine());
            }
 
            // здесь должен находиться код программы для ввода массива
        }
       
       public static void process(ref int[] a)
        {
            int  i, j, k, c;
           
            j = 1;
            for (i = 1; i < n; i++)// сравнение каждого отдельно взятого элемента по отдельности
            {
 
 
                for (c = 2; c <= n; c = c + i) Console.WriteLine("J {0}", j); { if (a[j] == a[i - 1]) { Console.WriteLine("Ravno}"); for (k = j; k < n - 1; k++) { a[k] = a[k + 1]; } n = n - 1; } else j = j + 1; }//формируем новый массив уменьшая последовательно кол-во повторяющихся элементов
 
                j = i + 1;
                Console.WriteLine("i {0}",i);
 
 
            }
 
            Console.WriteLine("Массив без повторений");
            for (i = 0; i < n; i++) { Console.Write("{0}", a[i]); }
            Console.ReadKey();
 
 
 
 
            // здесь должен находиться код программы обработки массива 
 
        }
        // подпрограмма для вывода массива на экран
        static void print(int[] a)
        {
            int i;
            int n = 3;
            Console.WriteLine("Массив без повторений");
            for (i = 0; i < n; i++) { Console.Write("{0}", a[i]); }
            Console.ReadKey();
 
 
 
            // здесь должен находиться код программы для вывода массива 
        }
      
         
 
        static void Main(string[] args)
        {
            //основная программа
            Console.Write("Кол-во элементов n= ");
 
            int n = Convert.ToInt32(Console.ReadLine());
            int[] a;
            enter(out a,n);
            process(ref a);
            //print(a);
           
            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
48
49
50
51
52
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
 
 
            int n, i, j, k, c;
            Console.Write("Кол-во элементов n= ");
            n = Convert.ToInt32(Console.ReadLine());
            int[] a = new int[n];
           
            Console.WriteLine("Исходный массив:");
            for (i = 0; i < n; i++)
            {
                Console.Write("Элемент ", a[i]);
                a[i] = Convert.ToInt32(Console.ReadLine());
            }
            j = 1;
           
            for (i = 1; i < n; i++)// сравнение каждого отдельно взятого элемента по отдельности
            {
 
 
                for (c = 2; c <= n; c = c + i)/*пробегаем по каждому элементу*/ {  if (a[j] == a[i - 1]) {  for (k = j; k < n - 1; k++) { a[k] = a[k + 1]; } n = n - 1; } else j = j + 1; }//формируем новый массив уменьшая последовательно кол-во повторяющихся элементов
                
                j = i+1;
               
 
               
            }
 
 
          
 
 
 
            Console.WriteLine("Массив без повторений");
             for (i = 0; i < n; i++)   { Console.Write("{0}", a[i]); }
            Console.ReadKey();
 
 
 
        }
    }
}
0
24.11.2016, 20:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2016, 20:04
Привет! Вот еще темы с ответами:

Удаление нулевых элементов из массива - C#
У меня есть код, пользователь вводит двоичные числа в переменные x и y, программа помещает их в массив, для дальнейшей работы c этими...

Добавление\удаление элементов из массива - C#
где можно почитать нормальные мануалы, в частности по добавлению\удалению элементов все перерыл ничего дельного не нашел. З.Ы. На msdn...

Удаление повторяющихся элементов массива - C#
Ребят, как можно вывести только неповторяющиеся элементы массива двумерного??? using System; using System.Collections.Generic; using...

Удаление четных элементов из массива - C#
Помогите разобраться с проблемой. При помощи данного метода пытаюсь удалить из массива четные элементы, но работает это все странно: ...


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

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

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