HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 03.05.2008, 13:11
criz
Постоянный
Регистрация: 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). Не могу понять почему происходит...
 
Ответить с цитированием

  #2  
Старый 03.05.2008, 15:43
da_ff
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме:
413927

Репутация: 71
Отправить сообщение для da_ff с помощью ICQ
По умолчанию

Цитата:
При заполнение вылетает экзепшн(Access violation). Не могу понять почему происходит...
ты память то выделил?
 
Ответить с цитированием

  #3  
Старый 03.05.2008, 15:59
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

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

Цитата:
Сообщение от da_ff  
ты память то выделил?
Для структуры? Извините за глупый вопрос: А как?
 
Ответить с цитированием

  #4  
Старый 03.05.2008, 19:44
Myst
Познающий
Регистрация: 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.
 
Ответить с цитированием

  #5  
Старый 04.05.2008, 10:38
Catsy
Новичок
Регистрация: 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..
 
Ответить с цитированием

  #6  
Старый 05.05.2008, 10:29
WinTREI
Новичок
Регистрация: 14.03.2008
Сообщений: 28
Провел на форуме:
39192

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

Цитата:
Сообщение от Myst  
Ну тогда попробуй так:
спасибо, сдал, всё отлично
новую дали теперь по типизированым файлам:

Дан типизированный файл символов. Все символы цифр записать в конец файла.
De-visible:Уточни задание!

Последний раз редактировалось De-visible; 05.05.2008 в 10:58..
 
Ответить с цитированием

  #7  
Старый 05.05.2008, 13:38
WinTREI
Новичок
Регистрация: 14.03.2008
Сообщений: 28
Провел на форуме:
39192

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

Цитата:
Сообщение от WinTREI  
спасибо, сдал, всё отлично
новую дали теперь по типизированым файлам:

Дан типизированный файл символов. Все символы цифр записать в конец файла.
De-visible:Уточни задание!
Уточняя задание:

дан файл с символов, нужно найти среди символов - символы чисел и вывести их в конец файла.
 
Ответить с цитированием

  #8  
Старый 04.05.2008, 13:05
krypt3r
Познавший АНТИЧАТ
Регистрация: 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.
Условие второй как-то не совсем понял
 
Ответить с цитированием

  #9  
Старый 04.05.2008, 18:49
Catsy
Новичок
Регистрация: 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 и надо определить какие числа из этого отрезка извлекаются нацело(полный квадрат), а какие нет, через функции
вроде так, хотя если чесно сама не очень понимаю
 
Ответить с цитированием

  #10  
Старый 05.05.2008, 06:48
krypt3r
Познавший АНТИЧАТ
Регистрация: 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..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости. Обсуждения. 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



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


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




ANTICHAT.XYZ