Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 17.05.2013
Сообщений: 688
.NET 4.x

конец ввода символ !

03.09.2013, 10:47. Показов 5091. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро, может вы подскажите как можно сделать это.
Вот задачка.
"Пользователь вводит текст, конец ввода символ !, после этого надо перевернуть то что он ввел,"
У меня два вопроса возникла
1) Как сделать , конец ввода символ ! , думаю в while
2) Лучшие обьявить string или char, если объявлять char , то нужно как-то размер указать
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.09.2013, 10:47
Ответы с готовыми решениями:

Конец ввода
Доброе время суток. Как закончить ввод элементов массива нажатием клавиши пробел?

(Исправление/добавление) текста в textBox. Курсор ввода уходит в конец текста
Добрый день! Написал текст в textBox, хочу исправить один или два символа в середине текста или добавить слово, устанавливаю курсор и...

Ввести определенный символ, обозначающий конец ввода
В общем мне нужно после нажатия на определённый символ допустим это "h" срабатывало действия, и что бы если нажимается другой символ...

9
 Аватар для n1l
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
03.09.2013, 12:37
Структуры данных использовать нужно, молодой человек.
В данном случае стек подходит идеально.

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
    {
        static void Main(string[] args)
        {
            Stack<char> st = new Stack<char>();
 
            char input;
 
            do
            {
                input = Console.ReadKey().KeyChar;
                st.Push(input);
            } while (input!='!');
 
 
            Console.WriteLine();
 
            foreach (var item in st)
            {
                Console.Write(item);
            }
        }
    }
Если восклицательный знак не нужен, это можно исправить.
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
03.09.2013, 18:27
n1l, если сначала преобразовать к строке, то прога отработает быстрее (да и будет "чище"). Насчет быстроты - может это и сверхмикрооптимизация, но когда я делал экран наподобие "матрицы" так как часто обновлялось содержимое консольного экрана приходилось даже с такими мелочами возиться, как то, быстрее распечатать строку по символам или сначала собрать все символы в строку, а потом распечатать? Строка - быстрее. И её потом можно использовать. Так что так:
C#
1
2
string result = new string(st.ToArray());
Console.WriteLine(result);
0
 Аватар для n1l
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
03.09.2013, 18:41
Ну вывод результата, наверное да.
Хотя я не уверен. У вас два преобразования объекта. Tо есть три прохода по всему стеку.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
03.09.2013, 18:44
n1l,
Тут ее не распечатать надо, а перевернуть.
вот-вот...

а вывод будет одинаковый же.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
03.09.2013, 19:09
n1l,
Хотя я не уверен. У вас два преобразования объекта. Tо есть три прохода по всему стеку.
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
 
namespace ConsoleApplication137
{
    class Program
    {
        static void Main()
        {
            Stack<char> st = new Stack<char>();
 
            char input;
 
            do
            {
                input = Console.ReadKey().KeyChar;
                st.Push(input);
            } while (input != '!');
 
 
            DoBench(st);
 
            Console.ReadKey();
        }
 
        private static void DoBench(Stack<char> st)
        {
            Process.GetCurrentProcess().ProcessorAffinity = new IntPtr(1);
            Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High;
            Thread.CurrentThread.Priority = ThreadPriority.Highest;
 
            Action<Stack<char>> action1 = stack =>
                                          {
                                              foreach (var item in stack)
                                              {
                                                  Console.Write(item);
                                              }
                                          };
            Action<Stack<char>> action2 = stack =>
                                          {
                                              string result = new string(stack.ToArray());
                                              Console.WriteLine(result);
                                          };
 
            List<TimeSpan> list1 = new List<TimeSpan>(), list2 = new List<TimeSpan>();
            for (int i = 0; i < 100; i++)
            {
                list1.Add(Test(action1, st));
                list2.Add(Test(action2, st));
            }
 
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine();
            }
            Console.WriteLine("Среднее для первого: {0}", list1.Average(span => span.Ticks));
            Console.WriteLine("Среднее для второго: {0}", list2.Average(span => span.Ticks));
        }
 
        private static TimeSpan Test(Action<Stack<char>> action1, Stack<char> st)
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            var sw = new Stopwatch();
            sw.Start();
            action1(st);
            sw.Stop();
            return sw.Elapsed;
        }
    }
}
1
 Аватар для n1l
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
03.09.2013, 19:09
Видимо console.write действительно медленный.
Ок, верю, ваша поправка улучшает код.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
03.09.2013, 19:10
n1l, да, в исправленном примере разница больше чем в 20 раз. А в первоначальном варианте косяк, криво считалось и не то что нужно
0
 Аватар для n1l
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
03.09.2013, 19:12
А все вижу. Да. Разница заметна с увеличением символов.
0
2 / 2 / 1
Регистрация: 17.05.2013
Сообщений: 688
04.09.2013, 11:05  [ТС]
Цитата Сообщение от n1l Посмотреть сообщение
Структуры данных использовать нужно, молодой человек.
В данном случае стек подходит идеально.

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
    {
        static void Main(string[] args)
        {
            Stack<char> st = new Stack<char>();
 
            char input;
 
            do
            {
                input = Console.ReadKey().KeyChar;
                st.Push(input);
            } while (input!='!');
 
 
            Console.WriteLine();
 
            foreach (var item in st)
            {
                Console.Write(item);
            }
        }
    }
Если восклицательный знак не нужен, это можно исправить.
Я бы не додумался так , спасибо вам
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2013, 11:05
Помогаю со студенческими работами здесь

Считывать данные пока не встретится символ '|' обозначающий конец ввода
Нужно считать данные пока не встретится символ '|' обозначающий конец ввода. double val; while(cin &gt;&gt; val) vec.push_back(val) ...

Строка: Как удалить начальный символ в строке и добавить тот же символ (который удалили) в конец строки?
Как удалить начальный символ в строке и добавить тот же символ (который удалили) в конец строки? Т.е есть строка 1234567890 из нее...

Считать последний символ файла. Записать символ в конец файла
Есть файл. Нужно сначала дописать в его конец один символ, а затем его считать. Как это сделать? Подскажите!

Конец ввода
Всем привет =) Делал очередное задание из учебника Страуструпа, но никак не могу заставить прогу работать) Прога-первое приближение...

Конец ввода F1
Нужно найти Максимальное слово в тексте и вывести его на экран, конец ввода текста F1. немогу понять, у меня не выходит привязать конец...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru