Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Кристина 1998
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 147
#1

Ввести целое число N, вывести его в 3-ичной системе счисления

14.09.2016, 21:21. Просмотров 1030. Ответов 17
Метки нет (Все метки)

Ввести целое число N, вывести его в 3-ичной системе счисления.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2016, 21:21
Ответы с готовыми решениями:

Ввести целое число N, вывести его в 8-ричной системе счисления
Будьте добры, напишите программу "Ввести целое число N, вывести его в 8-ричной...

Дано целое число X в десятичной системе счисления. Выведите запись числа X в восьмеричной системе счисления
Почему настоящие программисты путают католическое Рождестово и Halloween? ...

Введите целое число в двоичной системе счисления и выведите его десятичный эквивалент
Введите целое число в двоичной системе счисления и выведите его десятичный...

Целое положительное число m записывается в 16-ой системе счисления и разряды в этой записи переставляются в обратном порядке.
#include <stdio.h> #include <stdlib.h> #include <string.h> main() { int...

Определить, является ли введенная строка символов изображением числа в К-ичной системе счисления
"Доверяй, но проверяй" (известная русская поговорка). Дано некоторое число 1 <...

17
Байт
Эксперт C
17931 / 11923 / 2477
Регистрация: 24.12.2010
Сообщений: 24,006
14.09.2016, 22:15 #2
Кристина 1998, Можно поинтересоваться, в чем именно проблема?
Ввести число можете?
Знаете как переводится в другую систему на бумажке?
Если знаете, то не знаете, как это записать на языке Си?
Можете набросать хотя бы скелет программы?
Допустимо ли использование рекурсии?
0
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
14.09.2016, 22:15 #3
как-то так
C
1
2
3
4
5
6
7
int n;
char *p,s[20]="";
 
printf("n: ");
scanf("%d",&n);
for(p=s+19; n; n/=3) *--p='0'+n%3;
printf("%s\n",p);
0
Кристина 1998
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 147
14.09.2016, 22:35  [ТС] #4
Проблема в том, что я понимаю , как на бумажке это записать.
Но я не понимаю , как написать программу...
0
easybudda
Модератор
Эксперт CЭксперт С++
10051 / 5971 / 1491
Регистрация: 25.07.2009
Сообщений: 11,302
14.09.2016, 23:22 #5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
void base3(unsigned n) {
    if ( n > 2 )
        base3(n / 3);
    printf("%d", n % 3);
}
 
int main(void) {
    unsigned n;
    
    while ( printf("\nN = ") && scanf("%u", &n) == 1 )
        base3(n);
    
    return 0;
}
2
Байт
Эксперт C
17931 / 11923 / 2477
Регистрация: 24.12.2010
Сообщений: 24,006
14.09.2016, 23:26 #6
Один из способов такой
C
1
2
3
int res3, p;
for(res3=0, p=1; N; N/=3, p*=10)
  res3 += p*(N%3);
К сожалению, этот способ подходит только для оснований <=10
Естественный универсальный способ (как на бумажке) дает цифры в обратном порядке, и их надо переставлять (реверсировать). Но использование рекурсии дает сразу нужный порядок цифр.

Добавлено через 3 минуты
Что и продемонстрировал уважаемый easybudda,
1
Кристина 1998
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 147
15.09.2016, 19:37  [ТС] #7
Спасибо огромное!

Добавлено через 2 минуты
А что означает void base3?
0
Соляристик
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 29
15.09.2016, 19:45 #8
Цитата Сообщение от Кристина 1998 Посмотреть сообщение
А что означает void base3?
Функция с именем "base3" и имеющая тип возвращаемого значения "void".
0
Кристина 1998
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 147
15.09.2016, 19:46  [ТС] #9
unsigned и можно использовать char?
0
Соляристик
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 29
15.09.2016, 21:14 #10
Цитата Сообщение от Кристина 1998 Посмотреть сообщение
unsigned и можно использовать char?
unsigned - значит беззнаковый тип. Используется для хранения неотрицательных целочисленных значений, например unsigned short, unsigned int и пр.

char используется для хранения символов.
0
Байт
Эксперт C
17931 / 11923 / 2477
Регистрация: 24.12.2010
Сообщений: 24,006
16.09.2016, 10:32 #11
Цитата Сообщение от Соляристик Посмотреть сообщение
char используется для хранения символов.
unsigned char можно использовать для хранения небольших неотрицательных чисел. От 0 до 255.
Также как signed char использовать для хранения небольших целых чисел
0
Кристина 1998
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 147
17.09.2016, 22:29  [ТС] #12
Цитата Сообщение от easybudda Посмотреть сообщение
1
скажите, пожалуйста, а как мне вывести программу через цикл с while?
0
Байт
Эксперт C
17931 / 11923 / 2477
Регистрация: 24.12.2010
Сообщений: 24,006
17.09.2016, 22:35 #13
C
1
2
3
4
5
int res3=0, p=1;
while( N) {
  res3 += p*(N%3);
  N/=3, p*=10;
}
Циклы while и for взаимозаменяемы
0
ata
270 / 242 / 186
Регистрация: 28.10.2015
Сообщений: 709
17.09.2016, 23:13 #14
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdio.h"
 
#define push(s, n) (*(s)++ = (n))
#define pop(s) (*--(s))
 
int main(void)
{
    int stack[20];
    int* s = stack;
    int n = 2000000000;
    do
    {
        push(s, n % 3);
        n /= 3;
    } while (n != 0);
    while (s > stack)
    {
        printf("%d", pop(s));
    }
    putchar('\n');
    return 0;
}
0
Кристина 1998
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 147
19.09.2016, 17:51  [ТС] #15
[quote="Байт;9551181"]что такое res3?

Добавлено через 57 секунд
[quote="ata;9551276"]я не понимаю...А как можно проще через цикл и если написать с остатком?
0
Байт
Эксперт C
17931 / 11923 / 2477
Регистрация: 24.12.2010
Сообщений: 24,006
19.09.2016, 19:15 #16
Цитата Сообщение от Кристина 1998 Посмотреть сообщение
что такое res3?
Целая переменная. (int res3). Я сам ее придумал. Сам и имя дал. Можно дать другое.
Цитата Сообщение от Кристина 1998 Посмотреть сообщение
я не понимаю..
Ну, тут видимо уже сложно что-то поделать.
0
Кристина 1998
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 147
19.09.2016, 20:02  [ТС] #17
Цитата Сообщение от Байт Посмотреть сообщение
Ну, тут видимо уже сложно что-то поделать.
Си это не мое?
0
zer0mail
2452 / 2089 / 216
Регистрация: 03.07.2012
Сообщений: 7,569
Записей в блоге: 1
20.09.2016, 13:36 #18
Цитата Сообщение от Кристина 1998 Посмотреть сообщение
Си это не мое?
Вот тут в точку. И не только Си...
1
20.09.2016, 13:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2016, 13:36

Ввести целое число и найти сумму его цифр
Ввести целое число и найти сумму его цифр Совсем запуталась,помогите!

Ввести целое число N, вывести ближейшую к N степень числа 2
Ввести целое число N, вывести ближейшую к N степень числа 2. Здравствуйте,...

Ввести 3 символа - вывести сложенное из них целое число
Есть три переменных символьного типа. Переменной целого типа присвоить число,...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru