Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/106: Рейтинг темы: голосов - 106, средняя оценка - 4.75
43 / 11 / 3
Регистрация: 16.12.2008
Сообщений: 107

Переворот строки

10.12.2010, 22:31. Показов 20270. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Удивительно, но в поиске такого не нашел...
В общем, нужно создать метод переворота заданной строки.
Вот мое решение.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static string Change(string str)
        {
            char [] dop;
            char simv;
            int i;
            dop = str.ToCharArray();
            for (i=0;i<(dop.Length/2);i++)
            {
                simv = dop[i];
                dop[i] = dop[dop.Length - i-1];
                dop[dop.Length - i-1] = simv;
 
            }
            str = new string(dop);
            return str;
        }
Можно ли как-нибудь без дополнительного массива обойтись?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.12.2010, 22:31
Ответы с готовыми решениями:

Хитрый переворот строки
требуется перевернуть строку и попарно символы в ней, т.е. было 1234567890 - исходная строка переворот 0987654321 попарно ...

Двумерный массив, переворот
Может кто знаем алгоритм переворота матрицы N*M на 90°. Подскажите, пожалуйста, либо подскажите алгоритм действий.

Переворот цифр введенного исходного числа
Доброго всем времени суток) Помогите разобраться в задаче. Ввести с клавиатуры натуральное трехзначное десятичное число. ...

10
10 / 10 / 4
Регистрация: 27.04.2010
Сообщений: 122
10.12.2010, 22:34
Строку можно ведь и как массив представить и обращаться к элементам строки через индекс. Не делая dop = str.ToCharArray();
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
10.12.2010, 22:35
Расширение для класса string, требуется поддержка Linq
C#
1
2
3
4
5
  // метод "переворачивания строки"
        public static string Reverce(this String str)
        {
            return new string(str.ToCharArray().Reverse().ToArray());
        }
0
43 / 11 / 3
Регистрация: 16.12.2008
Сообщений: 107
10.12.2010, 22:44  [ТС]
nio, спасибо, но это я знаю )
В самом задании сказано написать метод переворота строки.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
10.12.2010, 22:49
Цитата Сообщение от Napster Посмотреть сообщение
В самом задании сказано написать метод переворота строки.
Тогда твой метод реализует все верно, без цикла тут никак и без доп массива тоже
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
10.12.2010, 23:01
Можно так:
C#
1
2
3
4
5
6
7
public static string Reverse(this string str)
{
    string s = string.Empty;
    for (int i = str.Length - 1; i >= 0; --i)
        s += str[i];
    return s;
}
0
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
10.12.2010, 23:02
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
using System;
 
namespace ConsoleApplication1 {
    class Program {
        static void Main(string[] args) {
 
            string fwd = "asdfghj";
            string rvs = Reverse(fwd);
 
            Console.WriteLine(fwd);
            Console.WriteLine(rvs);
 
            Console.ReadKey();
 
        }
 
        private static string Reverse(string fwd) {
            char[] carr = fwd.ToCharArray();
            char temp;
            for (int i = 0; i < carr.Length / 2; i++) {
                temp = carr[carr.Length - 1 - i];
                carr[carr.Length - 1 - i] = carr[i];
                carr[i] = temp;
            }
            return new string(carr);
        }
 
    }
}
крайне не советую пользоваться методом, предложенным Konctantin - будет дико тормозить на больших строках. почему? да потому что, Работа со строками. Строковые функции

сорри, не заметил, что решение изначально абсолютно верное было. чего тут обсуждать-то?=))
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
10.12.2010, 23:15
это всего лишь один из вариантов...
0
 Аватар для sigmov
585 / 372 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
11.12.2010, 10:05
Цитата Сообщение от Napster Посмотреть сообщение
Можно ли как-нибудь без дополнительного массива обойтись?
C#
1
2
3
4
5
string s = "123456";
char c;
fixed (char* pin = s)
    for (char* l = pin, r = l + s.Length-1; l < r; c = *r, *r = *l, *l = c, l++, r--) ;
Console.WriteLine(s);
0
1 / 1 / 0
Регистрация: 13.05.2019
Сообщений: 1
13.05.2019, 18:39
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string input, output = "";
            input = Console.ReadLine();
            char[] vs = new char[input.Length];
            for (int i = 0; i < input.Length; i++)
            {
                vs[i] = input[input.Length - i - 1];
            }
            foreach (var item in vs)
            {
                output += item;
            }
            Console.WriteLine(output);
            Console.ReadKey();
        }
    }
}
1
1 / 1 / 0
Регистрация: 19.12.2017
Сообщений: 105
21.01.2021, 19:02
Сделал для числа. Но для строки тоже сгодится, если убрать проверку на число и конвертацию в числовое значение.
Особо не бейте.
В C# только вторую неделю...


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
using System;
 
namespace DZ_1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Input your number: ");
            string str = Console.ReadLine(); ;
            int tmp;
            if (int.TryParse(str, out tmp))
            {
                string rev_str = "";
                
                for(int i = str.Length-1; i >= 0; i --)
                {
                    rev_str = rev_str + str[i];                    
                }                
                tmp = Convert.ToInt32(rev_str);
 
                Console.WriteLine($"You number after reverse: {tmp}");
            }
            else
            {
                Console.WriteLine("You must to input number...");
            }
        }
    }
}
Добавлено через 13 минут
С комментариями:
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
using System;
 
namespace DZ_1
{
    class Program
    {
        static void Main(string[] args)
        {       
 
            Console.WriteLine("Input your number: "); // Ввод числа (строки)
            string str = Console.ReadLine();
            int res; // Число 
            if (int.TryParse(str, out res)&&Convert.ToInt32(str)>0) // Если введено число с условием >0
            {
                string rev_str = ""; // Строка для записи перевернутой первой строки
 
                for (int i = str.Length - 1; i >= 0; i--)
                {
                    rev_str = rev_str + str[i];                    // Процесс переворота
                }
                res = Convert.ToInt32(rev_str); // Конвертация в число
 
                Console.WriteLine($"You number after reverse: {res}"); // Вывод результата
            }
            else
            {
                Console.WriteLine("You must to input number... And this number must to be bigger than zero..."); // Если введено не число
            }
 
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.01.2021, 19:02
Помогаю со студенческими работами здесь

Двойной переворот, или расположить в обратном порядке часть последовательности
Дана последовательность натуральных чисел 1, 2, 3, ..., N (1 ≤ N ≤ 1000). Необходимо сначала расположить в обратном порядке часть этой...

Переворот строки
Нужно написать рекурсивную подпрограмму переворота строки. Например: прога-&gt;агорп

Переворот строки
Реализуйте класс ReversibleString, хранящий строку и поддерживающий методы Reverse для переворота строки и ToString для получения строки. ...

Переворот строки
Добрый день интересует вопрос про функцию std::reverse, при использовании цифр и букв она работает как надо, но при добавлении в строку...

Переворот строки
Почему при использовании указателя ошибка, а при использование массива всё нормально? void RevStr(char *str){ char *start,*end; ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru