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

10.06.2008, 16:10
|
|
Познающий
Регистрация: 20.05.2008
Сообщений: 81
Провел на форуме: 224517
Репутация:
32
|
|
--------PASCAL 7.0---------------
Все разобрался.
В программе две процедуры:
1) Заполняет массив, путем ввода цифр.
2) Выводит массив.
Также реализована возможность в теле программы создания и вывода массива через одну (!) строчку.
uses crt;
const n=5; {n-1}
var a,b, x: array [1..n] of integer;
var i,j: integer;
procedure fullmas (var x: array of integer); {procedure for create mas}
begin
writeln('x[i]');
for i:=1 to n do
begin
write('Enter ',i,' Element : '); readln(x[i]);
end;
end;
procedure printf (x: array of integer); {procedure for print mas to display}
begin
writeln('x[i]');
for i:=1 to n do
begin
writeln(i,'Element : ',x[i]);
end;
end;
begin
clrscr;
fullmas(a); {create mas with procedure}
printf (a); {print mas to dislay with procedure}
fullmas(b); {create mas with procedure}
printf (b); {print mas to dislay with procedure}
readkey;
end.
спасибо, всем кто помогал.
Последний раз редактировалось hoty; 10.06.2008 в 18:45..
|
|
|

10.06.2008, 20:26
|
|
Познающий
Регистрация: 20.01.2008
Сообщений: 65
Провел на форуме: 664107
Репутация:
25
|
|
задачка
дан *.cpp файл нужно убратьв нем все коментарии // и /* ----- */ помогите плиз
программа нужна на c++
|
|
|

11.06.2008, 15:19
|
|
Новичок
Регистрация: 07.06.2008
Сообщений: 9
Провел на форуме: 12960
Репутация:
0
|
|
Мда такое ощущение что не видать мне зачета  .
Теперь нужно в сниффер вставить анализатор пакетов, что бы содержимое пакета выводилось в виде 16 и ascii таблиц. Спасибо.
Код:
#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();
}
Зы. Хотелось бы что бы код был вписан в текущий, потомучто сам я никак не спралюсь с этим  . Еще раз спасибо
|
|
|

11.06.2008, 15:48
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
Код:
#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 mytransstr( char *buf,int len,char *dst)
{
int i,k=0;
char prstr[10];
char tstr[10];
char pstr[40];
char dstr[40];
unsigned long m;
strcpy(dst,"");
strcpy(pstr,"");
for(i=0,k=0;i<len;i++)
{
if(*((unsigned char *)(buf+i))<16)
{
strcpy(prstr,"0");
strcat(pstr,".");
}
else
{
strcpy(prstr,"");
sprintf(dstr,"%c",*((unsigned char *)(buf+i)));
strcat(pstr,dstr);
}
m=(long )*((unsigned char *)(buf+i));
ultoa(m,tstr,16);
strcat(prstr,tstr);
strcat(dst,prstr);
strcat(dst," ");
if(k>14)
{
strcat(dst,"\t| ");
strcat(dst,pstr);
strcpy(pstr,"");
strcat(dst,"\r\n");
k=0;
}
else
k++;
}
strcat(dst,"\t| ");
strcat(dst,pstr);
strcat(dst,"\r\n");
strupr(dst);
}
void main()
{
WSADATA wsadata; // Инициализация WinSock.
SOCKET s; // Cлущающий сокет.
char name[128]; // Имя хоста (компьютера).
HOSTENT* phe; // Информация о хосте.
SOCKADDR_IN sa; // Адрес хоста
IN_ADDR sa1; //
unsigned long flag = 1; // Флаг PROMISC Вкл/выкл.
char *place_for; // added !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// инициализация
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) )
{
place_for=new char[count*3]; // added !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
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");
// added !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
mytransstr( Buffer,count,place_for); // дать весь
printf("%s\r\n",place_for); // дамп включая
// заголовок IP
delete[] place_for;
}
}
closesocket( s );
WSACleanup();
}
Последний раз редактировалось Delimiter; 11.06.2008 в 15:55..
|
|
|

11.06.2008, 19:02
|
|
Познающий
Регистрация: 20.01.2008
Сообщений: 65
Провел на форуме: 664107
Репутация:
25
|
|
У кого есть исходники похожих программ на с++ поедлитесь плз с меня плюсы=)
1) решение квадратного уравнения
входные даннные текстовый файл с 3 мя действительными
числами. программа читает имя файла с командной строки
2) найти угол между двумя векторами данные в файле ( размерность векторов, действительные коэфициенты векторов(
угол вывести в градусах
3) дан файл с исходником на убрать все коментарии с него такие как (// и /* */)
4) перевод ссуммы с одной валюты в другую входные данные вывод в виде матрицы. 3 валюты
|
|
|

11.06.2008, 19:31
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
2 xxxxxxxxxxxx (3-я)
Код:
void delete_rem(char *m_path)
{
CFile f;
CFileException e;
char *file_buf;
int fl=0;
long l,i,n;
if(f.Open(m_path,CFile::modeRead,&e))
{
f.SeekToEnd();
l=f.GetPosition();
file_buf=new char[l];
f.SeekToBegin();
l=f.ReadHuge(file_buf,l);
f.Close();
for(i=0;i<l;i++)
{
switch(*(file_buf+i))
{
case 0x0d:
if(fl==1)
{
memmove(file_buf+n,file_buf+i,l-i);
l-=i-n;
i-=i-n;
fl=0;
}
break;
default:
if(i>0)
if(strncmp(file_buf+i-1,"//",2)==0 && fl==0)
{ fl=1; n=i-1;}
else
if(strncmp(file_buf+i-1,"/*",2)==0)
{ fl=2; n=i-1;}
else
if(strncmp(file_buf+i-1,"*/",2)==0)
{
if(fl==2)
{
memmove(file_buf+n,file_buf+i+1,l-i-1);
l-=i-n;
i-=i-n;
fl=0;
}
}
}
}
if(f.Open(m_path,CFile::modeCreate | CFile::modeWrite,&e))
{
f.WriteHuge(file_buf,l-1);
f.Close();
}
delete[] file_buf;
}
}
по поводу остальных задач .... ты должен был давать примеры входных данных в файле, если планируешь что ктото напишет, а если как некоторые думаешь ,что все уже кем то было написано, то Google в руки!
Последний раз редактировалось Delimiter; 11.06.2008 в 23:13..
|
|
|

12.06.2008, 00:56
|
|
Познающий
Регистрация: 20.01.2008
Сообщений: 65
Провел на форуме: 664107
Репутация:
25
|
|
а как реализовать получение входных данных с текстового файла ? к прммеру в блокноте написано 1 3 6 и что бы эти цыфры заганялись в переменные в программе?
|
|
|

12.06.2008, 01:04
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
считывай строку из файла затем из строки тащи числа sscanf -ОМ!
|
|
|

12.06.2008, 17:29
|
|
Познающий
Регистрация: 05.03.2007
Сообщений: 99
Провел на форуме: 744734
Репутация:
44
|
|
Попытался составить программу, но чувствую что делаю не правильно
Задание такое:
Составить программу, предусматривающую чтение исходных данных с дискового файла. Задана числовая матрица. Представить столбцы в порядке возрастания наибольших элементов столбцов.
Я не могу понять, как файлу с набором цифр, загружаемому с компьютера, присвоить значение матрицы (a:array[1..n,1..m] of integer) если ему не надо ничего присваивать, то как дальше с ним работать (искать наибльший элемент в столбцах)?
Хочу загрузить этот файл, каким-то образом объяснить Паскалю что это матрица, а потом уже с помощью циклов искать в столбцах максимальные элементы и переставлять их соответственно.
Заранее всем откликнувшемся спасибо!
Вот что я сам написал:
Код:
program lab2;
uses crt;
const
m=5; n=5;
var a:array[1..n,1..m] of integer;
max,i,j,max,k:integer;
ft:text;
begin
clrscr;
assign(ft,'123.pas');
reset(ft);
max:=-1e20;
for j:=1 to m do
i:=i+1;
if max<a[i,j] then begin max:=a[j];
end;
readkey;
end.
Pascal.
Последний раз редактировалось Mosvit; 12.06.2008 в 17:32..
|
|
|

12.06.2008, 17:32
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Берешь символ - если цифра, записываешь в массив, если пробел, идешь дальше. Берешь символ - если цифра, записываешь в массив, если переход на новую строку, инкрементируешь соответствующий аргумент. И так до конца файла.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|