2014-12-31 3 views
0

Я пытался создать программу, которая преобразует от десятичной к двоичной, и у меня возникают проблемы. Взгляните на то, что у меня есть, и дайте мне ногу в правильном направлении, программа компилирует, но возвращает отрицательные числа. Я отлаживаю прямо сейчас, но как только компилятор попадает в переменную num, она появляется как отрицательное число.C++ Простое преобразование из двоичного в десятичное

#include <iostream> 
using namespace std; 

int hexConvert(int* num, int Hexes[8]) { 
    //int* Hexes[8] = &Hexes[8]; 
    int empty[8]; 
    for(int i = 0; i < 8; i++) { 
     if(Hexes[i]-*num >= 0) { 
      *num = (Hexes[i] - *num); 
      empty[i] = 1; 
     } else 
      empty[i] = 0; 
    } 
    return empty[8]; 
} 

int Hexes[8] = {128,64,32,16,8,4,2,1}; 

int main() { 
    int num = 0; 
    int here[8]; 
    here[8] = hexConvert(&num,&Hexes[8]); 
    for (int i = 0; i < 8; i++) 
     cout << here[i]; 
} 
+0

Вы должны разместить его как codereview.stackexchange.com –

+1

'int here [8]; здесь [8] = something;' UB. –

+0

Массивы на C++ не работают так. –

ответ

1

попробовать В вы можете скопировать структуры, союзы и т.д., но не может копировать массивы непосредственно. По этой причине вы не можете вернуть массив и назначить его другому массиву.

Вместо somearr[8] вы можете использовать std::array или std::vector. Эти контейнеры stl можно скопировать и, таким образом, решить вашу проблему.

Live Demo here

+0

Спасибо, что получил работу. –

+0

Спасибо, @ Jarod42. Я обновлю демо. –

0

Вы передаете функцию указатель вне массива. Кроме того, вы возвращаете элемент из массива. Массив из 8 элементов имеет индексы от 0 до 7. Кроме того, вы не можете передать массив как аргумент функции. Прочитайте руководство по C++ и снова

1

Вы делаете некоторые вещи неправильно.

1- Я думаю, вы хотите сохранить двоичные файлы в массиве для каждого десятичного числа. Если вы хотите сделать это, вы должны использовать массив 2d. (например, десятичные числа: [2,4,7] двоичные файлы: [[0,1,0], [1,0,0], [1,1,1])

2- Вы используете массивы в Неправильный путь. Если вы хотите отправить массив в функции вы должны использовать так:

// lets say this is a function takes an array 
void foo(int ex[8]); 
. 
. 
. 
int main() { 
int myArray[8]; 
. 
. 
//you must call it like that 
foo(myArray); 
//or 
foo(&myArray[0]); 

3- Вы возвращаете Int не ИНТ []. Возможно, вы хотите использовать выходной параметр с помощью своей функции, которая может помочь.

Вы должны искать и изучать использование массива в C++. Посетите http://www.cplusplus.com/doc/tutorial/arrays/

Смежные вопросы