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

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

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

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
    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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2016, 18:34
Ответы с готовыми решениями:

Удаление элементов массива
Всем доброго времени суток. Мне нужно удалить первые элементы массива до определенного числа. Это...

Удаление элементов из массива
Как удалить отрицательные элементы между двумя положительными?

Удаление элементов из массива
Дан целочисленный массив размера N (&gt;2). Удалить из массива все элементы с четными номерами...

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

7
212 / 210 / 137
Регистрация: 21.12.2015
Сообщений: 545
21.11.2016, 18:51 2
"индекс вышел за границы массива" и что не понятно?
i и j получают значение больше максимального индекса
вы не сбрасываете значение i после цикла for
0
3560 / 2501 / 1174
Регистрация: 14.08.2016
Сообщений: 8,206
21.11.2016, 20:36 3
PS5124, ругается, и правильно делает, у вас i внешняя переменная, и после цикла ввода массива вашего, значение ее n-1, далее вы j присваиваете значение i+1, и оно, ессно, получается равно n. А что у вас в массиве под индексом n?!
0
0 / 0 / 0
Регистрация: 22.03.2016
Сообщений: 16
22.11.2016, 05:39  [ТС] 4
Кол-во элементов в массиве
0
3560 / 2501 / 1174
Регистрация: 14.08.2016
Сообщений: 8,206
22.11.2016, 14:46 5
я про то, какое значение хранится в a[n]?
0
0 / 0 / 0
Регистрация: 22.03.2016
Сообщений: 16
24.11.2016, 17:03  [ТС] 6
Не могу понять,где нужно обнулить именно
0
3560 / 2501 / 1174
Регистрация: 14.08.2016
Сообщений: 8,206
24.11.2016, 17:05 7
между 9й и 10й строками
0
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2016, 20:04
Помогаю со студенческими работами здесь

Удаление элементов из многомерного массива
Здравствуйте, есть задание: В массиве удалить все отрицательные элементы, стоящие перед минимальным...

Добавление и удаление элементов массива
Есть динамический массив А с кол-вом эл-тов n Весь массив заполнен (от 1 эл-та до n-го) какой-то...

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

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


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

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