Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чётность числа 
:(
    Опции темы
STRELOKBMSTU
Дата 14.8.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 11.8.2007
Где: Russia.MR.Moscow( );

Репутация: нет
Всего: нет



В строке char записано число в n-ричной системе счисления (n задано, 2 <= n < 36, т.е. цифры заданного числа являются элементами множества [0-9a-z]). 
Задача: определить чётность числа (в виде функции оформить).
 

У кого-нибудь есть какие-нибудь мысли по этому поводу? 


Это сообщение отредактировал(а) STRELOKBMSTU - 14.8.2007, 15:43
PM MAIL ICQ Skype   Вверх
Retro
Дата 14.8.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Диалектик
***


Профиль
Группа: Участник Клуба
Сообщений: 1934
Регистрация: 28.6.2005
Где: Киев

Репутация: 9
Всего: 117



Цитата(STRELOKBMSTU @  14.8.2007,  14:42 Найти цитируемый пост)
У кого-нибудь есть какие-нибудь мысли по этому поводу? 

У меня в голове родилось множество мыслей... smile 

Цитата(STRELOKBMSTU @  14.8.2007,  14:42 Найти цитируемый пост)
В строке char

 smile 
PM MAIL   Вверх
ivashkanet
Дата 14.8.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



STRELOKBMSTU, самый простой способ --- это превести в 10-ое число (или еще лучше в двоичное), а там легко smile

PM MAIL WWW ICQ   Вверх
HalkaR
Дата 14.8.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 14
Всего: 42



Перевести в двоичную систему, проверить последний бит.
PM MAIL   Вверх
STRELOKBMSTU
Дата 14.8.2007, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 11.8.2007
Где: Russia.MR.Moscow( );

Репутация: нет
Всего: нет



ivashkanet, я это понимаю, но алгоритмов перевода не знаю( Переводы из стандартных систем счисления я еще знаю, а например какой-нибудь 17-ричной - ХЗ!
PM MAIL ICQ Skype   Вверх
Retro
Дата 14.8.2007, 16:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Диалектик
***


Профиль
Группа: Участник Клуба
Сообщений: 1934
Регистрация: 28.6.2005
Где: Киев

Репутация: 9
Всего: 117



Вот пример кода - Код
ПОНЯТИЕ СИСТЕМЫ СЧИСЛЕНИЯ.ПЕРЕВОД ЧИСЕЛ ИЗ ОДНОЙ СИСТЕМЫ В ДРУГУЮ.

Это сообщение отредактировал(а) Retro - 14.8.2007, 16:10
PM MAIL   Вверх
ivashkanet
Дата 14.8.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(STRELOKBMSTU @  14.8.2007,  15:54 Найти цитируемый пост)
Переводы из стандартных систем счисления я еще знаю, а например какой-нибудь 17-ричной

А что значит стандартных? И чем тебе 17 не стандартная  smile 
PM MAIL WWW ICQ   Вверх
Exception
Дата 14.8.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Код
public static bool IsEven (string number, int  baseNumber)
{
    string alphabet = "0123456789abcdefghijklmnopqrstuvwxyz";
    bool isBaseNumberOdd =  ((baseNumber % 2) != 0); 
    char lastDigit = number [number.Length - 1];
    bool result = ((alphabet.IndexOf (lastDigit) % 2) == 0);
    if (isBaseNumberOdd && number.Length > 1)
        result = (!result);
    return result;
}


Это сообщение отредактировал(а) Exception - 14.8.2007, 17:04
PM   Вверх
ivashkanet
Дата 14.8.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Ааа, стандартные это 2, 8, 10, 16? Ясно.
Но принцип перевода из любой n-ричной системы в 10-ую один и тот же.

Есть число 
Код
A = ak...a7a6a5a4a3a2a1a0 в n-ричной
 системе счисление, тогда в десятичной будет 
Код
A = ak*n^k + ...+ a7*n^7 + a6*n^6 + a5*n^5 + a4*n^4 + a3*n^3 + a2*n^2 + a1*n^1 + a0*n^0 

А потом все умножаем и складываем в 10-й системе и получаем 10-е число
PM MAIL WWW ICQ   Вверх
STRELOKBMSTU
Дата 14.8.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 11.8.2007
Где: Russia.MR.Moscow( );

Репутация: нет
Всего: нет



Информации более чем достаточно! Проблемы сняты!) smile 
PM MAIL ICQ Skype   Вверх
Exception
Дата 14.8.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Кстати, код я писал прямо в браузере мобильного телефона, так что неплохо бы проверить:
Код
Assert.AreEqual (true, IsEven ("92", 10));
Assert.AreEqual (false, IsEven ("91", 10));
Assert.AreEqual (true, IsEven ("2", 3));
Assert.AreEqual (false, IsEven ("10", 3));
Assert.AreEqual (true, IsEven ("11", 3));


Добавлено через 3 минуты
И ещё кое-что: мой код не будет работать корректно, если подавать ему числа с нулём впереди (вроде "011", "03").
PM   Вверх
ivashkanet
Дата 14.8.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Exception, что-то мне не нравится твой алгоритм.
Например 212_3 = 10111_2  -- нечетное, хотя твой алгоритм даст четность 

Для нечетного основания можно предложить найти количество нечетных цифр, если оно четное, то чисто четное, нет --- так нет.
PM MAIL WWW ICQ   Вверх
Exception
Дата 14.8.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Я поправил код, теперь должно работать.
PM   Вверх
ivashkanet
Дата 14.8.2007, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



 112_3 --- четное.
Exception, не все так просто. 
Для нечетного основания каждая цифра влияет на четность! Так как четность числа a * (2n+1)^k зависит только от a!
PM MAIL WWW ICQ   Вверх
STRELOKBMSTU
Дата 14.8.2007, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 11.8.2007
Где: Russia.MR.Moscow( );

Репутация: нет
Всего: нет



Код

using System;

class ev

{

    static int is_ev(string number, int n)
    {
        int i,k;
        byte d,s;
        char j;
        char[] sn = new char[36];

        s = 0;

        j = '0';

        for (i = 0; i < 10; i++, j++)
            sn[i] = j;

        j = 'a';

        for (i = 10; i < 36; i++, j++)
            sn[i] = j;          
      
    for (i = 0; i < number.Length; i++)
        {
            for (k = 0; k < 36; k++)
                if (number[i] == sn[k])
                {
                    d = (byte)number.IndexOf(sn[k]);
                    s += (byte)(d * Math.Pow(n, number.Length - i));
                }
            return s;
        
    }

    public static void Main()
    {
        is_even("10", 3);

    }


}


Пишет такую вещь: not all code paths return a value

Где я туплю?

Это сообщение отредактировал(а) STRELOKBMSTU - 14.8.2007, 19:15
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.3234 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.