Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
Ambeon
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 6
#1

Определить функцию, переводящую число в двоичную систему счисления... - C++

27.01.2011, 22:08. Просмотров 2314. Ответов 11
Метки нет (Все метки)

Помогите пожалуйста с решением задач, если конечно не трудно))

1. Решить с помощью вложенного цикла.
Найти все натуральные числа, в диапазоне между m и n (m<n), десятичная запись которых есть строго возрастающая последовательность цифр. Подсчитать количество таких чисел.

2. Определение и вызов функций.
Определить функцию, переводящую число в двоичную систему счисления и проверяющую, является ли двоичная запись числа симметричной последовательностью нулей и единиц, начинающейся еденицей. Напечатать все числа, не превосходящие n, двоичная запись которых есть симметричная последовательность.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2011, 22:08     Определить функцию, переводящую число в двоичную систему счисления...
Посмотрите здесь:

C++ Перевести произвольное десятичное число типа char в двоичную систему счисления
Программа перевода в двоичную систему счисления C++
Перевод чисел в двоичную систему счисления C++
C++ Перевод в двоичную систему счисления
Написать и протестировать функцию, переводящую число из десятичной системы в двоичную, четверичную и восьмеричную C++
Перевести число в двоичную систему счисления C++
Написать функцию, которая переводит число в другую систему счисления C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
28.01.2011, 02:25     Определить функцию, переводящую число в двоичную систему счисления... #2
1)

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
#include <iostream>
 
int main()
{
    int c=0;    
    int cnt=0; 
    int i=0;
    int arr[2];
    int mas[10] = {123, 532, 222, 113, 6788, 12212, 543, 790, 110, 147};
    //4
    
    for(int n=0; n<10; n++)
    {       
        i=0;
        while(mas[n]!=0 && i<2)
        {
            c=mas[n]%10;                    
            mas[n]/=10;     
            arr[i] = c;
            i++;
        }
        if(arr[0] > arr[1]) cnt++;  
    }
    std::cout << cnt <<"\n";
 
    return EXIT_SUCCESS;
}
Добавлено через 16 минут
Правда тут я не указал диапазон, но думаю, ты сам справишься!
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
28.01.2011, 21:35     Определить функцию, переводящую число в двоичную систему счисления... #3
2.
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
#include <cstring>
#include <cstdio>
#include <cstddef>
 
bool IsBinarySymmetrical(const int number) {
  size_t buffer_size = sizeof(int) * 8;
  char binary_buffer[buffer_size];
 
  size_t bit_counter = 0;
  do {
    binary_buffer[bit_counter] = ((number >> bit_counter) & 1) + '0';
  }  while ((number >> (++bit_counter)) != 0);
 
  if (binary_buffer[bit_counter - 1] == '0')
    return false;
 
  for (size_t i = 0; i < bit_counter / 2; ++i)
    if (binary_buffer[i] != binary_buffer[bit_counter - i - 1])
      return false;
  return true;
}
 
int main(int argc, char *argv[]) {
  int first = 0;
  int last  = 1000;
 
  for (int a_number = first; a_number <= last; ++a_number)
    if (IsBinarySymmetrical(a_number))
      printf("%d\n", a_number);
 
  return 0;
}
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
29.01.2011, 00:30     Определить функцию, переводящую число в двоичную систему счисления... #4
grrrrr, что за магические цифры?
1)
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int count_of_numbers(int source)
{
    int p=source/10, k=1;
    while (p!=0)
    {
        p/=10;
        k++;
    }
    return k;
}
 
int number_in_current_position(int source, int position)
{
    int n=count_of_numbers(source), p=source;
    if (position<=0 || position>n) return -1;
    while (count_of_numbers(p)!=position)
    {
        p/=10;
    }
    return p%10;
}
 
bool check_for_increase(int source)
{
    int n=count_of_numbers(source);
    int x=number_in_current_position(source,1),y;
    for (int i=2; i<=n; i++)
    {       
        y=x;
        x=number_in_current_position(source,i);
        if (x<=y) return false;
    }
    return true;
}
 
void main()
{
    int n, m;
    cout<<"Input n and m: ";
    cin>>n>>m;
    int k=0;
    for (int i=n; i<m; i++)
    {
        if (check_for_increase(i)) k++;
    }
    cout<<"Result - "<<k<<" numbers in required sequence";
    _getch();
}
asics
Freelance
Эксперт C++
2842 / 1779 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
29.01.2011, 00:46     Определить функцию, переводящую число в двоичную систему счисления... #5
Цитата Сообщение от Ambeon Посмотреть сообщение
Найти все натуральные числа, в диапазоне между m и n (m<n), десятичная запись которых есть строго возрастающая последовательность цифр. Подсчитать количество таких чисел.
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
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
#include <iterator>
 
bool chek(int n)
{
    std::ostringstream ost;
    ost << n;
    std::string n_ = ost.str(), n__ = n_;
 
    std::string::iterator it = std::unique(n__.begin(), n__.end());
    n__.resize(it - n__.begin());
    std::sort(n__.begin(), n__.end());
 
    return n_ == n__;
}
 
