0 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 21
1

Дан массив А из n элементов. Поменяйте местами последний и k-ый элементы

04.01.2014, 00:56. Показов 1481. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив А из n элементов. Поменяйте местами последний и k-ый элементы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2014, 00:56
Ответы с готовыми решениями:

Дан массив А из n элементов. Поменяйте местами первый и н-ый элементы
Подскажите чайнику как сделать? Я могу сделать чтоб менялись рандомно, а как сделать именно 1-ый и...

Дан одномерный массив AN. Преобразуйте массив следующим образом; поменяйте местами наибольший и наименьший элементы массива
нужна помощь!)) *Дан одномерный массив AN. Преобразуйте массив следующим образом (дополнительные...

Дан квадратный массив. Поменяйте в нем местами элементы главной и побочной диагоналей.
Дан квадратный массив. Поменяйте в нем местами элементы главной и побочной диагоналей.

Поменяйте местами первый минимальный и последний элементы
Дан массив А из n элементов. Поменяйте местами первый минимальный и последний элементы. n=5,...

15
0 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 24
04.01.2014, 07:29 2
Какой тип данных? Предположим что целый.

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;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication4
{
    class Program
    {
        static void func(int[] A, int k)
        {
            int tmp = A[k];
            A[k] = A[A.Length-1];
            A[A.Length-1] = tmp;
        }
 
        static void PrintArray(int[] A)
        {
            for (int i = 0; i < A.Length; i++)
                Console.Write(A[i] + " ");
            Console.WriteLine();
        }
 
 
        static void Main(string[] args)
        {
            int[] A = new int[]{22,3,6,32,78,44,32};
            Console.Write("Введите k: ");
            int k = int.Parse(Console.ReadLine());
 
            Console.WriteLine("Исходный массив: ");
            PrintArray(A);
 
            func(A, k);
 
            Console.WriteLine("После вызова функции: ");
            PrintArray(A);
 
            Console.Write("Press any key...");
            Console.ReadKey(true);
            
        }
    }
}
0
42 / 42 / 7
Регистрация: 23.04.2010
Сообщений: 93
04.01.2014, 10:01 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private int[] GetNewArray(int[] array, int index)
{
    if (array == null || array.Length < 1 || array.Length -1 <= index)
    {
        return array;
    }
 
    var element = array.ElementAt(index);
    array[index] = array.Last();
    array[array.Length -1] = element;
 
    return array;
}
0
0 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 24
04.01.2014, 17:27 4
у меня к вам несколько вопросов:

1. могли бы вы пояснить, для чего используется var?
я его обычно не использую, нет опыта работы с ним.
читал для чего он примерно нужен.
здесь мы явно принимаем 1ый параметр int[]

2. первое условие видимо для избегания ошибок?

3. еще одно: есть ли преимущество возврата именно массива (использования int[] GetNewArray)
перед void функцией?

4. почему функция private? в чем плюсы?

Добавлено через 20 минут
5. В чем преимущество
array.ElementAt(index); перед array[index];
array.Last(); перед array[array.Length - 1];
0
42 / 42 / 7
Регистрация: 23.04.2010
Сообщений: 93
04.01.2014, 22:11 5
По первому пунтку, где явно задаётся тип красивее использовать var, но это кстати спорно. Мне лично так кажется красивее да и короче код. По второму, ответ да. По третьему и четвертому - постарайтесь сами разобраться, это легко. По пятому, можно и без linq, и даже в этом случае будет правильнее и красивее, просто это уже привычка его использовать для работы с коллекциями , да и писал я от руки
0
0 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 24
04.01.2014, 22:31 6
Цитата Сообщение от Smekalisty Посмотреть сообщение
По первому пунтку, где явно задаётся тип красивее использовать var, но это кстати спорно. Мне лично так кажется красивее да и короче код. По второму, ответ да. По третьему и четвертому - постарайтесь сами разобраться, это легко. По пятому, можно и без linq, и даже в этом случае будет правильнее и красивее, просто это уже привычка его использовать для работы с коллекциями , да и писал я от руки
ну насчет 3его мне просто непонятно:
так или иначе в функцию передается ссылка на массив, он изменяется в памяти.
какой смысл его еще и возвращать?
т.е. он изменится и потом вернется в другой или сам в себя - лишняя перезапись данных, которые итак уже записались.

Добавлено через 8 минут
да и без static он не работает, вы запускаете его каким то другим образом?
0
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
04.01.2014, 23:21 7

Не по теме:

Smekalisty, моя очередь критиковать = )



- var`ы - лишняя вкусняшка (особенно там, где выходной тип заранее известен). все равно в однажды инициализированную переменную другой тип не впихнешь. зато если написать int element, то мозги сразу ловят этот "инт". человеческий фактор, мать его. читабельность и поддержка кода. C# - строго типизированный язык, и свое мнение я выразил;

- по поводу п. 3: эээ??? если функция принимает массив и возвращает его, то логично было бы предположить, что входной массив не меняется. но это не так. не нужно предлагать такой код новичкам, если не хотите потом плеваться на "быдлокодера, написавшего этот долбаный фреймворк". выходы: либо делать CopyTo и работать с копией, либо делать метод void. в обоих случаях принцип работы становится интуитивно понятен еще из сигнатуры функции
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 47
06.01.2014, 05:01 8
Посмотрите код. изучаю С# пару недель, может кому пригодится метод для начинающих.
Программа меняет любые 2 элемента в массиве

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
class Program
{
    static void Main()
    {
        Console.WriteLine("Введите кол-во элементов в массиве");
        int n = int.Parse(Console.ReadLine());
        int[] mas = new int[n];
        Random rnd = new Random();
        for (int i = 0; i <mas.Length; i++)
        {
            int random = rnd.Next(0,100);
            mas[i] = random;
            Console.Write(mas[i] + " ");
        }
        Console.ReadLine();
        Console.WriteLine("Введите порядковый номер первого элемента");
        int m1 = int.Parse(Console.ReadLine());
        Console.WriteLine("Введите порядковый номер второго элемента");
        int m2 = int.Parse(Console.ReadLine());
        //меняем местами
        int temp;
        temp = mas[m1-1];
        mas[m1-1] = mas[m2-1];
        mas[m2-1] = temp;
 
        for (int i = 0; i < mas.Length; i++)
            Console.Write(mas[i] + " ");
        Console.ReadLine();
    }
}
0
26 / 26 / 10
Регистрация: 22.12.2013
Сообщений: 153
06.01.2014, 14:10 9
Цитата Сообщение от vovsanuch Посмотреть сообщение
int m1 = int.Parse(Console.ReadLine());
без try-catch - быдлокод еще тот. Советую много подумать
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 47
06.01.2014, 14:26 10
паха76, та то понятно, написал саму логику
0
foo();
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
06.01.2014, 15:57 11
Цитата Сообщение от sezada Посмотреть сообщение
var`ы - лишняя вкусняшка
а как вы перепишете этот код?
C#
1
var employee = new { ID = n, Name = str };
0
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
06.01.2014, 16:15 12
rattrapper, скорее всего, потрачу время, чтобы описать свою структуру/класс (если это более-менее большой проект). в тестовом проекте можно сделать и так, но оставить где-нибудь мне религия не позволит. статический контроль - мой маленький бзик, не люблю малейшей неопределенности прошу понять и простить

так-то я высказывался по поводу кода:

C#
1
2
int[] a = //some init;
var b = a[5];
0
foo();
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
06.01.2014, 16:17 13
sezada, но все равно, var прописать приятнее, чем, например, IEnumerable<KeyValuePair<char,int>> при использовании Linq
0
sezada
06.01.2014, 16:23
  #14

Не по теме:

rattrapper, я ведь пояснил, верно? к тому же в моем первом посте написано "вкусняшка" и "имхо". давайте не будем холиварить? = )

0
паха76
06.01.2014, 16:27
  #15

Не по теме:


Цитата Сообщение от vovsanuch Посмотреть сообщение
та то понятно, написал саму логику
фу так писать и на форум для новичков выкладывать

0
rattrapper
06.01.2014, 16:34     Дан массив А из n элементов. Поменяйте местами последний и k-ый элементы
  #16

Не по теме:

Цитата Сообщение от sezada Посмотреть сообщение

Не по теме:

rattrapper, я ведь пояснил, верно? к тому же в моем первом посте написано "вкусняшка" и "имхо". давайте не будем холиварить? = )

:friends:))

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2014, 16:34

В одномерном массиве поменяйте местами последний наименьший и первый наибольший элементы
Задача: В одномерном целочисленном массиве поменяйте местами последний наименьший и первый...

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

Дан массив E[1:n].Поменять местами его первый чётный и последний нечётный элементы
Дан массив E.Поменять местами его первый чётный и последний нечётный элементы

Дан массив E[0:n-1].Поменять местами его первый чётный и последний нечётный элементы
Помогите пожалуйста.Нужен полный текст программы, заранее благодарен


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru