Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 11.01.2016, 22:11   #1 (permalink)
hedgehod
Member
 
Регистрация: 05.01.2016
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
По умолчанию Pascal. Помогите пожалуйста

Если маска подсети 255.255.255.248 и IP-адрес компьютера в сети 156.128.0.227, то номер компьютера в сети равен ?
hedgehod вне форума   Ответить с цитированием

Старый 11.01.2016, 22:11
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Дам вам ссылки на темы, которые имеют что то общее с вашей темой

Помогите пожалуйста с Pascal
Помогите пожалуйста. Pascal
Помогите, пожалуйста, с задачкой. Fortran, Pascal
Помогите пожалуйста с задачкой, Fortran, Pascal
Помогите, пожалуйста, подредактировать, Pascal
Pascal ABC, запуталась, помогите пожалуйста

Старый 12.01.2016, 13:09   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от hedgehod Посмотреть сообщение
Если маска подсети 255.255.255.248 и IP-адрес компьютера в сети 156.128.0.227, то номер компьютера в сети равен ?
Получите и распишитесь. Работает с любыми подсетями и IP:
Код:
Var
 SM,IP,SM_Bin,IP_Bin,Nc_Bin:String;
 Nc:LongInt;
 NZ,LL:Byte;

Function Dec2Bin(D:LongInt):String;
var
 S1,S2,C:String;
 i,L:byte;
 Q:LongInt;
begin
 Q:=D;
 S1:='';
 repeat
  STR((Q mod 2), C);
  S1:=S1+C;
  Q:=Q div 2;
 until Q=0;
 L:=Length(S1);
 S2:='';
 for i:=1 to L do
  S2:=S2+S1[L-i+1];
 Dec2Bin:=S2;
end;

Function Bin2Dec(S:String):LongInt;
var
 k,L:byte;
 P,Q,R:LongInt;
 Code:Integer;
begin
 L:=Length(S);
 Val(S[L],P,Code);
 Q:=1;
 for k:=L-1 downto 1 do
  begin
   Q:=Q*2;
   Val(S[k],R,Code);
   P:=P+R*Q;
  end;
 Bin2Dec:=P;
end;

Function Bin_SM_IP(S:String):String;
var
 S1,P,SR:String;
 R:LongInt;
 Code:Integer;
 C:Char;
 L,k,m,LR:Byte;
begin
 L:=Length(S);
 k:=0;
 S1:='';
 repeat
  P:='';
  repeat
   Inc(k);
   if (S[k]<>'.') and (k<=L) then P:=P+S[k];
  until (S[k]='.') or (k=L);
  Val(P,R,Code);
  SR:=Dec2Bin(R);
  LR:=Length(SR);
  for m:=1 to 8-LR do S1:=S1+'0';
  S1:=S1+SR;
 until k=L;
 Bin_SM_IP:=S1;
end;

Function Num_of_Zero(S:String):Byte;
var k,L:Byte;
begin
 L:=Length(S);
 k:=0;
 While S[L-k]='0' do Inc(k);
 Num_of_Zero:=k;
end;

Begin
 Write('Subnet Mask (x.x.x.x) = ');
 Readln(SM);
 Write('IP (x.x.x.x) = ');
 Readln(IP);
 SM_Bin:=Bin_SM_IP(SM);
 IP_Bin:=Bin_SM_IP(IP);
 NZ:=Num_of_Zero(SM_Bin);
 LL:=Length(IP_Bin);
 Nc_Bin:=Copy(IP_Bin,LL-NZ+1,NZ);
 Nc:=Bin2Dec(Nc_Bin);
 Writeln('Computer subnet number is ',Nc);
 Readln
End.
Естественно, если у Вас этот дебильный АВС, то LongInt нужно всюду заменить на Integer, что, впрочем, не гарантирует работоспособности программы. На Free Pascal она ПОЛНОСТЬЮ отлажена и оттестирована.
Vladimir_S вне форума   Ответить с цитированием
Старый 13.01.2016, 17:49   #3 (permalink)
hedgehod
Member
 
Регистрация: 05.01.2016
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 60
По умолчанию

Спасибо, думаю смогу отладить для ABC. Огромное спасибо.
hedgehod вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 07:48.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.