HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Паскаль РУЛИТ!!!!
  #1  
Старый 04.10.2008, 16:20
vikseriq
Участник форума
Регистрация: 31.07.2008
Сообщений: 207
С нами: 9356941

Репутация: 107
По умолчанию Паскаль РУЛИТ!!!!

Код:
var a:string; i,j:byte;  
begin  	
  readln(a);  	
  for i:=1 to length(a) do  		
   for j:=i to length(a) do begin  			
    if a[i]=a[j] then begin 
     writeln('Odinakovo');  			
     halt;  		        
   end;                 
 end;   
writeln('neodinakovo');  
end .
Это на паскале, ибо си я не знаю на 10, а компилятора под рукой нет. суть уловил, надеюсь.
 
Ответить с цитированием

  #2  
Старый 04.10.2008, 17:38
jawbreaker
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
С нами: 9391926

Репутация: 234
По умолчанию

Как определить есть ли в четырехзначном числе одинаковые цифры???

Код:
#include <stdio.h>

int main()
{
    int a;
    scanf("%d\n", &a);
    int a3 = (a/1000)%10;
    int a2 = (a/100)%10;
    int a1 = (a/10) % 10;
    int a0 = a % 10;
    if((a0 == a1) && (a1 == a2) && (a2 == a3))
        printf("Equal\n");
    else
        printf("Not equal\n");

    return 0;
}
И всё!

Последний раз редактировалось jawbreaker; 04.10.2008 в 17:41..
 
Ответить с цитированием

  #3  
Старый 04.10.2008, 22:08
VIP
Участник форума
Регистрация: 29.12.2004
Сообщений: 105
С нами: 11243422

Репутация: 21
По умолчанию

Цитата:
Сообщение от jawbreaker  
Как определить есть ли в четырехзначном числе одинаковые цифры???

Код:
#include <stdio.h>

int main()
{
    int a;
    scanf("%d\n", &a);
    int a3 = (a/1000)%10;
    int a2 = (a/100)%10;
    int a1 = (a/10) % 10;
    int a0 = a % 10;
    if((a0 == a1) && (a1 == a2) && (a2 == a3))
        printf("Equal\n");
    else
        printf("Not equal\n");

    return 0;
}
И всё!
Гениально! Большое спасибо! Это решение гораздо проще, чем я там мудрил.

Спасибо!
 
Ответить с цитированием

  #4  
Старый 04.10.2008, 19:20
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
С нами: 9746420

Репутация: 119
Exclamation

Всем доброго времени суток. Помогите, плиз, подружить Builder с wpcap'ом
Пытаюсь сделать вывод инфы в Memo-поле. Вот исходник:
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include <winsock.h>
#include <time.h>
#define HAVE_REMOTE
#include "inc/pcap.h"
#include "inc/remote-ext.h"

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma comment(lib,"wpcap.lib")
#pragma comment(lib,"packet.lib")

TForm1 *Form1;
TMemo *Memo1;

typedef struct ip_address{
	u_char byte1;
	u_char byte2;
	u_char byte3;
	u_char byte4;
}ip_address;

/* IPv4 header */
typedef struct ip_header{
	u_char	ver_ihl;		// Version (4 bits) + Internet header length (4 bits)
	u_char	tos;			// Type of service
	u_short tlen;			// Total length
	u_short identification; // Identification
	u_short flags_fo;		// Flags (3 bits) + Fragment offset (13 bits)
	u_char	ttl;			// Time to live
	u_char	proto;			// Protocol
	u_short crc;			// Header checksum
	ip_address	saddr;		// Source address
	ip_address	daddr;		// Destination address
	u_int	op_pad;			// Option + Padding
}ip_header;

/* UDP header*/
typedef struct udp_header{
	u_short sport;			// Source port
	u_short dport;			// Destination port
	u_short len;			// Datagram length
	u_short crc;			// Checksum
}udp_header;

/* prototype of the packet handler */
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
pcap_if_t *alldevs;
pcap_if_t *d;
int inum;
int i=0;
pcap_t *adhandle;
char errbuf[PCAP_ERRBUF_SIZE];
u_int netmask;
char packet_filter[] = "ip and udp";
struct bpf_program fcode;

	/* Retrieve the device list */
	if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
	{
                Memo1->Lines->Add("Error in pcap_findalldevs:" + IntToStr(errbuf));
		exit(1);
	}

	/* Print the list */

	inum = 2;

	/* Jump to the selected adapter */
	for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++);

	/* Open the adapter */
	if ((adhandle= pcap_open(d->name, 65536, PCAP_OPENFLAG_PROMISCUOUS, 1000,  NULL, errbuf)) == NULL)
	{
                Memo1->Lines->Add("Unable to open the adapter.");
		pcap_freealldevs(alldevs);
		exit(1);
	}

	/* Check the link layer. We support only Ethernet for simplicity. */

	if(d->addresses != NULL)
		netmask=((struct sockaddr_in *)(d->addresses->netmask))->sin_addr.S_un.S_addr;
	else
		netmask=0xffffff;
	//compile the filter
	if (pcap_compile(adhandle, &fcode, packet_filter, 1, netmask) <0 )
	{
                Memo1->Lines->Add("Unable to compile the packet filter. Check the syntax.");
		pcap_freealldevs(alldevs);
		exit(-1);
	}

	if (pcap_setfilter(adhandle, &fcode)<0)
	{
                Memo1->Lines->Add("Error setting the filter.");
		pcap_freealldevs(alldevs);
		exit(-1);
	}
	pcap_freealldevs(alldevs);
	pcap_loop(adhandle, 0, packet_handler, NULL);
}

void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
        TForm *Form1;
	ip_header *ih;
	udp_header *uh;
	u_int ip_len;
	u_short sport,dport;

	ih = (ip_header *) (pkt_data + 14); //length of ethernet header

	/* retireve the position of the udp header */
	ip_len = (ih->ver_ihl & 0xf) * 4;
	uh = (udp_header *) ((u_char*)ih + ip_len);

	/* convert from network byte order to host byte order */
	sport = ntohs( uh->sport );
	dport = ntohs( uh->dport );

	/* print ip addresses and udp ports */
        Memo1->Lines->Add(ih->saddr.byte1 + ih->saddr.byte2 + ih->saddr.byte3 + ih->saddr.byte4);
}
//---------------------------------------------------------------------------
При нажатии на Button прога "зависает". Если сделать трассировку (F7/F8), то билдер ругается на
Код:
        Memo1->Lines->Add(ih->saddr.byte1 + ih->saddr.byte2 + ih->saddr.byte3 + ih->saddr.byte4);
В чем ошибка?
 
Ответить с цитированием

  #5  
Старый 04.10.2008, 19:59
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
С нами: 9679872

Репутация: 347
По умолчанию

Цитата:
Сообщение от criz  
... билдер ругается на
Код:
        Memo1->Lines->Add(ih->saddr.byte1 + ih->saddr.byte2 + ih->saddr.byte3 + ih->saddr.byte4);
В чем ошибка?
вроде как Memo1->Lines->Add строку выводит а ты туда пишешь число. Попробуй функцию inet_ntoa, она возвращает IP-адрес в виде ANSIZ строки с точками
 
Ответить с цитированием

  #6  
Старый 04.10.2008, 20:03
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
С нами: 9746420

Репутация: 119
По умолчанию

Цитата:
Сообщение от bons  
вроде как Memo1->Lines->Add строку выводит а ты туда пишешь число. Попробуй функцию inet_ntoa, она возвращает IP-адрес в виде ANSIZ строки с точками
Не. Он в любом случае ругается, даже если я туда строку вставлю...
 
Ответить с цитированием

  #7  
Старый 04.10.2008, 20:57
ronald
Участник форума
Регистрация: 27.03.2008
Сообщений: 288
С нами: 9538880

Репутация: 83
Talking

"Погуглил я и нашёл такую функцию" int main()
 
Ответить с цитированием

  #8  
Старый 04.10.2008, 23:03
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
С нами: 9679872

Репутация: 347
По умолчанию

Цитата:
Сообщение от criz  
приходится много раз на "ОК" нажимать...
тогда попробуй так, рано или поздно получится:

Код:
Memo1->Lines->Add(IntToStr(ih->saddr.byte1)+"."+IntToStr(ih->saddr.byte2)+"." +IntToStr(ih->saddr.byte3)+"."+IntToStr(ih->saddr.byte4));
или так:

Код:
char buf[64];
...
wsprintf(buf, "%u.%u.%u.%u", ih->saddr.byte1,ih->saddr.byte2,ih->saddr.byte3,ih->saddr.byte4);
Memo1->Lines->Add(AnsiString(buf));
или даже так

Код:
Memo1->Lines->Add(AnsiString(inet_ntoa(*(struct in_addr*)&ih->saddr))));

под рукой билдера нет, но что-нить из этого точно должно работать

Последний раз редактировалось bons; 04.10.2008 в 23:23..
 
Ответить с цитированием

  #9  
Старый 04.10.2008, 23:53
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
С нами: 9746420

Репутация: 119
Exclamation

Цитата:
Сообщение от bons  
под рукой билдера нет, но что-нить из этого точно должно работать
При любой операцией с Memo, вылетает эксепшн. ShowMessage() норм работает, выводит мне ИП....
Прошелся еще раз трассировкой заметил одну вещь, очень долго думает над строчкой:
Код:
	pcap_loop(adhandle, 0, packet_handler, NULL);
 
Ответить с цитированием

  #10  
Старый 05.10.2008, 19:27
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
С нами: 9746420

Репутация: 119
По умолчанию

[cleared]
Сделал

Последний раз редактировалось criz; 05.10.2008 в 20:46..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.