Форум программистов, компьютерный форум, киберфорум
Наши страницы

sipcalc - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ пишу лабу по классам, задание с многочленами, задаваемыми массивом коэффициентов и старшой степенью http://www.cyberforum.ru/cpp-beginners/thread296582.html
Доброго времени суток, Форумчане:) пишу лабу по классам, задание с многочленами, задаваемыми массивом коэффициентов и старшой степенью, так вот все сделал, осталось реализовать функцию умножения...
C++ Дана матрица Дана матрица в этой матрице найти максимальный элемент и указать номер строки и столбца, где находится этот максимальный элемент. ( в С++) http://www.cyberforum.ru/cpp-beginners/thread296571.html
C++ Обратная польская запись на С++
Ребята, помогите пожалуйста?! Есть некоторые проблемы при реализации обратной польской записи. Программу я написал, не могли бы проверить и комментировать ошибки? #include <iostream> using...
Кто знает решение? Тема Классы C++
Класс Прямая Члены класса Координаты двух точек (x1,y1) и (x2,y2) Методы Конструктор, метод вывода уравнения прямой Операторы перегрузки Проверка параллельности 2х прямых ( ), определение угла...
C++ Умножение двух матриц на С++ http://www.cyberforum.ru/cpp-beginners/thread296558.html
Всем доброе время суток! с днём Математиков ВАС, коллеги) Мне надо реализовать умножение 2 матриц размерности NxM1, M1xN соответственно. (реализовать при помощи стека). Программу я написал, но...
C++ Чтение строки Здравствуйте! На С/С++ уже давно писал и не могу вспомнить как прочатить текст с клавиатуры в консоли в переменную типа string, т.к. cin>> читает только до первого пробела. подробнее

Показать сообщение отдельно
iWord
10 / 10 / 1
Регистрация: 21.12.2010
Сообщений: 109
30.05.2011, 22:21  [ТС]
Черт пришлось переделать.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include <stdlib.h>
#include <stdio.h>
 
void* memset(void *s, int c, size_t n)
{
    char* p = s;
    while(n--) *p++ = c;
    return s;
}
 
int main(int argc[],char *argv[])
{
  extern char     *__progname;
  int r,a,i,w[32],f[32],g[32],h[32],b,c,d;
  int t,y,u[32],o[32],p[32],x[32],z,v,m;
  
  if(argc<2) {printf("Ошибка ввода используйте команду ./%s [IP адрес в формате x.x.x.x] [Маска подстеи в формате y.y.y.y]\n",__progname);
        exit(0);}
  
  /*IP в двоичном виде*/
  sscanf(argv[1],"%d.%d.%d.%d",&a,&b,&c,&d);
 
  memset(w,0,sizeof(w));
  memset(f,0,sizeof(w));
  memset(g,0,sizeof(w));
  memset(h,0,sizeof(w));
 
  for(i=0;i<32;i++)
    {
      w[i]=((a>>i)&1);
      
    }
    for(i=0;i<32;i++)
    {
      f[i]=((b>>i)&1);
      
    }
    for(i=0;i<32;i++)
    {
      g[i]=((c>>i)&1);
      
    }
    for(i=0;i<32;i++)
    {
      h[i]=((d>>i)&1);
      
    }
  
  printf("IP в двоичном виде ");
  for(i=31,r=0;i>=0;i--)
    { 
      if((w[i]==1)||(r==1))
    { 
      printf("%d",w[i]);
      r=1;
    }
    }
    printf(".");
    for(i=31,r=0;i>=0;i--)
    { 
      if((f[i]==1)||(r==1))
    { 
      printf("%d",f[i]);
      r=1;
    }
    }
    printf(".");
    for(i=31,r=0;i>=0;i--)
    { 
      if((g[i]==1)||(r==1))
    { 
      printf("%d",g[i]);
      r=1;
    }
    }
    printf(".");
    for(i=31,r=0;i>=0;i--)
    { 
      if((h[i]==1)||(r==1))
    { 
      printf("%d",h[i]);
      r=1;
    }
    }
    puts("");
    
    
  /*Маска подсети в двоичном виде*/
  sscanf(argv[2],"%d.%d.%d.%d",&y,&z,&v,&m);
 
  memset(o,0,sizeof(w));
  memset(u,0,sizeof(w));
  memset(p,0,sizeof(w));
  memset(x,0,sizeof(w));
 
  for(i=0;i<32;i++)
    {
      o[i]=((y>>i)&1);
      
    }
    for(i=0;i<32;i++)
    {
      u[i]=((z>>i)&1);
      
    }
    for(i=0;i<32;i++)
    {
      p[i]=((v>>i)&1);
      
    }
    for(i=0;i<32;i++)
    {
      x[i]=((m>>i)&1);
      
    }
  
  printf("Маска подсети в двоичном виде: ");
  for(i=31,r=0;i>=0;i--)
    { 
      if((o[i]==1)||(r==1))
    { 
      printf("%d",o[i]);
      r=1;
    }
    }
    printf(".");
    for(i=31,r=0;i>=0;i--)
    { 
      if((u[i]==1)||(r==1))
    { 
      printf("%d",u[i]);
      r=1;
    }
    }
    printf(".");
    for(i=31,r=0;i>=0;i--)
    { 
      if((p[i]==1)||(r==1))
    { 
      printf("%d",p[i]);
      r=1;
    }
    }
    printf(".");
    for(i=31,r=0;i>=0;i--)
    { 
      if((x[i]==1)||(r==1))
    { 
      printf("%d",x[i]);
      r=1;
    }
    }
 
  puts("");
  getchar();
  exit(0);
}
если используем
./rgr 192.168.1.1 255.255.255.0

IP в двоичном виде 11000000.10101000.1.1
Маска подсети в двоичном виде: 11111111.11111111.11111111.


как бы проглатывая нули. Как можно исправить. И если необходимо полное задание.
C
1
2
3
Вывести в командной строке IP адрес и маску.
Вывести 1)Номер сети 2)Номер узлов сети
 3)Значение маски в 16,2,10-ричном виде в зависимости от аргументов.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.