Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Кристина 1998
0 / 0 / 0
Регистрация: 13.09.2016
Сообщений: 147
#1

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

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

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

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

Дано целое число X в десятичной системе счисления. Выведите запись числа X в восьмеричной системе счисления - C (СИ)
Почему настоящие программисты путают католическое Рождестово и Halloween? Потому что 25 DEC = 31 OCT. Дано целое число X в...

Введите целое число в двоичной системе счисления и выведите его десятичный эквивалент - C (СИ)
Введите целое число в двоичной системе счисления и выведите его десятичный эквивалент. Указание. Примените операции деления (/) и...

Целое положительное число m записывается в 16-ой системе счисления и разряды в этой записи переставляются в обратном порядке. - C (СИ)
#include <stdio.h> #include <stdlib.h> #include <string.h> main() { int c = 0; printf("Vvedite cislo: "); scanf("%d", &c);...

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

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

17
Байт
Эксперт C
17714 / 11735 / 1871
Регистрация: 24.12.2010
Сообщений: 23,531
14.09.2016, 22:15 #2
Кристина 1998, Можно поинтересоваться, в чем именно проблема?
Ввести число можете?
Знаете как переводится в другую систему на бумажке?
Если знаете, то не знаете, как это записать на языке Си?
Можете набросать хотя бы скелет программы?
Допустимо ли использование рекурсии?
0
MansMI
1375 / 1154 / 340
Регистрация: 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 / 0
Регистрация: 13.09.2016
Сообщений: 147
14.09.2016, 22:35  [ТС] #4
Проблема в том, что я понимаю , как на бумажке это записать.
Но я не понимаю , как написать программу...
0
easybudda
Модератор
Эксперт CЭксперт С++
10020 / 5943 / 1004
Регистрация: 25.07.2009
Сообщений: 11,230
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
17714 / 11735 / 1871
Регистрация: 24.12.2010
Сообщений: 23,531
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 / 0
Регистрация: 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 / 0
Регистрация: 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
17714 / 11735 / 1871
Регистрация: 24.12.2010
Сообщений: 23,531
16.09.2016, 10:32 #11
Цитата Сообщение от Соляристик Посмотреть сообщение
char используется для хранения символов.
unsigned char можно использовать для хранения небольших неотрицательных чисел. От 0 до 255.
Также как signed char использовать для хранения небольших целых чисел
0
Кристина 1998
0 / 0 / 0
Регистрация: 13.09.2016
Сообщений: 147
17.09.2016, 22:29  [ТС] #12
Цитата Сообщение от easybudda Посмотреть сообщение
1
скажите, пожалуйста, а как мне вывести программу через цикл с while?
0
Байт
Эксперт C
17714 / 11735 / 1871
Регистрация: 24.12.2010
Сообщений: 23,531
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
268 / 240 / 53
Регистрация: 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 / 0
Регистрация: 13.09.2016
Сообщений: 147
19.09.2016, 17:51  [ТС] #15
[quote="Байт;9551181"]что такое res3?

Добавлено через 57 секунд
[quote="ata;9551276"]я не понимаю...А как можно проще через цикл и если написать с остатком?
0
19.09.2016, 17:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2016, 17:51
Привет! Вот еще темы с ответами:

Ввести целое число N, вывести ближейшую к N степень числа 2 - C (СИ)
Ввести целое число N, вывести ближейшую к N степень числа 2. Здравствуйте, можно переделать код СИ ++ на СИ, и указать на ошибки, если...

Ввести 3 символа - вывести сложенное из них целое число - C (СИ)
Есть три переменных символьного типа. Переменной целого типа присвоить число, образованное совместной записью этих переменных. Если число...

Определить, каким количеством цифр "0" заканчивается запись числа N! в K-ичной системе счисления - C (СИ)
Факториалом натурального числа N (обозначается N!) Называется произведение всех натуральных чисел от 1 до N включительно: N! = 1 × 2 × 3 ×...

Определить, каким количеством цифр "0" заканчивается запись числа N! в K-ичной системе счисления - C (СИ)
А как определить, каким количеством цифр &quot;0&quot; заканчивается запись числа N! в K-ичной системе счисления. Добавлено через 1 час 16 минут...


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

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

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