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

Написать программу «уплотнения массива» путем удаления из него чисел, кратных 3

06.11.2020, 10:28. Показов 1530. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Написать программу «уплотнения массива» путем удаления из него чисел, кратных 3.
2. Написать программу, реализующую вставку числа k после всех четных элементов массива. Все элементы массива сохраняются (размерность массива и вставляемое число вводятся пользователем)
Сделать с использованием форм.
int size = int.Parse(textBox1.Text);
//size – количество элементов в массиве;
A = new int[2*size];
//так как после вставки в массив числа k количество элементов
увеличится, память под них надо выделить тоже
Random rnd = new Random();
textBox2.Text = "";

С комментариями если можно

ОТПРАВЛЯТЬ ДРУГИЕ РЕШЕНИЯ, НА ДРУГИХ ЯЗЫКАХ ПРОГРАММИРОВАНИЯ НЕ НУЖНО!!!!!!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2020, 10:28
Ответы с готовыми решениями:

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

Составить программу удаления элементов целочисленного одномерного массива A(N), кратных первому элементу
Здравствуйте, уважаемые! Очень нужна ваша помощь. Нужно составить программу удаления элементов целочисленного одномерного массива A(N),...

Написать программу,в которой вводится число и из него получается новое путём прибавления к нему того же числа только наоборот
Написать программу,в которой вводится число и из него получается новое путём прибавления к нему того же числа только наоборот ...

1
99 / 81 / 93
Регистрация: 03.12.2013
Сообщений: 217
07.11.2020, 06:24
Лучший ответ Сообщение было отмечено Sebastian404 как решение

Решение

Сразу вопрос: а вам по заданию важно, чтобы работа проводилась над начальным массивом, или сгенерированный новый подходит?
Чисто догадаюсь, что в первом задании необходимо работать с оригинальным массивом. Но как на счет 2-го задания? А дальнейшее объяснение вообще выглядит "странно", поскольку зачем мне аж в 2 раза больше массив (новый), если в первом случае я вообще уменьшаю оригинальный(массив), а во 2-ом - добавляю 1 дополнительный элемент к нему. И вообще после самого вопроса "код" выглядит так, будто бы его добавили "чтобы был".

Предположив, что в 1 задании мы работаем исключительно с существующим массивом (новый создавать нельзя), а в 2 - мы должны создать массив минимальной необиднои длины (в данном случае на 1 больше начальной), вышел какой-то такой код:
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
using System;
using System.Linq;
 
