Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 2
Регистрация: 11.08.2013
Сообщений: 29

Действия с одномерным массивом. Не работает удаление из массива

19.12.2013, 19:49. Показов 912. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа ещё не дописана, есть только формирование и печать массива, удаление не работает из - за этой ошибки. Как её можно исправить? Подскажите, пожалуйста. Надо сегодня дописать и отправить эту программу преподавателю. А то боюсь отчислят.
Выдает ошибку:"Неявное преобразование типа void в int[] невозможно"

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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication49
{
    class Program
    {
        const int MIN_LENGTH = 1, MAX_LENGTH = 100, MIN_VALUE = -100, MAX_VALUE = 100;//ограничения для массива
 
    //Метод-функция для ввода целого числа+проверки границ и правильности ввода
        static int ReadIntNumber( string str, int left,int right)
        {
            bool ok=false;
            int number=MIN_VALUE;
            do
            {
                Console.WriteLine(str);
                try
                {
                    number = Convert.ToInt32(Console.ReadLine());
                    if (number >= left && number <= right) ok = true;
                    else { Console.WriteLine("Не верно введено число!"); ok = false; }
                }
                catch (FormatException)
                { Console.WriteLine("Не верно введено число!Введите целое число!"); ok = false; }
                catch (OverflowException)
                { Console.WriteLine("Не верно введено число!Переполнение!"); ok = false; }
            } while (!ok);
            return number;
        }
 
    //Метод-процедура для печати меню и вызова функций 
        static void MakeMenu(int[] arr, int sizeOfArray)
        {
            int check = 0;
            bool sortOk = false;
 
            do
            {
                Console.WriteLine("1. Формирование массива");
                Console.WriteLine("2. Печать массива");
                Console.WriteLine("3. Удаление элементов из массива");
                Console.WriteLine("4. Добавление элементов в массив");
                Console.WriteLine("5. Перестановка элементов в массиве");
                Console.WriteLine("6. Поиск элемента в массиве");
                Console.WriteLine("7. Сортировка массива");
                Console.WriteLine("8. Выход");
                check=ReadIntNumber("",1,3);
 
                switch(check)
                {
                    case 1:
                        sizeOfArray=ReadIntNumber("Введите размер массива: ", MIN_LENGTH,MAX_LENGTH);
                        arr=MakeArray(sizeOfArray);
                        sortOk=false;
                        break;
                    case 2:
                        PrintArray(arr, sizeOfArray);sortOk=false;
                        break;
                   case 3: 
                    arr=DeleteFromArray(ref arr, ref sizeOfArray);
                    sortOk=false;//массив изменился
                    break;
                }
                        
                        
            }while(check>=1 && check<=3);
 
        }
 
    // Метод-функция для формирования массива двумя способами
        static int[] MakeArray(int sizeOfArray)
        {
            int[] arr = null;
            int check = 0;
 
            Console.WriteLine("1. С помощью ДСЧ(датчика случайных чисел)");
            Console.WriteLine("2. Ввод с клавиатуры");
            check = ReadIntNumber("", 1, 2);
            switch (check)
            {
                case 1:
                    arr = MakeRandomArray(sizeOfArray);
                    Console.WriteLine("Элементы сгенерированы");
                    break;
                case 2:
                    arr = ReadArray(sizeOfArray);
                    break;
          }
            Console.WriteLine("Массив сформирован");
            return arr;
        }
 
    // Метод-функция для формирования массива с помощью ДСЧ(1 способ)
        static int[] MakeRandomArray(int sizeOfArray)
        {
            Random rnd = new Random();
            int[] arr = new int[sizeOfArray];
            for (int i = 0; i < sizeOfArray; i++)
            {
                arr[i] = rnd.Next(MIN_VALUE, MAX_VALUE);
            }
            return arr;
        }
  
    // Метод-функция для ввода элементов массива с клавиатуры( способ 2)
        static int[] ReadArray(int sizeOfArray)
        {
            int[] arr = new int[sizeOfArray];
            for (int i = 0, n=1; i < sizeOfArray; i++)
            {
           
            Console.WriteLine("Введите элемент {0} массива из диапазона от -100 до 100", n++);
            arr[i] = ReadIntNumber(" ", MIN_VALUE, MAX_VALUE);
            }
            return arr;
        }
 
        //Метод-процедура для вывода массива на экран(печати)
        static void PrintArray(int[] arr, int sizeOfArr)
        {
            if (ExistArray(arr))
            {
                foreach (int elem in arr)
                    Console.Write(elem + " ");
                Console.WriteLine();
            }
            else Console.WriteLine("Массив пустой!");
        }
        
    //Метод-функция для проверки массива на пустоту
        static bool ExistArray(int[] arr)
        {
            if (arr == null) { return false; }//массив пустой
            return true;// не пустой массив
        }
 
        static void DeleteFromArray(ref int[] arr,ref int sizeOfArr)
        {
            Console.WriteLine("Удаление элементов с нечетными индексами");
            if (!ExistArray(arr)) { Console.WriteLine("Удаление невозможно! Массив пустой!"); return;}//Массив не меняется, можно завершить функцию
          
                if (arr.Length % 2 == 0) sizeOfArr = arr.Length / 2;// Нахождение количества элементов с четным индексом 
                else sizeOfArr = (arr.Length + 1) / 2;
 
                int[] rez = new  int[sizeOfArr];
               
                for (int i = 0, j = 0; j < sizeOfArr; i += 2, j++)
                {
                    rez[j] = arr[i];
                }
                Console.WriteLine("Удаление элементов с нечетными индексами выполнено.");
 
            
        }
 
 
        static void Main(string[] args)
        {
            Console.WriteLine("Программа для работы с одномерным массивом");
            int sizeOfArray = 0; //
            int[] arr = null;
            MakeMenu(arr, sizeOfArray);
 
 
 
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2013, 19:49
Ответы с готовыми решениями:

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

Действия с одномерным массивом.
Для одномерного массива целых чисел AB, содержащий 10 элементов, определить: 13) произведение элементов массива, стоящих на местах,...

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

1
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
19.12.2013, 20:15
Посмотри сюда:
C#
1
static void DeleteFromArray(ref int[] arr, ref int sizeOfArr)
Что значит void? Это значит, что функция ничего не возвращает. Так почему же ты берешь и делаешь так?
C#
1
arr=DeleteFromArray(ref arr, ref sizeOfArray);
Глупость несуесветная.
1)Брать значение из функции void.
2) Если передаешь что либо по ref, и потом её присваивать. Все равно потом после отработки функции значени будет изменено без присваивания, смысыл присваивать?
3)Массив ссылочный тип. Ему ref побарабану.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.12.2013, 20:15
Помогаю со студенческими работами здесь

Действия с одномерным массивом
В одномерном массиве, состоящем из N целых элементов, вычислить: • произведение элементов массива с четными номерами; • сумму элементов...

Выполнить действия с одномерным массивом
В одномерном массиве состоящем из n целых вещественных элементов вычислить: 1) произведение положительных элементов с четными номерами ...

Произвести заданные действия с одномерным массивом
Ребят, помогите пожалуйста с заданием В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) сумму элементов...

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

Выполнить заданные действия с одномерным массивом
Уважаемые форумчане,буду очень благодарна если вы сможете уделить времени для написания моего кода.(Прошу вас ,так как для меня это все...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru