Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2013, 09:04   #1
world12_tk
Форумчанин
 
Регистрация: 24.02.2009
Сообщений: 269
По умолчанию c# обход строки снизу вверх

Здравствуйте уважаемые форумчанины.
Возникла следующая проблема
Есть строка: "16666"
Каждый символ, кроме первого, может меняться от 6 до 0.

Мне нужно произвести обратный отсчет строки.
Т.е.
16666
16665
.......
16660
16656
.......
16650
.......
16566
........
10000

Не могли бы, вы подсказать, как это сделать?
Заранее спасибо....
world12_tk вне форума Ответить с цитированием
Старый 29.10.2013, 09:18   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

что в данной задаче меняется (вводится)?
длина строки?
Или в строке могут быть значения отличные от 6 (кроме 1-й позиции, конечно) (например, строка "156332662" может быть задана)?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.10.2013, 09:19   #3
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Держи решение в лоб:

Код:
class Program
    {
        static void Main(string[] args)
        {
            string str = "16666";

            while (Int32.Parse(str) >= 10000)
            {
                Console.WriteLine(str);
                str = (Int32.Parse(str) - 1).ToString();
            }

            Console.ReadKey();
        }
    }
А вообще, если уж изменять именно строку, то рекомендую курить StringBuilder
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 29.10.2013, 09:26   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

MooNDeaR, не проверял, но, предполагаю, что в вашем коде,
после строки 16660 будет идти (ошибочно) строка 16659
обратите внимание, что у TC в этом случае должна быть строка 16656


p.s. можно доработать код - основу оставить вашу, только дополнить кодом, который разбирает число на отдельные цифры и все цифры больше 6 заменяет на 6...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.10.2013, 10:41   #5
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
MooNDeaR, не проверял, но, предполагаю, что в вашем коде,
после строки 16660 будет идти (ошибочно) строка 16659
обратите внимание, что у TC в этом случае должна быть строка 16656


p.s. можно доработать код - основу оставить вашу, только дополнить кодом, который разбирает число на отдельные цифры и все цифры больше 6 заменяет на 6...
Точно. Ну раз уж говнокодить, то по полной:
Код:
static void Main(string[] args)
        {
            string str = "16666";

            while (Int32.Parse(str) >= 10000)
            {
                Console.WriteLine(str);
                str = (Int32.Parse(str) - 1).ToString().Replace('9', '6').Replace('8', '6').Replace('7', '6');
            }

            Console.ReadKey();
        }
Но чего уж мелочиться-то? Давайте сделаем более масштабируемое решение!
Код:
static void Main(string[] args)
        {
            string  str = "16666";
            char    top = '6';
            int     end = 10000;


            while (Int32.Parse(str) >= end)
            {
                Console.WriteLine(str);
                str = (Int32.Parse(str) - 1).ToString();

                for (char c = top; c <= '9'; ++c)
                {
                    str = str.Replace(c, top);
                }
            }

            Console.ReadKey();
        }
А ведь можно еще и исключения ловить :D
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.

Последний раз редактировалось MooNDeaR; 29.10.2013 в 16:07.
MooNDeaR вне форума Ответить с цитированием
Старый 29.10.2013, 11:34   #6
world12_tk
Форумчанин
 
Регистрация: 24.02.2009
Сообщений: 269
По умолчанию

Спасибо большое....)))
world12_tk вне форума Ответить с цитированием
Старый 31.10.2013, 05:14   #7
world12_tk
Форумчанин
 
Регистрация: 24.02.2009
Сообщений: 269
По умолчанию

Извините меня, я немного не правильно понял задание. Есть еще одно условие
Если предпоследняя цифра 0, то последняя цифра тоже ноль.
Вот что должно получится
16666
........
11112
11111
11110
11100
11000
10000
Я пробовал переделать ваш алгоритм, но у меня ничего не получилось (((.....
Не могли бы вы мне подсказать?
Заранее спасибо.
world12_tk вне форума Ответить с цитированием
Старый 31.10.2013, 11:40   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ничего не понимаю..

вот Вы привели пример.
16665
.......
16660
это понятно.
следующие числа (штук семь для наглядности) какие должны быть?!

166??
....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.10.2013, 12:50   #9
world12_tk
Форумчанин
 
Регистрация: 24.02.2009
Сообщений: 269
По умолчанию

Следующие значения будут такими:
16656
16655
16654
16653
16652
16651
16650
16646
........
16611
16610
16600
16566
16565
........
world12_tk вне форума Ответить с цитированием
Старый 31.10.2013, 13:05   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Это что-то вроде 7-ричной СС?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В JTextPane поменять стиль отображения (снизу вверх) SsIDit Общие вопросы по Java, Java SE, Kotlin 3 03.10.2013 21:52
Создать графическое окно и вывести в заданной последовательности снизу вверх треугольники Rikki-Tikki-Tavi Паскаль, Turbo Pascal, PascalABC.NET 0 29.01.2013 22:09
Бегущая строка снизу вверх в RichEdit furstenberg Компоненты Delphi 1 29.03.2011 10:32
Как вывести результаты в 2 колонки снизу вверх? SimpleDe Общие вопросы C/C++ 0 17.11.2010 12:43
Функция Pos, поиск снизу вверх RIO Общие вопросы Delphi 4 11.01.2010 23:17