Как вывести массив в обратном порядке си шарп
Перейти к содержимому

Как вывести массив в обратном порядке си шарп

  • автор:

Функция выводит на экран элементы массива в обратном порядке

static string InverseArray(string[] str) почему вы принимаете массив строк, а возвращаете одну строку?

12 янв 2019 в 15:48
@tym32167 извените. а как правильно записать? или ретурн в фор занести?
12 янв 2019 в 15:55
Ну а что вы из функции хотите вернуть?
12 янв 2019 в 15:55
@tym32167 елементы массива в обратном порядке
12 янв 2019 в 15:56
@tym32167 strNew += str[str.Length — i — 1]; от так уже выводит но только слова в обратной форме((
12 янв 2019 в 15:58

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Если вам надо перевернуть массив, это делается вот так:

static string[] InverseArray(string[] str) < string[] strNew = new string[str.Length]; for (int index = 0; index < str.Length; index++) < strNew[index] += str[str.Length - 1 - index]; >return strNew; > 

Использовать можно вот так

var array = new[] ; foreach(var s in InverseArray(array)) Console.WriteLine(s); 

Но это по сути то же самое, что и

var array = new[] ; foreach(var s in array.Reverse()) Console.WriteLine(s); 

Ну, или, если вам можно прямо исходный массив перевернуть, можно сделать так

var array = new[] ; Array.Reverse(array); foreach(var s in array) Console.WriteLine(s); 

Чтобы перевернуть строку, можно сделать так:

static string InverseString(string str)

Если вам надо и массив развернуть, и каждую строку в нем, то можно так

var array = new[] ; foreach(var s in array.Reverse()) Console.WriteLine(InverseString(s)); 

Как вывести массив в обратном порядке си шарп

Сообщение от acteralex

3) Расположение в обратном порядке. Создаешь новый массив из 100 элементов и присваиваешь ему ранее созданный массив. Используя цикл for переставляшь i-тый и (i+1)-тый элементы местами.

Это Вы ошибаетесь. Зачем переставлять соседние элементы массива?!
Нужно записывать элементы a[i] -> b[9-i] (ну, или a[9-i] -> b[i], что одно и то же. )

 Random ran = new Random(DateTime.Now.Millisecond); int[] mas1 = new int[10]; for (int i = 0; i < 10; i++) < mas1[i] = ran.Next(100); Console.Write(" ",mas1[i]); > Console.WriteLine(); int[] mas2 = new int[10]; for (int i = 0; i < 10; i++) < mas2[9 - i] = mas1[i]; >Console.WriteLine("Перевёрнутый массив"); for (int i = 0; i < 10; i++) < Console.Write(" ", mas2[i]); > Console.WriteLine(); Console.WriteLine("Нажмите любую клавишу для выхода из программы. "); Console.ReadKey();

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

 Random ran = new Random(DateTime.Now.Millisecond); int[] mas1 = new int[10]; for (int i = 0; i < 10; i++) < mas1[i] = ran.Next(100); Console.Write(" ",mas1[i]); > Console.WriteLine(); int[] mas2 = new int[10]; Array.Copy(mas1, mas2, mas1.Length); Array.Reverse(mas2); Console.WriteLine("Перевёрнутый массив"); for (int i = 0; i < 10; i++) < Console.Write(" ", mas2[i]); > Console.WriteLine(); Console.WriteLine("Нажмите любую клавишу для выхода из программы. "); Console.ReadKey();

Последний раз редактировалось Serge_Bliznykov; 11.03.2013 в 08:53 .

Serge_Bliznykov
Посмотреть профиль
Найти ещё сообщения от Serge_Bliznykov

Как вывести массив в обратном порядке си шарп

Познакомившись с циклами, переменными, условными конструкциями и массивами, рассмотрим несколько задач для работы с массивами.

Количество положительных чисел

Найдем количество положительных чисел в массиве:

int[] numbers = < -4, -3, -2, -1, 0, 1, 2, 3, 4 >; int result = 0; foreach(int number in numbers) < if(number >0) < result++; >> Console.WriteLine($"Число элементов больше нуля: ");

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

Инверсия массива

Вторая задача — инверсия массива, то есть переворот его в обратном порядке:

int[] numbers = < -4, -3, -2, -1,0, 1, 2, 3, 4 >; int n = numbers.Length; // длина массива int k = n / 2; // середина массива int temp; // вспомогательный элемент для обмена значениями for(int i=0; i < k; i++) < temp = numbers[i]; numbers[i] = numbers[n - i - 1]; numbers[n - i - 1] = temp; >foreach(int i in numbers) < Console.Write($"\t"); >

Поскольку нам надо изменять элементы массива, то для этого используется цикл for. Алгоритм решения задачи подразумевает перебор элементов до середины массива, которая в программе представлена переменной k, и обмен значений элемента, который имеет индекс i, и элемента с индексом n-i-1.

Программа сортировки массива

Теперь возьмем задачу посложнее — простейшую сортировку массива:

int[] nums = < 54, 7, -41, 2, 4, 2, 89, 33, -5, 12 >; // сортировка int temp; for (int i = 0; i < nums.Length - 1; i++) < for (int j = i + 1; j < nums.Length; j++) < if (nums[i] >nums[j]) < temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; >> > // вывод Console.WriteLine(«Вывод отсортированного массива»); for (int i = 0; i

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

Во внешнем цикле мы берем элемент, который будем сравнивать:

for (int i = 0; i < nums.Length - 1; i++)

Далее запускаем вложенный цикл, который начинается, со следующего элемента, и из которого извлекаем элементы, с которыми будем сравнивать тот элемент, которые берется из массива во внешнем цикле:

for (int j = i + 1; j < nums.Length; j++)

Если элемент с меньшим индексом больше элемента с большим индексом, то меняем элементы местами.

if (nums[i] > nums[j])

В конце выводим все элементы.

Как вывести массив в обратном порядке си шарп

Все массивы в C# построены на основе класса Array из пространства имен System. Этот класс определяет ряд свойств и методов, которые мы можем использовать при работе с массивами. Основные свойства и методы:

  • Свойство Length возвращает длину массива
  • Свойство Rank возвращает размерность массива
  • int BinarySearch (Array array, object? value) выполняет бинарный поиск в отсортированном массиве и возвращает индекс найденного элемента
  • void Clear (Array array) очищает массив, устанавливая для всех его элементов значение по умолчанию
  • void Copy (Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length) копирует из массива sourceArray начиная с индекс sourceIndex length элементов в массив destinationArray начиная с индекса destinationIndex
  • bool Exists (T[] array, Predicate match) проверяет, содержит ли массив array элементы, которые удовлеворяют условию делегата match
  • void Fill (T[] array, T value) заполняет массив array значением value
  • T? Find (T[] array, Predicate match) находит первый элемент, который удовлеворяет определенному условию из делегата match. Если элемент не найден, то возвращается null
  • T? FindLast (T[] array, Predicate match) находит последний элемент, который удовлеворяет определенному условию из делегата match. Если элемент не найден, то возвращается null
  • int FindIndex (T[] array, Predicate match) возвращает индекс первого вхождения элемента, который удовлеворяет определенному условию делегата match
  • int FindLastIndex (T[] array, Predicate match) возвращает индекс последнего вхождения элемента, который удовлеворяет определенному условию
  • T[] FindAll (T[] array, Predicate match) возвращает все элементы в виде массива, которые удовлеворяет определенному условию из делегата match
  • int IndexOf (Array array, object? value) возвращает индекс первого вхождения элемента в массив
  • int LastIndexOf (Array array, object? value) возвращает индекс последнего вхождения элемента в массив
  • void Resize (ref T[]? array, int newSize) изменяет размер одномерного массива
  • void Reverse (Array array) располагает элементы массива в обратном порядке
  • void Sort (Array array) сортирует элементы одномерного массива

Разберем самые используемые методы.

Поиск индекса элемента

string[] people = < "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" >; // находим индекс элемента "Bob" int bobIndex = Array.BinarySearch(people, "Bob"); // находим индекс первого элемента "Tom" int tomFirstIndex = Array.IndexOf(people, "Tom"); // находим индекс последнего элемента "Tom" int tomLastIndex = Array.LastIndexOf(people, "Tom"); // находим индекс первого элемента, у которого длина строки больше 3 int lengthFirstIndex = Array.FindIndex(people, person => person.Length > 3); // находим индекс последнего элемента, у которого длина строки больше 3 int lengthLastIndex = Array.FindLastIndex(people, person => person.Length > 3); Console.WriteLine($"bobIndex: "); // 2 Console.WriteLine($"tomFirstIndex: "); // 0 Console.WriteLine($"tomLastIndex: "); // 4 Console.WriteLine($"lengthFirstIndex: "); // 3 Console.WriteLine($"lengthLastIndex: "); // 5

Если элемент не найден в массиве, то методы возвращают -1.

Поиск элемента по условию

string[] people = < "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" >; // находим первый и последний элементы // где длина строки больше 3 символов string? first = Array.Find(people, person => person.Length > 3); Console.WriteLine(first); // Kate string? last = Array.FindLast(people, person => person.Length > 3); Console.WriteLine(last); // Alice // находим элементы, у которых длина строки равна 3 string[] group = Array.FindAll(people, person => person.Length == 3); foreach (var person in group) Console.WriteLine(person); // Tom Sam Bob Tom

Изменение порядка элементов массива

Например, изменим порядок элементов:

string[] people = < "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" >; Array.Reverse(people); foreach (var person in people) Console.Write($" "); // "Alice", "Tom", "Kate", "Bob", "Sam", "Tom"

Также можно изменить порядок только части элементов:

string[] people = < "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" >; // изменяем порядок 3 элементов начиная c индекса 1 Array.Reverse(people, 1, 3); foreach (var person in people) Console.Write($" "); // "Tom", "Kate", "Bob", "Sam", "Tom", "Alice"

В данном случае изменяем порядок только 3 элементов начиная c индекса 1.

Изменение размера массива

Для изменения размера массива применяется метод Resize. Его первый параметр - изменяемый массив, а второй параметр - количество элементов, которые должны быть в массиве. Если второй параметр меньше длины массива, то массив усекается. Если значение параметра, наоборот, больше, то массив дополняется дополнительными элементами, которые имеют значение по умолчанию. Причем первый параметр передается по ссылке:

string[] people = < "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" >; // уменьшим массив до 4 элементов Array.Resize(ref people, 4); foreach (var person in people) Console.Write($" "); // "Tom", "Sam", "Bob", "Kate"

Копирование массива

Метод Copy копирует часть одного массива в другой:

string[] people = < "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" >; var employees = new string[3]; // копируем 3 элемента из массива people c индекса 1 // и вставляем их в массив employees начиная с индекса 0 Array.Copy(people,1, employees,0, 3); foreach (var person in employees) Console.Write($" "); // Sam Bob Kate

В данном случае копируем 3 элемента из массива people начиная c индекса 1 и вставляем их в массив employees начиная с индекса 0.

Сортировка массива

Отсортируем массив с помощью метода Sort() :

string[] people = < "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" >; Array.Sort(people); foreach (var person in people) Console.Write($" "); // Alice Bob Kate Sam Tom Tom

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

string[] people = < "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" >; // сортируем с 1 индекса 3 элемента Array.Sort(people, 1, 3); foreach (var person in people) Console.Write($" "); // Tom Bob Kate Sam Tom Alice

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *