Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- #include<cstring>
- #include<cstdlib>
- using namespace std;
- void rozbij(string m, int *tab){
- int tabK[3];
- int i, z=3;
- for(i=0; i<m.length(); i++){
- if(m[i]=='.'){
- tabK[z]=i+1;
- z++;
- }
- }
- tab[0]=atoi(m.substr(0, tabK[0]-1).c_str());
- cout<<tab[0];
- tab[1]=atoi(m.substr(tabK[0], tabK[1]-tabK[0]-1).c_str());
- tab[2]=atoi(m.substr(tabK[1], tabK[2]-tabK[1]-1).c_str());
- tab[3]=atoi(m.substr(tabK[2]).c_str());
- /*int z=0, i;
- for(i=0; i<=str.length();i++){
- if(str[i]=='.' && i<=3){
- t[0]=str.substr(0,i);
- n[0]=atoi(t[0].c_str());
- cout<<"ooo"<<endl;
- z=++i;
- }else if(str[i]=='.' && i<=8 && i>=z){
- t[1]=str.substr(z,(i-z));
- n[1]=atoi(t[1].c_str());
- cout<<"tutaj"<<endl;
- z=++i;
- }else if(str[i]=='.' && i<=12 && i>=z){
- t[2]=str.substr(z,(i-z));
- cout<<endl<<" -> "<<(n[2]=atoi(t[2].c_str()))<<endl;
- z=++i;
- }else if(str.length()==i && i>=z){
- t[3]=str.substr(z,(i-z));
- n[3]=atoi(t[3].c_str());
- }
- }*/
- }
- char jakaKl(int c[]){
- if(c[0]<128){
- return 'A';
- }if(c[0]<192){
- return 'B';
- }if(c[0]<224){
- return 'C';
- }if(c[0]<240){
- return 'D';
- }else{
- return 'E';
- }
- }
- string naBin(int n){
- return (n==0 ? "" : naBin(n/2)+( (n%2) ? "1":"0") );
- }
- int naDec(string s){
- int dec = 0;
- string::size_type i=s.size();
- while(i--){
- if(s[i] == '1'){
- dec+=1 << (s.size() - i - 1);
- }else{
- if(s[i]!='0'){
- return 0;
- }
- }
- }
- return dec;
- }
- int main(){
- string ip, maska;
- int i;
- cout<<"IP:";
- cin>>ip;
- cout<<"Maska:";
- cin>>maska;
- if((ip.length()>15) || (ip.length()<7)){
- cout<<">> Nieprawidlowy adres IP <<"<<endl;
- }else if((maska.length()>15) || (maska.length()<7)){
- cout<<">> Nieprawidlowa maska <<"<<endl;
- }else{
- if(((ip[0]>'A') && (ip[0]<'z')) || ((ip[1]>'A') && (ip[1]<'z')) || ((ip[2]>'A') && (ip[2]<'z')) || ((ip[3]>'A') && (ip[3]<'z'))){
- cout<<">> NIeprawidlowy adres IP <<"<<endl;
- }else if(((maska[0]>'A') && (maska[0]<'z')) ||((maska[1]>'A') && (maska[1]<'z')) ||((maska[2]>'A') && (maska[2]<'z')) ||((maska[3]>'A') && (maska[3]<'z'))){
- cout<<">> Nieprawidlowa maska <<"<<endl;
- }else{
- int robIp[4], robMas[4];
- string rI[4], rM[4];
- //podzial(ip, rI, robIp);
- //podzial(maska, rM, robMas);
- rozbij(ip, robIp);
- rozbij(maska,robMas);
- //for(i=0; i<4; i++){
- // cout<<robIp<<endl;
- // cout<<robMas<<endl;
- //}
- if((robIp[0]>255) || (robIp[1]>255) || (robIp[2]>255) || (robIp[3]>255)){
- cout<<">> Nieprawidlowy adres IP <<"<<endl;
- }else if((robMas[0]>255) ||(robMas[1]>255) ||(robMas[2]>255) ||(robMas[3]>255)){
- cout<<">>> Nieprawidlowa maska <<<"<<endl;
- }else{
- //klasa
- cout<<"Klasa: "<<jakaKl(robIp)<<endl;
- string tempI, tempM;
- rI[0]=naBin(robIp[0]);
- string zero="00000000";
- tempI=zero.substr(0, 8-naBin(robIp[0]).length());
- tempI+=naBin(robIp[0]);
- tempM=zero.substr(0, 8-naBin(robMas[0]).length());
- tempM+=naBin(robMas[0]);
- for(i=1; i<4; i++){
- tempI+=zero.substr(0, 8-naBin(robIp[i]).length());
- tempI+=naBin(robIp[i]);
- tempM+=zero.substr(0, 8-naBin(robMas[i]).length());
- tempM+=naBin(robMas[i]);
- cout<<robMas[i]<<endl;
- }
- //adres hosta
- int ilZer=0;
- for(i=0; i<tempM.length(); i++){
- if(tempM[i]=='0'){
- ilZer++;
- }
- }
- cout<<"Adres hosta: ";
- if(ilZer<=8){
- cout<< naDec(tempI.substr(32-ilZer,ilZer))<<endl;
- }else if(ilZer<=16){
- cout<<naDec(tempI.substr((32-8),8))<<".";
- cout<<naDec(tempI.substr((32-ilZer),(ilZer-8)))<<endl;
- }else if(ilZer<=24){
- cout<<naDec(tempI.substr((32-8),8))<<".";
- cout<<naDec(tempI.substr((32-16),8))<<".";
- cout<<naDec(tempI.substr((32-ilZer),(ilZer-16)))<<endl;
- }else if (ilZer<=32){
- cout<<naDec(tempI.substr(32-8,8))<<".";
- cout<<naDec(tempI.substr(32-16,8))<<".";
- cout<<naDec(tempI.substr(32-24,8))<<".";
- cout<<naDec(tempI.substr((32-ilZer),(ilZer-24)))<<endl;
- }
- //adres sieci
- string sru, tutu;
- if((tempI[0]=='1') && (tempM[0]=='1')){
- sru="1";
- }else{
- sru="0";
- }
- for(i=1;i<32;i++){
- if(tempI[i]=='1' && tempM[i]=='1'){
- sru+="1";
- }else{
- sru+="0";
- }
- }
- cout<<"Adres sieci: ";
- for(i=0; i<32; i+=8){
- tutu=sru[i];
- for(int j=1; j<8; j++){
- tutu+=sru[i+j];
- }
- cout<<naDec(tutu)<<".";
- }
- cout<<endl;
- }
- }
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment