Модераторы: Alx, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> алгоритм для функции 
:(
    Опции темы
zoom27
Дата 27.6.2010, 20:40 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Друзья,нужна помощь в решении нижеприведенной задачки.Заранее спасибо!

оператор % возвращает остаток от деления т.е. 7%3=1, и 19%20=19
Функция Алгоритм(А)
П=2
В=1
Ит=0
Пока В>0 цикл
М=А%П;
А=(А-М)/П;
Ит=Ит+И*B;
Если А=0, тогда 
В=0;
иначе 
В=В*10;
Конец Если;
Конец Цикла;
Возврат (Ит);
Конец функции

Чему равна переменная Выход=Алгоритм(9)
Что делает приведенная функция?
Какую роль выполняет П?
Что произойдет, если установить ее равной 3,4,9 ?



PM MAIL   Вверх
oleg_in62
Дата 13.8.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вобщем, может ответ и запоздалый но, все же, эта функция выполняет преобразование из десятичной системы исчисления в любую другую с основой П(но не ту в которой есть буквы, как например шестнадцатиричная).
а теперь ответы попорядку
1) Выход=Алгоритм(9) = 1001 то есть 9 в двоичной системе исчисления
2) функция выполняет преобразование из десятичной системы исчисления в любую другую с основой П(но не ту в которой есть буквы, как например шестнадцатиричная).
3) П это основание системы исчисления
4) если П установить равной 3 то аргумент А передаваемый в функцию будет преобразован в А только в троичной системе исчисления и т.д.

НО!!!! в этой функции есть баг, эсли Аргумент, передаваемый в функцию, является квадратом основания(А*А=П) то функция работает не коректно, возвращаемое число будет равно 100!

пример кода на С#
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        public int func(int a)
        {
            int p = 2;
            int b = 1;
            int It = 0;
            int m;
            while (b > 0)
            {
                m = a % p;
                a = (a - m) / p;
                It = It + m * b;
                //Console.WriteLine("{0}, {1}, {2}",a,p,m);
                if (a == 0)
                {
                    b = 0;
                }
                else
                {
                    b = b * 10;
                }

            }
            return It;
        }
        static void Main(string[] args)
        {
            int param = 9;
            Program pr=new Program();
            Console.WriteLine(pr.func(param));
        }
    }
}
 
PM MAIL   Вверх
topwellwrite
Дата 21.12.2020, 05:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




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


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

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