Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1AK1
2 / 2 / 1
Регистрация: 14.02.2017
Сообщений: 80
1

Напишите две функции, reverseArray и reverseArrayInPlace

15.09.2017, 15:41. Просмотров 954. Ответов 9
Метки нет (Все метки)

Напишите две функции, reverseArray и reverseArrayInPlace. Первая получает массив как аргумент и выдаёт новый массив, с обратным порядком элементов. Вторая работает как оригинальный метод reverse – она меняет порядок элементов на обратный в том массиве, который был ей передан в качестве аргумента. Не используйте стандартный метод reverse.
Помогите пожалуйста,не знаю как это сделать
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2017, 15:41
Ответы с готовыми решениями:

Напишите программу, реализующую работу очереди. Напишите функции для добавления/удаления элемента в очередь
Помогите пожалуйста написать программу. Готовый Queue не нужен( Нужно изобрести...

Напишите алгоритм и программу возведения числа в четвертую степень за две операции
Помогите пожалуйста) Напишите алгоритм и программу возведения числа в...

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

Напишите функции для добавления/удаления элемента в стек
помогите написать пожалуйста программу, реализующую работу стека. Напишите...

Напишите программу, которая выводит на экран таблицу значений функции
Напишите программу, которая выводит на экран таблицу значений функции у =...

9
SeIZVeIZ
685 / 630 / 267
Регистрация: 08.02.2014
Сообщений: 1,950
Завершенные тесты: 3
15.09.2017, 15:54 2
посмотри как реализована функция Reverse, да сделай подобие, чего велосипед изобретать первая будет таким же подобием только работать с временным массивом будет и его уже возвращать как значение
0
woldemas
444 / 316 / 173
Регистрация: 06.09.2013
Сообщений: 957
15.09.2017, 16:03 3
Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

Без проверок на null как-то так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void ReverseArrayInPlace<T>(T[] array)
{
    int left = 0;
    int right = array.Length - 1;
    while (left < right) {
        T tmp = array [left];
        array [left] = array [right];
        array [right] = tmp;
        left++;
        right--;
    }
}
 
public static T[] ReverseArray<T>(T[] array)
{
    T[] result = (T[])array.Clone ();
    ReverseArrayInPlace (result);
    return result;
}
0
1AK1
2 / 2 / 1
Регистрация: 14.02.2017
Сообщений: 80
15.09.2017, 16:12  [ТС] 4
Выдает такую ошибку,что не так?
Ошибка Программа не содержит статического метода "Main", подходящего для точки входа.
0
SeIZVeIZ
685 / 630 / 267
Регистрация: 08.02.2014
Сообщений: 1,950
Завершенные тесты: 3
15.09.2017, 16:14 5

Не по теме:

Цитата Сообщение от 1AK1 Посмотреть сообщение
что не так?
прослойка между компом и стулом



Вы удалили метод Main и пытаетесь собрать программу, компилятор не находит метод и ругается. Почитайте литературу как вообще приложения делаются видимо даже такой банальной информации у Вас нет.
0
Тапок ярости
8 / 8 / 4
Регистрация: 11.02.2017
Сообщений: 99
Завершенные тесты: 1
15.09.2017, 16:20 6
получилось ппц криво, но хоть чето
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
static int[] MyRevers(int[] mass)
        {
            int[] result = new int[mass.Length];
            for (int i = 0, j = mass.Length - 1; j >= 0; i++, j--)
            {
                result[i] = mass[j];
            }
            return result;
        }
 
static void NewOldRevers(ref int[] mass)
        {
            int[] result = new int[mass.Length];
            for (int i = 0, j = mass.Length - 1; j >= 0; i++, j--)
            {
                result[i] = mass[j];             
            }
            for(int i = 0; i<mass.Length;i++)
            {
                mass[i] = result[i];
            }
        }
 
int[] arr = { 1, 2, 3, 4, 5 };
            int[] arr2;
            arr2 = MyRevers(arr);
            NewOldRevers(ref arr);
 
 
            Console.WriteLine("Реверсивный массив");
            foreach (int b in arr)
            {
                Console.WriteLine(b);
            }
            Console.WriteLine();
            foreach (int t in arr2)
            {
                Console.WriteLine(t);
            }
0
woldemas
444 / 316 / 173
Регистрация: 06.09.2013
Сообщений: 957
15.09.2017, 16:42 7
Цитата Сообщение от Тапок ярости Посмотреть сообщение
получилось ппц криво
У вас нет реверса на месте ни в одной из функций, вы везде новый массив создаете, смысл фразы "на месте" - экономить память. И передачи по ref не должно быть в таком методе.
0
Dekap
88 / 81 / 73
Регистрация: 30.12.2015
Сообщений: 196
Завершенные тесты: 2
15.09.2017, 16:45 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
using System;
 
 
namespace ConsoleApp22
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = { 1, 2, 3, 6, 8, 4 };
            ReverseArrayInPlace<int>(arr);
            foreach(int i in arr)
                Console.Write(i+ " ");
 
            Console.WriteLine();
            int[] arr2 = ReverseArray<int>(arr);
 
            foreach (int i in arr2)
                Console.Write(i + " ");
 
            Console.ReadKey();
 
        }
        public static void ReverseArrayInPlace<T>(T[] array)
        {
            T temp;
            for (int i = 0; i < array.Length / 2; i++)
            {
                temp = array[i];
                array[i] = array[array.Length - i - 1];
                array[array.Length - i - 1] = temp;
            }
        }
        public static T[] ReverseArray<T>(T[] array)
        {
            T[] temp = new T[array.Length];
            Array.Copy(array, temp, array.Length);
            ReverseArrayInPlace<T>(temp);
            return temp;
        }
 
    }
 
 
}
0
LazySlacker
89 / 73 / 31
Регистрация: 29.08.2017
Сообщений: 188
15.09.2017, 23:23 9
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
 
class Program
{
    public static void Main()
    {
        char[] arr = "абракадабра".ToCharArray();
        for (int i = 0, j = arr.Length - 1; i < j; ++i, --j)
        {
            if (arr[i] != arr[j])
            {
                char ch = arr[i];
                arr[i] = arr[j];
                arr[j] = ch;
            }
        }
        Console.WriteLine(new String(arr));
    }
}
0
Тапок ярости
8 / 8 / 4
Регистрация: 11.02.2017
Сообщений: 99
Завершенные тесты: 1
16.09.2017, 00:36 10
изначально в задаче не ставилось условие не использовать ref
0
16.09.2017, 00:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2017, 00:36

Написать две функции. Поиска формы и компонента на форме.
Здравствуйте. Я в С# новичок. Поэтому сразу к вопросам: Как найти...

Разделение кода на две или более пользовательских функции
Нужно разбить код для подсчета уравнения, на две или более пользовательские...

Две разные функции при нажатии на одну кнопку
Здравствуйте! Суть вот в чём. Есть 1 кнопка. Если на неё 1 раз нажать...


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

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

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