size_t cnt_dig(int n)
{
    int cnt = 0;
    for( ; n; n /= 10, ++cnt)
                   ;
    return cnt;
}
 
int main()
{
    int m = 0, n = 0, cnt = 0;
 
    std::cout << "\n\nEnter m -> ";
    std::cin >> m;
 
    std::cout << "\n\nEnter n -> ";
    std::cin >> n;
 
    for(int num = m + 1; num < n; ++num)
        if(chek(num) && cnt_dig(num) >= 2)
        {
            std::cout << num << ' ';
            ++cnt;
        }
    std::cout << "\n\nCount num  -> " << cnt << std::endl;
 
    return 0;
}
LilDire
21 / 20 / 1
Регистрация: 12.11.2010
Сообщений: 37
01.06.2011, 15:15     Определить функцию, переводящую число в двоичную систему счисления... #6
Блин, чет я не понял. Как именно во второй задаче определить, является ли двоичная запись числа симметричной последовательностью нулей и единиц? Кто нить знает алгоритм?
Kastaneda
Форумчанин
Эксперт С++
4263 / 2795 / 219
Регистрация: 12.12.2009
Сообщений: 7,122
Записей в блоге: 1
Завершенные тесты: 1
01.06.2011, 16:06     Определить функцию, переводящую число в двоичную систему счисления... #7
Цитата Сообщение от LilDire Посмотреть сообщение
является ли двоичная запись числа симметричной последовательностью нулей и единиц?
"симметричны" - можно понять двояко, вот один из вариантов.
C++
1
2
3
bool symmetry(int n){
      return !(((n&0xFFFF0000)>>16)^(n&0xFFFF));
}
если подразумевается зеркальная симметрия, то этот код не подходит.
Evg
Эксперт CАвтор FAQ
17313 / 5561 / 347
Регистрация: 30.03.2009
Сообщений: 15,127
Записей в блоге: 26
01.06.2011, 16:08     Определить функцию, переводящую число в двоичную систему счисления... #8
Цитата Сообщение от Kastaneda Посмотреть сообщение
"симметричны" - можно понять двояко, вот один из вариантов
"Симметрично" относится к записи числа, а потому там всё однозначно
Kastaneda
Форумчанин
Эксперт С++
4263 / 2795 / 219
Регистрация: 12.12.2009
Сообщений: 7,122
Записей в блоге: 1
Завершенные тесты: 1
01.06.2011, 16:23     Определить функцию, переводящую число в двоичную систему счисления... #9

Не по теме:

Что-то я сегодня математики перечитал...


Имеем число (в бинарном виде) 1100 1100 - симметрично?
А так 1100 0011 - зеркальное отражение является симметрией?
Evg
Эксперт CАвтор FAQ
17313 / 5561 / 347
Регистрация: 30.03.2009
Сообщений: 15,127
Записей в блоге: 26
01.06.2011, 16:34     Определить функцию, переводящую число в двоичную систему счисления... #10
Цитата Сообщение от Kastaneda Посмотреть сообщение
Имеем число (в бинарном виде) 1100 1100 - симметрично?
Ещё раз. Речь идёт о записи числа. Да и с какого перепугу "1100 1100" симметрично и откуда вообще взялся пробел в записи числа? И почему не "110 01 100"?
Kastaneda
Форумчанин
Эксперт С++
4263 / 2795 / 219
Регистрация: 12.12.2009
Сообщений: 7,122
Записей в блоге: 1
Завершенные тесты: 1
01.06.2011, 16:51     Определить функцию, переводящую число в двоичную систему счисления... #11
Цитата Сообщение от Evg Посмотреть сообщение
откуда вообще взялся пробел в записи числа
Это я для лучшей читаемости сделал.

Цитата Сообщение от Evg Посмотреть сообщение
Да и с какого перепугу "1100 1100" симметрично
Да, гоню я ... Мозг устал сегодня.

Не по теме:

Как блондинка : выучил таблицу умножения - забыл как сфетофором пользоваться

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2011, 20:28     Определить функцию, переводящую число в двоичную систему счисления...
Еще ссылки по теме:

C++ Перевести в двоичную систему счисления произвольное шестнадцатеричное число
C++ Перевести с десятичной в двоичную систему счисления
Перевод из десятичной в двоичную систему счисления C++
C++ Перевод из восьмеричной в двоичную систему счисления
C++ Функция: заданное натуральное число А перевести в двоичную систему счисления

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17313 / 5561 / 347
Регистрация: 30.03.2009
Сообщений: 15,127
Записей в блоге: 26
01.06.2011, 20:28     Определить функцию, переводящую число в двоичную систему счисления... #12
Цитата Сообщение от Kastaneda Посмотреть сообщение
Мозг устал сегодня
Вот и я про что
Yandex
Объявления
01.06.2011, 20:28     Определить функцию, переводящую число в двоичную систему счисления...
Ответ Создать тему
Опции темы

Текущее время: 19:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru