ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

03.05.2008, 13:11
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
Помогите найти ошибку в коде:
Код:
typedef struct ip_header {
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;
ULONG iph_dest;
} IPHeader;
Заполняю ИП заголовок:
Код:
ip_hd->iph_verlen = 0x45;
ip_hd->iph_tos = 0x01;
ip_hd->iph_length = htons(40);
ip_hd->iph_id = htons(0x0800);
ip_hd->iph_offset = 0x0;
ip_hd->iph_ttl = 0xff;
ip_hd->iph_protocol = 0x06;
ip_hd->iph_xsum = 0x00;
ip_hd->iph_dest = inet_addr("192.168.0.1");
При заполнение вылетает экзепшн(Access violation). Не могу понять почему происходит... 
|
|
|

03.05.2008, 15:43
|
|
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме: 413927
Репутация:
71
|
|
При заполнение вылетает экзепшн(Access violation). Не могу понять почему происходит...
ты память то выделил?
|
|
|

03.05.2008, 15:59
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
Сообщение от da_ff
ты память то выделил?
Для структуры? Извините за глупый вопрос: А как? 
|
|
|

03.05.2008, 19:44
|
|
Познающий
Регистрация: 22.02.2008
Сообщений: 62
Провел на форуме: 211076
Репутация:
52
|
|
Ну тогда попробуй так:
Код:
program qwer;
var
s:string;
a:char;
infile,outfile:text;
n,m,c,i:integer;
begin
assign(infile,'input.txt');
assign(outfile,'output.txt');
reset(infile);
rewrite(outfile);
repeat
readln(infile,s);
for i:=1 to length(s) do begin
a:=s[i];
case a of
'+':begin
val(Copy(s,1, i-1),m,c);
val(Copy(s,i+1,length(s)-i),n,c);
write(outfile,s+'=');
writeln(outfile,m+n);
end;
'-':begin
val(Copy(s,1, i-1),m,c);
val(Copy(s,i+1,length(s)-i),n,c);
write(outfile,s+'=');
writeln(outfile,m-n);
end ;
'*':begin
val(Copy(s,1, i-1),m,c);
val(Copy(s,i+1,length(s)-i),n,c);
write(outfile,s+'=');
writeln(outfile,m*n);
end ;
'/':begin
val(Copy(s,1, i-1),m,c);
val(Copy(s,i+1,length(s)-i),n,c);
write(outfile,s+'=');
writeln(outfile,m/n:8:2);
end ;
end;
end;
n:=0;
m:=0;
until eof(infile);
close(outfile);
close(infile);
end.
|
|
|

04.05.2008, 10:38
|
|
Новичок
Регистрация: 26.04.2008
Сообщений: 12
Провел на форуме: 7573
Репутация:
2
|
|
помгите с двумя задачками плиз
1) через процедуры:
Составить программу для нахождения чисел из интервала [M, N], имеющих наибольшее количество делителей.
2) через функции:
Дано: натуральное n, целые неотрицательные a1, …, an. Рассмотреть отрезки последовательности a1, …, an (подпоследовательности идущих подряд членов), состоящей полных квадратов. Для проверки использовать функцию primer(a), описанную таким образом, что
.............1, если a – полный квадрат,
primer=
.............0, в противном случае.
De-visible: Реализация на Паскаль...
В следующий раз, не забывайте указать язык программирования, здесь нет телепатов
Последний раз редактировалось De-visible; 04.05.2008 в 12:06..
|
|
|

05.05.2008, 10:29
|
|
Новичок
Регистрация: 14.03.2008
Сообщений: 28
Провел на форуме: 39192
Репутация:
2
|
|
Сообщение от Myst
Ну тогда попробуй так:
спасибо, сдал, всё отлично
новую дали теперь по типизированым файлам:
Дан типизированный файл символов. Все символы цифр записать в конец файла.
De-visible:Уточни задание!
Последний раз редактировалось De-visible; 05.05.2008 в 10:58..
|
|
|

05.05.2008, 13:38
|
|
Новичок
Регистрация: 14.03.2008
Сообщений: 28
Провел на форуме: 39192
Репутация:
2
|
|
Сообщение от WinTREI
спасибо, сдал, всё отлично
новую дали теперь по типизированым файлам:
Дан типизированный файл символов. Все символы цифр записать в конец файла.
De-visible:Уточни задание!
Уточняя задание:
дан файл с символов, нужно найти среди символов - символы чисел и вывести их в конец файла.
|
|
|

04.05.2008, 13:05
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
Catsy, первая задача
Код:
program deliteli;
{Составить программу для нахождения чисел из интервала [M, N],
имеющих наибольшее количество делителей.}
procedure GetCount (x : integer; var count : integer);
{Подсчет кол-ва делителей для каждого числа}
var
i, j : integer;
begin
i := 2;
count := 0;
j := x div 2;
while (i <= j) do begin
if x mod i = 0 then begin
write (i, ' ');
inc (count);
x := x div i;
end else
inc (i);
end;
writeln;
end;
procedure PrintNumbers (x, y : array of integer; count, index : integer);
var
i : integer;
begin
for i := 0 to count - 1 do
if y [i] = index then
writeln (x [i]);
end;
var
n1, n2, i, j, count, max : integer; {Первое, последнее число, счетчики цикла, кол-во делителей, максимальное кол-во делителей}
numbers : array [1..255] of integer; {Массив для чисел}
del_count : array [1..255] of integer; {Массив для количества делителей каждого числа}
begin
write ('Введите первое число n1: ');
readln (n1);
write ('Введите последнее число n2: ');
readln (n2);
count := 0;
max := 0;
j := 1;
for i := n1 to n2 do begin
numbers [j] := i;
write ('Делители числа ', i, ': ');
GetCount (i, count);
del_count [j] := count;
if count > max then
max := count;
writeln ('Количество: ', count);
inc (j);
end;
writeln ('Максимальное число делителей: ', max);
writeln ('Числа, имеющие наибольшее кол-во делителей');
PrintNumbers (numbers, del_count, n2 - n1 + 1, max);
end.
Условие второй как-то не совсем понял 
|
|
|

04.05.2008, 18:49
|
|
Новичок
Регистрация: 26.04.2008
Сообщений: 12
Провел на форуме: 7573
Репутация:
2
|
|
Сообщение от krypt3r
Catsy, первая задача
Условие второй как-то не совсем понял 
первая не правельно работает
она ищет не делители, а множители
пример:
диапозон от 5 до 20
у 20 получается 2 2 5 это явно не делители
должно быть если диапозон от 5 до 20 выдать 2 числа 18 и 20 т.к. у этих 2 чисел наибольшее кол-во делителей одинакого т.е.
у 18 это 2 3 6 и 9
у 20 это 2 4 5 и 10
поидеи не обязательно расписывать все числа нуна такого плана
вводим диапозон и сразу выводит числа с наибольшим кол-во делителей
а то если все расписывать, бред получается если диапозо от 2 до 100 ><
исправьте пожалуйста
по второй задаче:
полный квадрат это которые извлекаются нацело ( ну как я понела)т.е. вводим отрезок а1...аn и надо определить какие числа из этого отрезка извлекаются нацело(полный квадрат), а какие нет, через функции
вроде так, хотя если чесно сама не очень понимаю
|
|
|

05.05.2008, 06:48
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
criz( http://forum.antichat.ru/showpost.php?p=674939&postcount=478), память под структуру выделил? На какой строке спотыкается?
она ищет не делители, а множители
Ыть, если так, то сорри, перепутал - и в том и в другом случае число на делители/множители делится нацело ). Переделать код - раз плюнуть.
должно быть если диапозон от 5 до 20 выдать 2 числа 18 и 20 т.к. у этих 2 чисел наибольшее кол-во делителей одинакого т.е.
у 18 это 2 3 6 и 9
у 20 это 2 4 5 и 10
А 12? 12 - 2 3 4 6, также 4 делителя.
Вывод делителей для каждого числа - это сделано для отладки. Сей код можно закомментировать.
Код в самом деле переделать легко - потратилось 5 сек =) Весь приводить не буду, изменения касаются только процедуры GetCount
Код:
procedure GetCount (x : integer; var count : integer);
{Подсчет кол-ва делителей для каждого числа}
var
i, j : integer;
begin
i := 2;
count := 0;
j := x div 2;
while (i <= j) do begin
if x mod i = 0 then begin
write (i, ' ');
inc (count);
end;
inc (i);
end;
writeln;
end;
Последний раз редактировалось De-visible; 05.05.2008 в 11:19..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|