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

Напечатать слова последовательностипредварительно перенеся первую букву в конец слова

03.12.2014, 16:42. Показов 2842. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот задача: Дана последовательность, состоящая из 10 слов. Напечатать слова последовательности, предварительно преобразовав каждое из них по следующему правилу: перенести первую букву в конец слова. Помогите, пожалуйста..
В прошлой теме мне написали вот это:
C#
1
string newstr = (str + str[0]).Remove(0,1);
Но я немного не понимаю, что это означает и как это правильно использовать в программе.
P.S. Последовательность здесь - это вроде как предложение. То есть просто какие-то слова, вот и всё.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2014, 16:42
Ответы с готовыми решениями:

Найти и сохранить в строке те слова, которые отличны от первого, предварительно перенеся первую букву в конец слова
Дана строка. Словом текста считается любая последовательность букв латинского алфавита; между соседними словами - не менее одного пробела,...

Перенести первую букву в конец слова
Дана последовательность, состоящая из 10 слов. Напечатать слова последовательности, предварительно преобразовав каждое из них по следующему...

Напечатать все слова, отличные от последнего слова, предварительно перенеся первую букву в конец слова
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее...

13
60 / 17 / 11
Регистрация: 01.11.2014
Сообщений: 100
03.12.2014, 17:46
Конкретно этот код объединяет строку str и первый ее символ (по индексу = [0]), а потом удаляет один символ начиная с перового (Remove(0 - индекс с которого начинать удалять,1 - количество удаляемых символов)). То есть, полученное слово "игнат" программа заменит на "гнати" - для нескольких слов это решение не подходит.

Я так подозреваю, что нужно слова разбить через Split. Сейчас попытаюсь.

Добавлено через 21 минуту
Виктор93, своровал у Rameron, немножко перепилил:
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
class Program
    {
        public static void words(String textFilePath)
        {
            String text = File.ReadAllText(textFilePath);
 
            String[] split = text.Split(' ');//создаем строковый массив, разбив по пробелам извлеченный из файла текст на слова
 
 
            foreach (String s in split)
            {
                Console.WriteLine((s + s[0]).Remove(0, 1));
            }
        }
 
 
    
        static void Main(string[] args)
        {
            words("C:\\Sharp\\auth.cfg");  //путь к файлу со словами  
        }
       
        
    }
0
Си-решеточник
 Аватар для Rameron
141 / 135 / 60
Регистрация: 07.02.2011
Сообщений: 669
03.12.2014, 18:08
Цитата Сообщение от msg_kurt Посмотреть сообщение
своровал у Rameron
Это ужасное преступление, нет тебе прощенья...

