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

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

Войти
Регистрация
Восстановить пароль
 
pashkevich
0 / 0 / 0
Регистрация: 13.05.2009
Сообщений: 5
#1

Проверьте правильность программы - C++

15.06.2009, 11:13. Просмотров 929. Ответов 5
Метки нет (Все метки)

Она должна переводить дробную часть десятичного числа в двоичную, она переводит но не правильно.

КоД:


Код
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <iostream>
#include <math.h>
#include <stdlib.h>
#define nn 16
using namespace::std;
  
int main ()
{
    int n, i=0, d, num_int, c;// 
    double num, x;          // Variables (IIepeMeHHbIe)
    char response;          //
    int a[nn];              //
    cout << "This program will convert your decimal number to binary number (16 bits)" << endl;
    begin: cout << "Enter the number: ";
    cin >> num;             // Reading from keybord the value of our number
    num_int = (int)num;     // Convert our number into integer and make it new variable (num_int)
    x = num - num_int;      // Doing from our number ?.xxx something like 0.xxx
    for(;(x-(int)x)!=0;)    // Till x!= integer part of x
    { x = 10*(x);}          // we will do x=10*x
    n=x; d=n;               // Making copy of x value
	if (n==1)               // Cycle
    {i=0;
    a[i]=1;                 // Cycle
    for (i=1; i!=16; i++) {a[i]=0;}
    }
    if (n==0)               // Cycle
    {for (i=0; i!=16; i++) {a[i]=0;}
    }
    else
    for (i=0; i!=16; i++)   // Save our binary into massive
    {a[i]=n%2;
    n=n/2;
    }
    cout << "Binary value of " << d << " is: ";
    for(i=15; i!=-1;i--) {
    if(a[i]==1){c=1;}
    if(c==1){
    cout << a[i];}}
    cout << endl << "Want to retry ? (y/n)" << endl;    // Restart function
    cin >> response;
    if (response == 'y') {         // If 'y' do Clear Screen and go to begin
    system("CLS");
    goto begin;}
}
//---------------------------------------------------------------------------
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2009, 11:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверьте правильность программы (C++):

Проверьте правильность текста программы проверки текста заклинаний. - C++
на вход программе подается текст заклинания, состоящего не более, чем из 200 символов, заканчивающийся точкой (другие точки во входных...

проверьте на правильность - C++
Нужно удвоить нечётные элементы (количество строк m - 4, а столбцов n - 3) #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using...

Проверьте правильность - C++
Структурная схема алгоритма (метод вставки) http://i032.***********/0912/0c/f5e0e7e1959c.jpg Программа ...

проверьте на правильность - C++
Вычислить значения функции у=4х3-2х2+5 для значений х, изменяющихся от -3 до 1, с шагом 0.1. #include &lt;stdio.h&gt; #include &lt;iostream&gt; ...

Проверьте правильность - C++
Создайте условный оператор (if), который присваивал бы x значение x/y, если y не равно 0. #include &lt;iostream&gt; using namespace std; ...

Проверьте правильность пожалуйста - C++
Правильно ли я реализовал задание? Задание: В массиве Z(m) найти число чередований знака, то есть число переходов с минуса на плюс или с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
15.06.2009, 13:10 #2
вообще не понял, что ты делаешь...
в C/C++ числа и так хранятся в двоичном виде.
процессор по-другому делать не позволяет.
C
1
cin >> num
дает тебе ДВОИЧНОЕ число.
ты пытаешься перевести из двоичного в двоичный?
pashkevich
0 / 0 / 0
Регистрация: 13.05.2009
Сообщений: 5
16.06.2009, 11:00  [ТС] #3
ввожу 3.125
нужно перевести 0.125 в двоичную систему
AltPeople
10 / 10 / 1
Регистрация: 25.09.2008
Сообщений: 73
16.06.2009, 11:16 #4
А разве в двоичной системе есть дробные числа???????
на сколько мне извесно, там только целые!
это я к тому, что у тебя есть 0,125
125 в двоичной = 111 1101
тогда получается, что 0,125 в двоичной ну что-то типа 0,111 1101 ?????? О_о
бред получается

Добавлено через 11 минут 28 секунд
все что меньше 1 в двоичной системе = 0!
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
16.06.2009, 13:59 #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от AltPeople Посмотреть сообщение
все что меньше 1 в двоичной системе = 0!
маленькая поправка - в компьютере и для целых чисел
В математике дроби переводяться в двоичный формат следующим образом:
1)Умножается дробь на 2;
2)Запоминается целая часть;
3)Обнуляем целую часть;
4)Повторяем пункты с 1 по 3, пока дробная часть не станет равной нулю или не получим двоичное число нужной точности.

Пример:
Число 0.125
1)0.125 х 2 = 0.250 (запомнили 0)
2)0.250 х 2 = 0.5 (запомнили 0)
3)0.5 х 2 = 1.0 (запомнили 1)
4)Дробная часть равна нулю - прекратили цикл. Выписываем полученные числа 001,
в итоге результат 0.001b
Обратный перевод: 0 х (1/2^1) + 0 x (1/2^2) + 0 x (1/2^3) = 0.125
Пример2
Число 0.3
1)0.3 х 2 = 0.6 (0)
2)0.6 х 2 = 1.2 (1, обнуляем целую часть)
3)0.2 х 2 = 0.4 (0)
4)0.4 х 2 = 0.8 (0)
5)0.8 х 2 = 1.6 (1)
6)0.6 х 2 = 1.2 (1)
7)0.2 х 2 = 0.4 (0)
8)0.4 х 2 = 0.8 (0)
9)0.8 х 2 = 1.6 (1)
Дальше видим, что цикл будет повторяться, поэтому прекратим дальнейшие вычисления, получили 0.010011001b
Проверка:
0 x (1/2^1) + 1 x (1/2^2) + 0 x (1/2^3) + 0 x (1/2^4) + 1 x (1/2^5) + 1 x (1/2^6) + 0 x (1/2^7) + 0 x (1/2^8) + 1 x (1/2^9) =
= 0.25 + 0.03125 + 0.015625 + 0.001953125 = 0.298828125(в принципе более менее точно)

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
//---------------------------------------------------------------------------
#include <iostream.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
   double d = 0, num = 0;
   int bin[16] = {0};
   char ack;
 
 cout << "This program will convert your decimal number to binary number (16 bits)" << endl;
 while (true)
 {
   cout << "Enter the number: ";
   cin >> d;
   num =d - (int)d;
 
   for (int i = 0; i < 16; i++)
   {
      num *= 2;
      bin[i] = (int)num;
      num -= (int)num;
      if (num == 0)
      {
         bin[i+1] = '\0';
         break;
      }
      bin[i+1] = '\0';
   }
   cout << "Binary value of " << d << " is: 0,";
   for (int i = 0; i < 16; i++)
        cout << bin[i];\
   cout << "b" << endl;
   cout << endl << "Want to retry ? (y/n)";
   cin >> ack;
   if (ack != 'y')
      break;
 }
    system("pause");
   return 0;
}
//---------------------------------------------------------------------------
Добавлено через 57 минут 50 секунд
Ээ.. только что заметил, 28 и 31 строки забыл убрать они там лишние
pashkevich
0 / 0 / 0
Регистрация: 13.05.2009
Сообщений: 5
18.06.2009, 01:30  [ТС] #6
2 kazak
спасибо большое
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2009, 01:30
Привет! Вот еще темы с ответами:

Проверьте правильность работы в С++ - C++
Решите уравнение указанным в варианте методом. Функцию передать как параметр с помощью указателя. e^x + sqrt(1+e^(2*x)) - 2 = 0 ...

Проверьте правильность кода - C++
Здравствуйте. Задали рассчитать площадь треугольника по заданным параметрам: сторонам треугольника ABC и радиусу описанной окружности....

Проверьте код на правильность. - C++
Вот код на Delphi: procedure TForm1.Button4Click(Sender: TObject); var i: integer; begin for i:=0 to 20 do if...

проверьте правильность программ - C++
Нужно составить программу который подсчитывает площадь прямоугольного треугольника когда известна длина и высота: { Float a, h, s; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.06.2009, 01:30
Ответ Создать тему
Опции темы

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