0.О Неможи за индекс на низа да ти биде негативен број.
Среди го методот decimalenVoBinaren, а и погоре во маин имаш негативни индекси.
----
Ми текна што му била финтата со негативните индекси.
Еден број со децимали ќе го обележиме abc,kmn каде a, b, c, k, m, n се декадни цифри.
abc,kmn = a*10^2 + b*10^1 + c*10^0 + k*10^-1 + m*10^-2 + n*10^-3
![]()
Е сега истото, само со множител 2 на степен. И со позитивни и негативни.
Е сега ја преправив програмата со две низи, кај децималниот дел индексите се позитивни а означуваат негативен степен. (минус индекс)
Код:#include <iostream> #include <cmath> using namespace std; void celVoBinaren(int ,int [], int & ); void decimalenVoBinaren(float , int [] , int & ); int main(){ float broj,decimalendel; int celdel, celDelBin[100], decDelBin[100], celDelBinLenght, decDelBinLenght, k; cout << "Vnesete proizvolen realen dekaden broj od tastatura: "; cin >> broj; celdel = (int)floor(broj); decimalendel=broj-(float)celdel; celVoBinaren(celdel, celDelBin, celDelBinLenght); decimalenVoBinaren(decimalendel,decDelBin, decDelBinLenght); cout<<"Vo binarna forma brojot e: "; for (k=celDelBinLenght-1; k>=0; k--) cout <<celDelBin[k]; cout << '.'; for(k=1; k < decDelBinLenght; k++) cout << decDelBin[k]; cout << endl; return 0; } void celVoBinaren(int cel, int a[], int & len){ len=0; do { a[len]=cel%2; cel=cel/2; len++; } while (cel>0); } void decimalenVoBinaren(float decimalen, int a[], int & len){ len=1; if (decimalen > 1.0F) return; do{ decimalen = 2 * decimalen; a[len]=(int)floor(decimalen); decimalen =decimalen-(float)a[len]; len++; } while(decimalen>0.000001F); //preciznost do 6 decimalni cifri }
Фала уште еднаш !