А вообще - гениально... Я бы до:
C#
1
(s + s[0]).Remove(0, 1)
не додумался, я бы превращал слово в массив символов, менял первый и последний местами и обратно создавал строку...
0
60 / 17 / 11
Регистрация: 01.11.2014
Сообщений: 100
03.12.2014, 18:13
Rameron,
Цитата Сообщение от Rameron Посмотреть сообщение
Это ужасное преступление, нет тебе прощенья...
Каюсь, но сам еще не умею Я только совместил два чужих варианта
0
0 / 0 / 1
Регистрация: 18.09.2014
Сообщений: 50
03.12.2014, 21:29  [ТС]
А как сделать так, чтобы файл не подгружать, а текст вбить в программу?)
0
60 / 17 / 11
Регистрация: 01.11.2014
Сообщений: 100
03.12.2014, 21:46
Виктор93, элементарно же:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Program
    {
        public static void words(String line)
        {
            String text = Console.ReadLine();
 
            String[] split = text.Split(' ');//создаем строковый массив, разбив по пробелам извлеченный из файла текст на слова
 
 
            foreach (String s in split)
            {
                Console.WriteLine((s + s[0]).Remove(0, 1));
            }
        }
 
 
 
        static void Main(string[] args)
        {
            string x = "";
            words(x);  
            Console.ReadKey();
        }
Добавлено через 7 минут
Виктор93, в коде ясно видно, где конкретно происходит, например, создание массива из слов. в первом варианте мы указывали файл. никто же не мешает подставить вместо него переменную, в которой хранится текст.
0
0 / 0 / 1
Регистрация: 18.09.2014
Сообщений: 50
03.12.2014, 22:13  [ТС]
Вот так слова вставлять?
C#
1
 char[] s = "Маленький Петя бодро читает своей младшей сестре Кате интересную книжку ".ToCharArray();
0
60 / 17 / 11
Регистрация: 01.11.2014
Сообщений: 100
03.12.2014, 22:25
Виктор93, http://msdn.microsoft.com/ru-ru/library/x9h8tsay.aspx
char[] - объявление символьного массива. Метод words работает с массивом но строковым, где каждый элемент - не символ, а слово (в котором он потом производит замену букв)
Теперь вопрос:
Цитата Сообщение от Виктор93 Посмотреть сообщение
Вот так слова вставлять?
А нам надо методу words передать строку со словами, чтоб он ее разбил на массив: одно слово - один элемент массива.
C#
1
String[] split = text.Split(' ');
- здесь происходит создание строкового массива, который получается в следствии разбиения строки text через пробел.

Могу быть кое-где неправ, ибо не волшебник, а только в процессе.
0
0 / 0 / 1
Регистрация: 18.09.2014
Сообщений: 50
10.12.2014, 14:49  [ТС]
Вот задача: Дана последовательность, состоящая из 10 слов. Напечатать слова последовательности, предварительно преобразовав каждое из них по следующему правилу: перенести первую букву в конец слова.
Вот код программы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Console.WriteLine();
            char[] s = "мама мыла казак вообщем любые слова сюда надо вписать так ".ToCharArray();
            int i = 0;
            do
            {
                int l = i;
                string w = "";
                char x = 'f';
                while ((s[i] != ' ') && (i < s.Length))
                {
                    if (i == l) x = s[i];
                    else
                        w = w + s[i];
                    i++;
                }
                w = w + x;
                Console.Write(w + ' ');
                i++;
            }
            while (i < s.Length);
            Console.ReadLine();
Мне нужно написать программу это без использования string. Как убрать string и написать только через циклы и char? Помогите, пожалуйста
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
10.12.2014, 15:21
Запоминаем первый символ. Пока не встретим пробел, передвигаем символы на 1 влево. Встретив пробел, записываем запомненный символ начала слова, запоминаем первый символ следующего, на его место ставим пробел. Продолжаем по той же схеме. Не забываем проверять конец массива.
0
0 / 0 / 1
Регистрация: 18.09.2014
Сообщений: 50
10.12.2014, 15:23  [ТС]
Можешь написать это кодом? Или изменить тот код, который я скинул.
0
0 / 0 / 1
Регистрация: 06.02.2014
Сообщений: 6
10.12.2014, 15:25
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
Console.WriteLine();
            
char[] s = "мама мыла казак вообщем любые слова сюда надо вписать так ".ToCharArray();
            
int i = 0;
 
do
{
    int l = i;
    
    // string w = "";
 
    List<char> buff = new List<char>();
 
    char x = 'f';
                
    while ((s[i] != ' ') && (i < s.Length))
    {
        if (i == l) x = s[i];
        else
            buff.Add(s[i]);
            // w = w + s[i];
 
        i++;
    }
 
    // w = w + x;
    // Console.Write(w + ' ');
 
    buff.Add(x);
 
    Console.Write(buff.ToArray());
    Console.Write(" ");
 
    i++;
}
while (i < s.Length);
        
Console.ReadLine();
Тот же код, только заменил string на List<char>
0
0 / 0 / 1
Регистрация: 18.09.2014
Сообщений: 50
10.12.2014, 15:53  [ТС]
Так еще сложнее выглядит. Можно как-то упростить?
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
10.12.2014, 16:01
Цитата Сообщение от Виктор93 Посмотреть сообщение
Можешь написать это кодом?
Да:
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
using System;
 
namespace Test___CS_Console_App
{
  class Program
  {
    private static void ProcessChars(char[] s)
    {
      char ch = s[0];
 
      for (int q = 1; q < s.Length; ++q)
        if (char.IsLetterOrDigit(s[q]))
          s[q - 1] = s[q];
        else
          for (s[q - 1] = ch; ++q < s.Length && !char.IsLetterOrDigit(ch = s[q]); )
            ;
    }
 
    public static void Main()
    {
      char[] s = "мама мыла казак в общем любые слова сюда надо вписать так 123. Плюс, можно использовать знаки препинания и несколько разделителей!!!".ToCharArray();
      ProcessChars(s);
      Console.WriteLine(new string(s));
      Console.ReadKey();
    }
  }
}
Добавлено через 4 минуты
Исправления на случай, если последний символ в строке не разделитель, либо строка пустая:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    private static void ProcessChars(char[] s)
    {
      if (s.Length == 0)
        return;
 
      char ch = s[0];
 
      for (int q = 1; q < s.Length; ++q)
        if (char.IsLetterOrDigit(s[q]))
          s[q - 1] = s[q];
        else
          for (s[q - 1] = ch; ++q < s.Length && !char.IsLetterOrDigit(ch = s[q]); )
            ;
 
      if (char.IsLetterOrDigit(s[s.Length - 1]))
        s[s.Length - 1] = ch;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2014, 16:01
Помогаю со студенческими работами здесь

Напечатать все слова, перенеся первую букву каждого слова в конец слова
приветствую вас))) помогите пожалуйста даме... Текст задан строкой var St: string; Напечатать все слова, перенеся первую букву...

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

Напечатать все слова текста, предварительно перенеся первую букву в конец слова
Напечатать все слова, предварительно перенести первую букву слова в конец слова; #include &lt;stdlib.h&gt;; #include...

Напечатать все слова, отличные от последнего слова, преобразовав по правилу: перенести первую букву в конец слова
Помогите пожалуста решыть: 10.18. Программа. Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10...

Напечатать все слова, предварительно перенести первую букву слова в конец слова
Напечатать все слова, предварительно перенести первую букву слова в конец слова


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере 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. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru