Witam, przyszło mi przeliczać adresy IPv4 na ilość hostów, adresy rozgłoszeniowe i tak dalej i tak dalej. Pierwszym krokiem jest zamiana adresu IP w Dec(10) na Bin(2). Napisałem początek programu, oczywiście jak rozwiążę ten problem to będę pisał resztę. Mianowicie gdy wpisuję jakieś IP dajmy na to znane wszystkim 192 168 0 1, to w pierwszym oktecie - binarnie, zawsze na końcu jest dopisywana jedna jedynka. Dzieje sie tak w przypadku innych cyfr. Podaję kod: (kompilując u siebie pamiętajcie aby nie podawać liczb > 255)
#include <iostream>
#include <math.h>
#include <cstdlib>
using namespace std;
int main()
{
int decIp[3];
int decMask[3];
float IpBin1[7], IpBin2[7], IpBin3[7], IpBin4[7];
float MaskBin1[7], MaskBin2[7], MaskBin3[7], MaskBin4[7];
cout<<"Podaj adres IP rozdzielajac oktety spacja: ";
cin>>decIp[0]>>decIp[1]>>decIp[2]>>decIp[3];
//cout<<"Podaj adres maski podsieci rozdzielajac oktety spacja: ";
//cin>>decMask[0]>>decMask[1]>>decMask[2]>>decMask[3];
for (int i=0; i<8; i++)
{
IpBin1[i] = decIp[0] % 2;
decIp[0] = (floor(decIp[0])/2);
IpBin2[i] = decIp[1] % 2;
decIp[1] = (floor(decIp[1])/2);
IpBin3[i] = decIp[2] % 2;
decIp[2] = (floor(decIp[2])/2);
IpBin4[i] = decIp[3] % 2;
decIp[3] = (floor(decIp[3])/2);
}
for (int i=7; i>=0; i--)
{
cout<<IpBin1[i];
}
cout<<".";
for (int i=7; i>=0; i--)
{
cout<<IpBin2[i];
}
cout<<".";
for (int i=7; i>=0; i--)
{
cout<<IpBin3[i];
}
cout<<".";
for (int i=7; i>=0; i--)
{
cout<<IpBin4[i];
}
cout<<endl<<endl;
system("pause");
return 0;
}
Nie wiem dlaczego tak się dzieje, próbowałem na wiele różnych sposobów i nic z tego.