Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

06.06.2008, 18:21
|
|
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме: 422909
Репутация:
200
|
|
2Catsy
помогите пожалуйста
(паскаль)
1) сумма с точностью
Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых
2) рекурсия
Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых
Вычисление выражения под знаком суммы выполнить через рекурсию.
Эх студент...
Код:
var
Sx,e:real;
x:integer;
k:word;
function Factorial(n: Word): Int64;
var
f: Int64;
i: Integer;
begin
f := 1;
for i := 2 to n do
f := f * i;
Factorial := f;
end;
function Degree(x: real;y:word): real;
begin
if (x=0) then begin
Degree:=0;
end
else begin
Degree:=Exp(y*Ln(abs(x)));
if (x<0) and (y mod 2<>0) then begin
Degree:=(-1)*Exp(y*Ln(abs(x)));
end;
end;
end;
function RecursiveSum(x:integer;e:real):real;
begin
sx:=sx+(Degree((-1),k)*Degree((x/2),2*k+1))/(Factorial(k)*Factorial(k+1));
if Abs(Sx)<e then
RecursiveSum(x,e);
RecursiveSum:=Sx;
end;
begin
ClrScr;
Sx:=0;
k:=0;
write('Vvedite x (x!=0) : ');readln(x);
write('Vvedite e (e>0) : ');readln(e);
if (e<=0) or (x=0) then
begin
writeln('Error!');
writeln('Press any key to exit...');
readln;
exit;
end;
writeln('****************************');
writeln('1) Summa s tochnostju e:');
writeln;
while abs(Sx)<e do
begin
sx:=sx+(Degree(-1,k)*Degree(x,4*k+1))/(Factorial(2*k)*(4*k+1));
k:=k+1;
end;
writeln(Sx);
writeln;
writeln('****************************');
writeln('2) Recursiya s tochnostju e:');
writeln;
Sx:=0;
k:=0;
Sx:=RecursiveSum(x,e);
Writeln(Sx);
writeln;
readln;
|
|
|

07.06.2008, 10:57
|
|
Постоянный
Регистрация: 22.03.2008
Сообщений: 325
Провел на форуме: 1208132
Репутация:
63
|
|
Плиз помогите ... .На СИ+
Разработать программу, оперирующую элементами. Способы динамического представления элементов,
Элементы реализуются структурами (struct).
Обработка исключительных ситуаций обязательна. (Можно и без неё)
=>
2. Очередь
Операции:
включение элемента;
исключение элемента;
просмотр элемента, находящегося в начале очереди;
поиск элемента по заданному значению;
просмотр всего содержимого.
=>многочлены (тип – double).
|
|
|

07.06.2008, 13:55
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
>>Очередь
Операции:
включение элемента;
исключение элемента;
просмотр элемента, находящегося в начале очереди;
поиск элемента по заданному значению;
просмотр всего содержимого.
=>многочлены (тип – double). <<
Все это довольно просто реализуется средствами STL
|
|
|

07.06.2008, 15:03
|
|
Постоянный
Регистрация: 22.03.2008
Сообщений: 325
Провел на форуме: 1208132
Репутация:
63
|
|
612... .
Я понимаю.. .Обминяю на скрипт ПХП+MySQL_)
Но тем неменее нимогу реализовать ,((
|
|
|

07.06.2008, 22:11
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
счас придумаем чиво нидь 8) .... скрипты не нужны плюсуйте!
Код:
struct spelem
{
int flag; //-1=net elementa 1=srednii element 2=poslednii
long znach;
char *p_prev; // ukazatel na prediduschii
char *p_next; // ukazatel na sleduiuschii
};
struct mspis
{
int flag;
spelem first;
};
mspis my_spisok;
void add_elem(long znach)
{
spelem *elem;
spelem *p;
int i;
if(my_spisok.first.flag==-1)
{
my_spisok.first.flag=2;
my_spisok.first.znach=znach;
}
else
{
for(elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
i++;
elem->flag=1;
p=new spelem;
elem->p_next=(char *)p;
p->flag=2;
p->p_prev=(char *)elem;
p->znach=znach;
}
}
void show_all()
{
spelem *elem;
spelem *p;
char buf[30];
for(elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
printf("%d\r\n",elem->znach);
printf("%d\r\n",elem->znach);
}
int find_elem(long znach)
{
spelem *elem;
spelem *p;
char buf[30];
int counter;
for(counter=1,elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
{
if(elem->znach==znach)
return counter;
counter++;
}
if(elem->znach==znach)
return counter;
else
return -1;
}
void delete_elem(int number)
{
spelem *elem;
spelem *p;
spelem *prev;
char buf[30];
int counter;
if(my_spisok.first.flag==2)
my_spisok.first.flag=-1;
else
{
for(counter=1,elem=(spelem *)&(my_spisok.first);elem->flag!=2;elem=(spelem *)(elem->p_next))
{
if(counter==number)
{
prev=(spelem *)(elem->p_prev);
p=(spelem *)(elem->p_next);
prev->p_next=elem->p_next;
p->p_prev=elem->p_prev;
free elem;
}
counter++;
}
if(counter==number)
{
prev=(spelem *)(elem->p_prev);
prev->flag=2;
free elem;
}
}
}
void init_spisok()
{
my_spisok.first.flag=-1;
}
Последний раз редактировалось Delimiter; 08.06.2008 в 00:46..
|
|
|

08.06.2008, 11:45
|
|
Новичок
Регистрация: 07.06.2008
Сообщений: 9
Провел на форуме: 12960
Репутация:
0
|
|
По лабораторной нужно написать сниффер. Сниффер я нашел даже смог его собрать (что для меня уже круто  ) НУжно сделать так что бы сниффер записывал выводимую информацию в лог файл. Спасибо. (Язык Vc++)
Код:
#include <conio.h>
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#define MAX_PACKET_SIZE 0x10000
#define SIO_RCVALL 0x98000001
// Буфер для приёма данных
char Buffer[MAX_PACKET_SIZE]; // 64 Kb
//Структура заголовка IP-пакета
typedef struct IPHeader {
UCHAR iph_verlen; // версия и длина заголовка
UCHAR iph_tos; // тип сервиса
USHORT iph_length; // длина всего пакета
USHORT iph_id; // Идентификация
USHORT iph_offset; // флаги и смещения
UCHAR iph_ttl; // время жизни пакета
UCHAR iph_protocol; // протокол
USHORT iph_xsum; // контрольная сумма
ULONG iph_src; // IP-адрес отправителя
ULONG iph_dest; // IP-адрес назначения
} IPHeader;
char src[10];
char dest[10];
char ds[15];
unsigned short lowbyte;
unsigned short hibyte;
void main()
{
WSADATA wsadata; // Инициализация WinSock.
SOCKET s; // Cлущающий сокет.
char name[128]; // Имя хоста (компьютера).
HOSTENT* phe; // Информация о хосте.
SOCKADDR_IN sa; // Адрес хоста
IN_ADDR sa1; //
unsigned long flag = 1; // Флаг PROMISC Вкл/выкл.
// инициализация
WSAStartup(MAKEWORD(2,2), &wsadata);
s = socket( PF_INET, SOCK_RAW, 0 );
gethostname(name, sizeof(name));
phe = gethostbyname( name );
ZeroMemory( &sa, sizeof(sa) );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));
// Включение promiscuous mode.
ioctlsocket(s, SIO_RCVALL, &flag);
// Бесконечный цикл приёма IP-пакетов.
while( !_kbhit() )
{
int count;
count = recv( s, Buffer, sizeof(Buffer), 0 );
// обработка IP-пакета
if( count >= sizeof(IPHeader) )
{
IPHeader* hdr = (IPHeader *)Buffer;
//Начинаем разбор пакета...
strcpy(src,"Пакет: ");
CharToOem(src,dest);
printf(dest);
// Преобразуем в понятный вид адрес отправителя.
printf("From ");
sa1.s_addr = hdr->iph_src;
printf(inet_ntoa(sa1));
// Преобразуем в понятный вид адрес получателя.
printf(" To ");
sa1.s_addr = hdr->iph_dest;
printf(inet_ntoa(sa1));
// Вычисляем протокол. Полный список этих констант
// содержится в файле winsock2.h
printf(" Prot: ");
if(hdr->iph_protocol == IPPROTO_TCP) printf("TCP ");
if(hdr->iph_protocol == IPPROTO_UDP) printf("UDP ");
if(hdr->iph_protocol == IPPROTO_IP) printf("IP ");
if(hdr->iph_protocol == IPPROTO_ICMP) printf("ICMP ");
if(hdr->iph_protocol == IPPROTO_IGMP) printf("IGMP ");
if(hdr->iph_protocol == IPPROTO_GGP) printf("GGP ");
if(hdr->iph_protocol == IPPROTO_PUP) printf("PUP ");
if(hdr->iph_protocol == IPPROTO_IDP) printf("IDP ");
if(hdr->iph_protocol == IPPROTO_ND) printf("ND ");
if(hdr->iph_protocol == IPPROTO_ICLFXBM) printf("ICLFXBM");
if(hdr->iph_protocol == IPPROTO_ICMPV6) printf("ICMPV6");
if(hdr->iph_protocol == IPPROTO_IPV6) printf("IPv6");
if(hdr->iph_protocol == IPPROTO_RAW) printf("RAW ");
if(hdr->iph_protocol == IPPROTO_MAX) printf("MAX ");
// Вычисляем размер. Так как в сети принят прямой порядок
// байтов, а не обратный, то прийдётся поменять байты местами.
printf("Size: ");
lowbyte = hdr->iph_length>>8;
hibyte = hdr->iph_length<<8;
hibyte = hibyte + lowbyte;
//printf("%s",itoa(hibyte,ds,10));
printf("%u", hibyte);
// Вычисляем время жизни пакета.
printf(" TTL:%s",itoa(hdr->iph_ttl,ds,10));
printf("\n");
}
}
closesocket( s );
WSACleanup();
}
|
|
|

08.06.2008, 14:14
|
|
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме: 379101
Репутация:
136
|
|
Код:
void log_create(char *log_name)
{
FILE *fp;
if ((fp=fopen(log_name, "w+") ==NULL)
{
printf("Не удалось создать файл журнала\n");
exit(1);
}
fprintf(fp, "текст лога\n");
fclose(fp);
}
|
|
|

08.06.2008, 16:49
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
Во-первых это не снифер.... ВЕРНЕЕ это не совсем снифер!
(Отгадай какие пакеты он не будет выводить? Ответ внизу  )
Во вторых НЕПОХЕК(z0mbie код давать с кривой вставкой 8))) ГЛАЗ РЕЖЕТ)!!! множественные сравнения!
Код:
if(hdr->iph_protocol == IPPROTO_TCP) printf("TCP ");
if(hdr->iph_protocol == IPPROTO_UDP) printf("UDP ");
if(hdr->iph_protocol == IPPROTO_IP) printf("IP ");
if(hdr->iph_protocol == IPPROTO_ICMP) printf("ICMP ");
if(hdr->iph_protocol == IPPROTO_IGMP) printf("IGMP ");
if(hdr->iph_protocol == IPPROTO_GGP) printf("GGP ");
if(hdr->iph_protocol == IPPROTO_PUP) printf("PUP ");
if(hdr->iph_protocol == IPPROTO_IDP) printf("IDP ");
if(hdr->iph_protocol == IPPROTO_ND) printf("ND ");
if(hdr->iph_protocol == IPPROTO_ICLFXBM) printf("ICLFXBM");
if(hdr->iph_protocol == IPPROTO_ICMPV6) printf("ICMPV6");
if(hdr->iph_protocol == IPPROTO_IPV6) printf("IPv6");
if(hdr->iph_protocol == IPPROTO_RAW) printf("RAW ");
if(hdr->iph_protocol == IPPROTO_MAX) printf("MAX ");
ХЭК! Если хочешь не пятерку лабу сдать!
Код:
switch(hdr->iph_protocol)
{
case IPPROTO_TCP: printf("TCP "); break;
.........
case IPPROTO_MAX: printf("MAX "); break;
default: printf("UNKNOWN ");
}
В третьих ты упустил мааааааааленький параметр ПОРТ!
Давай угодаю с одного раза .....попробовал но выводится лажа? (порядок байтов - великая сила!)
Ответ... такие програмульки не выводят трафик портов обработчики которых ОТСУТСТВУЮТ!
да и файрволы блокируют в 50-ти случаях из 100 (в зависимости от сетевухи ) исходящий трафик, та же ситуация наблюдается и с мопедами даже в отсутствии файерволофффф!
НО ДЛЯ ЛАБЫ СОЙДЕТ!
Последний раз редактировалось Delimiter; 08.06.2008 в 17:06..
|
|
|

08.06.2008, 22:34
|
|
Познающий
Регистрация: 20.05.2008
Сообщений: 81
Провел на форуме: 224517
Репутация:
32
|
|
ЗАДАНИЕ:
По предлагаемому алгоритму, написать программу:
На Вход подаются: Два УпорядоченныХ множества A и B (МассивЫ).
Нужно проверить, принадлежит A к B или нет. Если да, то 1, нет, то 0.
Выход: да или нет (1 или 0, true или false).
ОПИСАНИЕ АЛГОРИТМА (по нему программу составит нужно):
i:=1; j:=1; // указатели на начало множеств
пока i№ |A|+1 и j№ |B|+1 цикл
если A[i] < B[j] то вернуть 0 и выход // элемент A отсутствует в B
иначе если A[i] > B[j] то j:=j+1 // переход к след. элементу B
иначе // элементы совпали – перейти к следующим
i:=i+1; j:=j+1;
конец если
конец цикла
если i=|A|+1 то вернуть 1 иначе вернуть 0.<
ЧТО Я ДЕЛАЮ:
uses crt;
const n=5;
var a: array [1..n] of integer;
var b: array [1..n] of integer;
var i,j,x,y: integer;
begin
clrscr;
writeln('a[i]');
for i:=1 to n do // солздаем массиив a (множество)
begin // упорядоченное
write('Eneter ',i,' Element : ');
readln(x); a[i]:=x;
end;
writeln; writeln('b[i]');
for i:=1 to n do // солздаем массиив b (множество)
begin // упорядоченное
write('Eneter ',i,' Element : ');
readln(y); b[i]:=y;
end;
i:=1; j:=1; // код, написанный на основе
while (a[i]+1) and (b[i]+1) do //представленнго алгоритма
begin
if a[i] < a[i]+1 then return 0;
else
begin
if a[i] > b[i] then j:=j+1;
else i:=i+1; j:=j+1;
end;
end;
if i:=a[i]+1 then return 1; else return 0;
readkey;
end.
программма не запускается. пишет ошибку 40 в условии цикла while.
естественно, как заработает (если заработает :-( .. ), сделаю, так чтобы после ввода любого массива, он сортировался автоматом. Это чтобы препод, совсем расслабился, просто вбил много цифр, а они на ему отсортировались в упорядоченное множество))))
ПРОШУ ПОМОГИТЕ МНЕ. ПРОГРАММ НЕ РАБОТАЕТ.
ТНКНИТЕ МНЕ НОСОМ, ПОЖАЛУЙСТА. ДВА ДНЯ МУЧАЮСЬ (((
Все таки раздел помощи (я свои наработки даю).
Помогите, ПОЖАЛУЙСТА.
Последний раз редактировалось hoty; 09.06.2008 в 00:58..
|
|
|

09.06.2008, 12:18
|
|
Познающий
Регистрация: 05.03.2007
Сообщений: 99
Провел на форуме: 744734
Репутация:
44
|
|
Всем привет!
Есть код в котором дана матрица 6*6, программа меняет столбцы местами (первый и последний, второй и предпоследний и т.д.), эта часть программы работает хорошо, но у полученой матрицы ещё нужно поставить элементы побочной диагонали по-возрастанию, в этом и нужна помощь.
Код программы:
Код:
program pr7;
uses crt;
const n=6; m=6;
a:array[1..n,1..m] of integer=((0,2,1,2,5,6),
(4,5,7,8,1,8),
(0,6,2,3,3,4),
(5,6,1,9,7,1),
(1,2,3,4,5,6),
(6,5,4,3,2,1));
var i,j,k:integer;
begin
clrscr;
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j],' ');
writeln;
end;
for i:=1 to n do
begin for j:=0 to m-1 do
begin
if j<3 then begin
k:=a[i,j+1];
a[i,j+1]:=a[i,n-j];
a[i,m-j]:=k;
end; end; end;
writeln;
writeln;
for i:=1 to n do begin
for j:=1 to m do write(a[i,j],' ');
writeln;
end;
readkey
end.
Паскаль
|
|
|
|
 |
|
|
Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
|
|
|
|