Guest User

Untitled

a guest
Jul 17th, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.77 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. #include<cstring>
  4. #include<cstdlib>
  5.  
  6. using namespace std;
  7.  
  8. void rozbij(string m, int *tab){
  9. int tabK[3];
  10. int i, z=3;
  11. for(i=0; i<m.length(); i++){
  12. if(m[i]=='.'){
  13. tabK[z]=i+1;
  14. z++;
  15. }
  16. }
  17. tab[0]=atoi(m.substr(0, tabK[0]-1).c_str());
  18. cout<<tab[0];
  19. tab[1]=atoi(m.substr(tabK[0], tabK[1]-tabK[0]-1).c_str());
  20. tab[2]=atoi(m.substr(tabK[1], tabK[2]-tabK[1]-1).c_str());
  21. tab[3]=atoi(m.substr(tabK[2]).c_str());
  22. /*int z=0, i;
  23. for(i=0; i<=str.length();i++){
  24. if(str[i]=='.' && i<=3){
  25. t[0]=str.substr(0,i);
  26. n[0]=atoi(t[0].c_str());
  27. cout<<"ooo"<<endl;
  28. z=++i;
  29. }else if(str[i]=='.' && i<=8 && i>=z){
  30. t[1]=str.substr(z,(i-z));
  31. n[1]=atoi(t[1].c_str());
  32. cout<<"tutaj"<<endl;
  33. z=++i;
  34. }else if(str[i]=='.' && i<=12 && i>=z){
  35. t[2]=str.substr(z,(i-z));
  36. cout<<endl<<" -> "<<(n[2]=atoi(t[2].c_str()))<<endl;
  37. z=++i;
  38. }else if(str.length()==i && i>=z){
  39. t[3]=str.substr(z,(i-z));
  40. n[3]=atoi(t[3].c_str());
  41. }
  42. }*/
  43. }
  44.  
  45. char jakaKl(int c[]){
  46. if(c[0]<128){
  47. return 'A';
  48. }if(c[0]<192){
  49. return 'B';
  50. }if(c[0]<224){
  51. return 'C';
  52. }if(c[0]<240){
  53. return 'D';
  54. }else{
  55. return 'E';
  56. }
  57. }
  58.  
  59. string naBin(int n){
  60. return (n==0 ? "" : naBin(n/2)+( (n%2) ? "1":"0") );
  61. }
  62.  
  63. int naDec(string s){
  64. int dec = 0;
  65. string::size_type i=s.size();
  66. while(i--){
  67. if(s[i] == '1'){
  68. dec+=1 << (s.size() - i - 1);
  69. }else{
  70. if(s[i]!='0'){
  71. return 0;
  72. }
  73. }
  74. }
  75. return dec;
  76. }
  77.  
  78.  
  79. int main(){
  80. string ip, maska;
  81. int i;
  82. cout<<"IP:";
  83. cin>>ip;
  84. cout<<"Maska:";
  85. cin>>maska;
  86. if((ip.length()>15) || (ip.length()<7)){
  87. cout<<">> Nieprawidlowy adres IP <<"<<endl;
  88. }else if((maska.length()>15) || (maska.length()<7)){
  89. cout<<">> Nieprawidlowa maska <<"<<endl;
  90. }else{
  91. 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'))){
  92. cout<<">> NIeprawidlowy adres IP <<"<<endl;
  93. }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'))){
  94. cout<<">> Nieprawidlowa maska <<"<<endl;
  95. }else{
  96. int robIp[4], robMas[4];
  97. string rI[4], rM[4];
  98. //podzial(ip, rI, robIp);
  99. //podzial(maska, rM, robMas);
  100. rozbij(ip, robIp);
  101. rozbij(maska,robMas);
  102.  
  103. //for(i=0; i<4; i++){
  104. // cout<<robIp<<endl;
  105. // cout<<robMas<<endl;
  106. //}
  107.  
  108. if((robIp[0]>255) || (robIp[1]>255) || (robIp[2]>255) || (robIp[3]>255)){
  109. cout<<">> Nieprawidlowy adres IP <<"<<endl;
  110. }else if((robMas[0]>255) ||(robMas[1]>255) ||(robMas[2]>255) ||(robMas[3]>255)){
  111. cout<<">>> Nieprawidlowa maska <<<"<<endl;
  112. }else{
  113. //klasa
  114. cout<<"Klasa: "<<jakaKl(robIp)<<endl;
  115.  
  116. string tempI, tempM;
  117. rI[0]=naBin(robIp[0]);
  118. string zero="00000000";
  119.  
  120. tempI=zero.substr(0, 8-naBin(robIp[0]).length());
  121. tempI+=naBin(robIp[0]);
  122. tempM=zero.substr(0, 8-naBin(robMas[0]).length());
  123. tempM+=naBin(robMas[0]);
  124. for(i=1; i<4; i++){
  125. tempI+=zero.substr(0, 8-naBin(robIp[i]).length());
  126. tempI+=naBin(robIp[i]);
  127. tempM+=zero.substr(0, 8-naBin(robMas[i]).length());
  128. tempM+=naBin(robMas[i]);
  129. cout<<robMas[i]<<endl;
  130. }
  131.  
  132. //adres hosta
  133. int ilZer=0;
  134. for(i=0; i<tempM.length(); i++){
  135. if(tempM[i]=='0'){
  136. ilZer++;
  137. }
  138. }
  139. cout<<"Adres hosta: ";
  140. if(ilZer<=8){
  141. cout<< naDec(tempI.substr(32-ilZer,ilZer))<<endl;
  142. }else if(ilZer<=16){
  143. cout<<naDec(tempI.substr((32-8),8))<<".";
  144. cout<<naDec(tempI.substr((32-ilZer),(ilZer-8)))<<endl;
  145. }else if(ilZer<=24){
  146. cout<<naDec(tempI.substr((32-8),8))<<".";
  147. cout<<naDec(tempI.substr((32-16),8))<<".";
  148. cout<<naDec(tempI.substr((32-ilZer),(ilZer-16)))<<endl;
  149. }else if (ilZer<=32){
  150. cout<<naDec(tempI.substr(32-8,8))<<".";
  151. cout<<naDec(tempI.substr(32-16,8))<<".";
  152. cout<<naDec(tempI.substr(32-24,8))<<".";
  153. cout<<naDec(tempI.substr((32-ilZer),(ilZer-24)))<<endl;
  154. }
  155.  
  156. //adres sieci
  157. string sru, tutu;
  158. if((tempI[0]=='1') && (tempM[0]=='1')){
  159. sru="1";
  160. }else{
  161. sru="0";
  162. }
  163. for(i=1;i<32;i++){
  164. if(tempI[i]=='1' && tempM[i]=='1'){
  165. sru+="1";
  166. }else{
  167. sru+="0";
  168. }
  169. }
  170. cout<<"Adres sieci: ";
  171. for(i=0; i<32; i+=8){
  172. tutu=sru[i];
  173. for(int j=1; j<8; j++){
  174. tutu+=sru[i+j];
  175. }
  176. cout<<naDec(tutu)<<".";
  177. }
  178. cout<<endl;
  179. }
  180. }
  181. }
  182. return 0;
  183. }
Add Comment
Please, Sign In to add comment