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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2011, 14:22   #1
Sna1L
Форумчанин
 
Аватар для Sna1L
 
Регистрация: 15.03.2011
Сообщений: 272
По умолчанию C# switch

Код:
            public int StrToInt(string s)
            {

                int i, result = 0;
                for (i = 0; i < s.Length; i++)
                {
                    switch (s[i])
                    {
                        case '0': result *= 10;
                            break;
                        case '1': result += st(10, s.Length - 1 - i);
                            break;
                        case '2': result += 2 * st(10, s.Length - 1 - i);
                            break;
                        case '3': result += 3 * st(10, s.Length - 1 - i);
                            break;
                        case '4': result += 4 * st(10, s.Length - 1 - i);
                            break;
                        case '5': result += 5 * st(10, s.Length - 1 - i);
                            break;
                        case '6': result += 6 * st(10, s.Length - 1 - i);
                            break;
                        case '7': result += 7 * st(10, s.Length - 1 - i);
                            break;
                        case '8': result += 8 * st(10, s.Length - 1 - i);
                            break;
                        case '9': result += 9 * st(10, s.Length - 1 - i);
                            break;
                        default: return result;
                            break;
                    }

                }
            return result;
            }
Console.WriteLine(StrToInt("1ф2"))
выводит 100. Обьясните в чем проблема, пожалуйста. По задумке если цикл натыкается на букву, то функция должна прерваться и отправить результат.
ЗЫ st(int x,int y) - возведение x в степень y, но это не важно

Последний раз редактировалось Sna1L; 07.07.2011 в 14:26.
Sna1L вне форума Ответить с цитированием
Старый 07.07.2011, 14:49   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

А по вашему она что должна вернуть? Программа делает то, что вы ей сказали. На первой итерации в result записывается 100 (10 во второй степени), а на второй она натыкается на букву и возвращает результат
netrino вне форума Ответить с цитированием
Старый 07.07.2011, 15:00   #3
Sna1L
Форумчанин
 
Аватар для Sna1L
 
Регистрация: 15.03.2011
Сообщений: 272
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
А по вашему она что должна вернуть? Программа делает то, что вы ей сказали. На первой итерации в result записывается 100 (10 во второй степени), а на второй она натыкается на букву и возвращает результат
А, понял ошибку, спасибо.
Sna1L вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Switch Sonny01 Помощь студентам 2 12.11.2010 22:38
switch G. J. Cezar Общие вопросы C/C++ 2 16.10.2010 14:06
switch ололошенько Общие вопросы C/C++ 24 30.09.2010 16:52
switch Dimarik Общие вопросы C/C++ 4 11.04.2010 15:56
Switch Division Общие вопросы C/C++ 3 11.01.2009 23:52