namespace Test
{
    public class Test
    {
        public static void Main(string[] args)
        {
            // Array to "work with"
            var someArr = new int[] { 0, 2, 1, 3, 4, 5, 6, 7, 3, 9, 0, 3, 0, 1, 9 };
            // Value that will be added after last pair number
            var kVal = 8;
 
            // help value to detect coun of deleted words(task 1); see explanation below
            var deletedCount = 0;
            // need to get index of last paired element(task 2). -1 to have the value that it cannot get in code
            // (min index is 0). see explanation below
            var lastPairIndex = -1;
 
            // Show array
            DisplayArray(someArr);
 
            // Task 1
            // going through array
            for (int i = 0; i < someArr.Length; i++)
            {
                // if element is aliquot 3(we consider 0 not working for us too)
                // Here we will move all array
                if (someArr[i] % 3 == 0 && someArr[i] != 0)
                {
                    // store into local variable index, that we have now
                    int tempIndex = i;
 
                    // Increment tempIndex, because we want to get number, that is next after "% 3" number(for moving)
                    tempIndex++;
                    // one number from array will be deleted(because we move all numbers after "% 3" left
                    // we want to count deleted values
                    deletedCount++;
 
                    // Using while for comfort; while "tempIndex" is not end of the array and not less than it's begining(begining index)
                    // We move 1 step left every value(every value after "% 3" number
                    // so, for example, from "1,2,3,4" tempIndex will be first on "4" and we will replace "3" with it
                    while (tempIndex < someArr.Length && (tempIndex - 1) >= 0 )
                    {
                        someArr[tempIndex - 1] = someArr[tempIndex];
                        tempIndex++;
                    }
 
                    // We know, that if we move all values left, there should be free place right
                    // so we need to "remove"(make 0) 'deletedCount' nummber of values from the end
                    // it will help us to make "0" values that was "saved", but not needed, because they are already moved
                    for (int k = deletedCount; k > 0; k--)
                        someArr[someArr.Length - 1] = 0;
 
                    // Get elements from array ant count values that are not 0 and (x % 3 == 0).
                    // Generally, it counts "% 3" values. If there is no such values - we can leave loop(break);
                    if (someArr.Where(x => (x % 3 == 0) && x != 0).Count() == 0)
                        break;
 
                    // We always need to go one step back, because we move everything and in someArr[i] now is another elemnt, 
                    // that porentially can be "% 3"
                    i--;
                }
            }
 
            DisplayArray(someArr);
 
            // Task 2
            // we need to add 1 element after last pair element
            var newGreatArr = new int[someArr.Length + 1];
 
            /// we search for last pair element
            for(int i = 0; i < someArr.Length; i++)
            {
                // if element is pair - we store index, where should be added custom element(k should be added after last pair element)
                if (someArr[i] != 0 && someArr[i] % 2 == 0)
                    lastPairIndex = i + 1;
            }
 
            int j = 0;
            // Loop over new array(that is empty)
            for (int i = 0; i < newGreatArr.Length && j < someArr.Length; i++)
            {
                // if "new" array index equaks lastPairIndex"(where we need to add custom element)
                // this means that we write last pair element and need to add "custom" value after it in this place("k" in task)
                if (i == lastPairIndex)
                {
                    newGreatArr[i] = kVal;
                    // Increment i, because we store our "custom" value in "i" index and want to add other values after it
                    i++;
                }
 
                // save every value from old array to new one; do it always because if we stored "custom" value - we make index for save bigger(i)
                newGreatArr[i] = someArr[j];
 
                // always increment it, because we going throught every element from old array
                j++;
            }
 
            // Little check - there is a chance that value not changed for last element(if there is too much "0" etc.)
            // You can try remove this
            if (lastPairIndex != -1 && newGreatArr[lastPairIndex] != kVal)
                newGreatArr[newGreatArr.Length - 1] = kVal;
 
            DisplayArray(newGreatArr);
        }
 
        public static void DisplayArray(int[] arr)
        {
            foreach (var item in arr)
                Console.Write(item + " ");
 
            Console.WriteLine();
        }
    }
}
Конечно же это чисто консольный пример, к "формам" подгоняйте уже сами. Да и не уверен я что все правильно работает, если честно) Комментарии добавил, но на английском(не использую кириллицу в коде).

Добавлено через 2 минуты
Эта часть оффтоп, но не могу удержаться:
Цитата Сообщение от Sebastian404 Посмотреть сообщение
ОТПРАВЛЯТЬ ДРУГИЕ РЕШЕНИЯ, НА ДРУГИХ ЯЗЫКАХ ПРОГРАММИРОВАНИЯ НЕ НУЖНО!!!!!!
Жаль, а я вам в раздел "C# для начинающих" как раз хотел написать решение для 16-битного ассемблера и "Ada"... Если бы не написали таким жирным текстом - ну точно так сделал бы и сбросил, как и другие пользователи)
Прям в последний момент прочитал и пришлось переписывать на правильный язык)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2020, 06:24
Помогаю со студенческими работами здесь

Написать программу для вычисления суммы трёхзначных чисел кратных 6 чисел
Найти сумму трёхзначных чисел кратных 6 чисел. Помогите пожалуйста.

Написать программу, которая в последовательности целых чисел определяет количество чётных чисел, кратных 7
Здравствуйте, помогите пожалуйста с написанием кода. Напишите программу, которая в последовательности целых чисел определяет...

Написать программу формирования массива путем перестановки секторов
1. Написать программу формирования массива путем перестановки секторов. То есть n при вводе должно быть четным. Массив делится на четыре...

Написать программу подсчета количества чисел кратных 7
Написать программу подсчета количества чисел кратных 7 на отрезке от 40 до 120. Результат вывести на экран.

Написать программу, которая формирует файл результата путем выбрасывания повторяющихся чисел
Компонентами вводимого файла являются пары целых чисел: Num (числитель) и Den (знаменатель). Каждая пара задает рациональное число с...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru