Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2011, 16:02   #1
Kirill Rus
Новичок
Джуниор
 
Регистрация: 02.10.2011
Сообщений: 1
По умолчанию Создание функций отображающих переданные им числа в той или иной системе исчисления(язык программирования "С").

Всем привет.
Есть задание:

На входе строка с числом в десятичной форме. Распознать строку в переменную типа int. На выходе строки с введенным числом в двоичной, восьмиричной и шестнадцатиричной форме printf("%s",char *).

Запрещено использовать такие операторы как pow, itoa, atoi.

Я решил начать с простого и написать программу только для перевода из 10 в 2, чтобы затем усложнять её, но у меня не получилось. Все время программа выводит разный ответ.

Вот мои 2 варианта программы перевода из 10 в 2:

1)
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>

void main()
{
      int i=0, dec = 0;
      char A[30];
      printf ("Vvedite dec: ");
      scanf ("%d", &dec);
      while (dec > 0)
      {
            A[i]=( dec % 2 )+48;
            dec = dec / 2;
            i++;
      }
       char A1[30];
       int dv = 0, k = 1, n = strlen(A);
       for (i=0; i<n-1; i++)
      {
       A1[i] = A[n-i-1];
       dv = dv + k * (A1[i] - '0');
       k = k*2;
      }
       printf ("%d\n", dv);
       getch();
}
2)
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>

int main()
{
      int i=0, dec, otv;
   char A[30];
      printf ("Vvedite dec: ");
      scanf ("%d", &dec);
      while (dec > 0)
      {
       A[i] = (dec % 2) + 48;
       dec = dec / 2;
       i++;
      }
      int k = 1, n = strlen(A);
      char A1[30];
      for (i=0; i<n-1; i++)
      {
       A1[i] = A[n-i-1];
      }
   for (i=0; i<n-1; i++)
   {
       otv = otv + k * (A1[i] - 48);
       k = k * 2;
   }
      printf ("%d\n", otv);
      printf ("%s\n", A1);
      printf ("%s\n", A);
      getch();
}
Помогите разобраться пожалуйста.

Последний раз редактировалось Stilet; 02.10.2011 в 17:07.
Kirill Rus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти книгу Стивена Праты "Язык программирования C. Лекции и упражнения". Может есть у кого? Catharsis Общие вопросы C/C++ 0 10.06.2010 12:46
Напечатать текст, удалив из него все цифры и знаки "+" или "–". Язык С++. KaylasMKTY Помощь студентам 8 07.03.2010 21:35
PHP(или другой язык): Получить все пары "имя" -> "значение" переданные методом POST KingOfNothing PHP 4 12.04.2009 14:06