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

28.04.2009, 08:16
|
|
Познающий
Регистрация: 09.03.2009
Сообщений: 43
Провел на форуме: 549532
Репутация:
53
|
|
подскажите пожалуйста как расположить эти вершины(точки) в окружнсть
Код:
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>
// структура "точка"
struct Scoord
{
double x;
double y;
};
const int LMAX=0, RMAX=30, TMAX=24, BMAX=0;
int N;
double Smin; // сюда запишем минимальную сумму
int *minPath; // здесь будет минимальный путь
double **matr; // матрица, где будем хранить длины ребер
Scoord *mas; // массив точек
// рекурсивная функция для поиска пути.
// принимает указатель на текущий путь (который формируется с каждым вызовом)
// порядковый номер текущей вершины и текущую сумму ребер
void getMinPath(int *tekPath, int tek, double tekS)
{
if(tek==N) // если перебрали все вершины
{
if(tekS<Smin || Smin==0) // и если текущая сумма меньше той, которую запомнили
{
Smin = tekS; // запоминаем
for(int j=0; j<N; j++)
minPath[j] = tekPath[j]; // и запоминаем путь
}
return;
}
// иначе...
bool b;
for(int i=0; i<N; i++) // перебираем все вершины
{
b = false;
for(int j=0; j<tek; j++) // смотрим, нет ли текущей вершины в уже сформировавшемся пути
if(tekPath[j]==i) b=true; // если есть, ставим флаг
if(b) continue; // если флаг установлен, пропускаем вершину и берем следующую
tekPath[tek] = i; // добавляем вершину к пути
getMinPath(tekPath, tek+1, tekS+matr[tekPath[tek-1]][i]); // и ищем следующую вершину
}
}
//-----------
// функция для заполнения матрицы
// принимает указатель на матрицу
void fillMatr(double **matr)
{
int i,j;
double dlina;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(j==i) continue;
else
{ // для двух разных вершин считаем длину ребра
dlina = sqrt(pow(mas[i].x-mas[j].x,2)+pow(mas[i].y-mas[j].y,2));
if(dlina<matr[i][j] || matr[i][j]==0)
matr[i][j] = dlina;
}
}
//----------------------
int main()
{
int i,j;
int *tekPath;
srand(time(NULL));
printf("Vvedite kolichestvo vershyn: ");
scanf("%d",&N);
// выделяем память под массив вершин
mas = new Scoord[N];
for(i=0;i<N;i++)
{
// разбрасываем точки
mas[i].x = x*sin(pi*i/n);
mas[i].y = y*cos(pi*i/n);
printf("To4ka %d: %5.3lf %5.3lf\n",i,mas[i].x,mas[i].y);
}
printf("\n");
//==================
// выделяем память под матрицу
matr = new double*[N];
for(i=0;i<N;i++)
matr[i] = new double[N];
// память под минимальный и текущий пути
tekPath = new int[N];
minPath = new int[N];
Smin = 0;
for(i=0; i<N;i++)
for(j=0;j<N;j++)
matr[i][j] = 0;
fillMatr(matr); // заполняем матрицу
// ищем минимальный путь
for(i=0; i<N; i++) // в цикле перебираем стартовые вершины
{
tekPath[0] = i;
getMinPath(tekPath, 1, 0);
}
printf("\n Minimalnaya summa = %5.3lf\n\n",Smin);
printf("derevo:\n");
printf("%d",minPath[0]);
for(i=1;i<N;i++)
printf(" -> %d",minPath[i]);
printf("\n");
for(i=0;i<N;i++)
delete[] matr[i];
delete[] matr;
delete mas;
delete[] minPath;
delete[] tekPath;
getch();
return 0;
}
|
|
|

28.04.2009, 13:17
|
|
Познающий
Регистрация: 13.12.2007
Сообщений: 56
Провел на форуме: 469345
Репутация:
51
|
|
Помогите, пожалуйста, разработать программу нахождения значения определенного интеграла методом Симпсона (на паскале).
Вот, собственно, функция для интегрирования:
y=log3(внизу)х (х+х^2)^-1 .
Исходные данные: интервал интегрирования, количество разбиений отрезка.
Результат нужно получить такой: значение интеграла, график заданной функции.
Решение интерпретировать графически (автоматическое масштабирование, название графика, метки на осях и обозначение осей).
Также нужно предусмотреть переключение между графическим и текстовым окнами для ввода исходной информации и вывода результатов интегрирования и графической интерпретации. И предусмотреть проверку корректности данных.
Последний раз редактировалось SHAXID; 29.04.2009 в 13:01..
|
|
|

28.04.2009, 13:31
|
|
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
Провел на форуме: 1740746
Репутация:
435
|
|
Взятие интеграла методом Симпсона
A, B - интервал интегрирования
N - число точек на интервале
Func - функция, от которой берется интеграл.
Возвращаемое значение - значение интеграла
PS: сделано на Delphi (указывайте среду программирования)
PHP код:
type
TFunction = function(X: Extended; Arg: Pointer): Extended;
function Simpson(A, B: Extended; N: Cardinal; Func: TFunction; Arg: Pointer):
Extended;
var
h: Extended;
X: Extended;
K: Extended;
I: Integer;
begin
Assert(N > 0);
h := 0.5 * (B - A) / N;
Result := Func(A, Arg);
X := A + h;
for I := 1 to 2 * N - 1 do
begin
if I mod 2 = 0 then
K := 2
else
K := 4;
Result := Result + K * Func(X, Arg);
X := X + h;
end;
Result := Result + Func(B, Arg);
Result := h * Result / 3;
end;
|
|
|

28.04.2009, 13:53
|
|
Участник форума
Регистрация: 14.01.2006
Сообщений: 242
Провел на форуме: 2630617
Репутация:
245
|
|
На уроке с системного програмирования мне задали зделать лабу. Задание Розроботать програму для передачи сообщения через локальную сеть с интерфейсом. Лаба должна усуществляца на
Borland C++.
Могу сказать что нужно только строка для ввода айпи строка для сообщения и кнопка отправки.
Буду очень рад.
|
|
|

28.04.2009, 14:15
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
На уроке с системного програмирования мне задали зделать лабу. Задание Розроботать програму для передачи сообщения через локальную сеть с интерфейсом. Лаба должна усуществляца на
Borland C++.
Могу сказать что нужно только строка для ввода айпи строка для сообщения и кнопка отправки.
Буду очень рад.
когда уже научитесь гуглом пользоватся?
копай в сторону winsock api
|
|
|

28.04.2009, 20:52
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме: 3134311
Репутация:
1467
|
|
Сообщение от ViP-K1LLeR
Сегодня дали такую задачу(pascal):
P.S: Требования выносят мозг. Помогите пожалуйста
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
vector_type = record
x,y,scal:extended;
end;
vector_array=array[1..100] of vector_type;
var
a,b:extended;
vectors:vector_array;
function Scalar(x1,y1,x2,y2: extended):extended;
begin
Scalar:=x1*x2+y1*y2;
end;
procedure ReadFromFile(var res:vector_array);
var
i:byte;
begin
i:=1;
reset(input,'points.dat');
while (i<=100) and (not Eof(input)) do begin
read(res[i].x);
readln(res[i].y);
inc(i);
end;
close(input);
end;
procedure FindScalar(a,b:extended; var res:vector_array);
var
i:byte;
begin
for i:=1 to 100 do begin
res[i].scal:=Scalar(a,b,res[i].x,res[i].y);
end;
end;
procedure Sort(var res:vector_array);
var
i,l:byte;
tmp:extended;
begin
for i := 99 downto 1 do begin
for l := 1 to i do
if res[l].scal>res[l+1].scal then begin
tmp:= res[l].scal;
res[l].scal:= res[l+1].scal;
res[l+1].scal:= tmp;
tmp:= res[l].x;
res[l].x:= res[l+1].x;
res[l+1].x:= tmp;
tmp:= res[l].y;
res[l].y:= res[l+1].y;
res[l+1].y:= tmp;
end;
end;
end;
procedure WriteToFile(res:vector_array);
var
i:byte;
begin
rewrite(output,'points1.dat');
for i := 1 to 100 do begin
writeln(res[i].x,' ',res[i].y);
end;
close(output);
end;
begin
writeln('Enter A component value...');
readln(a);
writeln('Enter B component value...');
readln(b);
ReadFromFile(vectors);
FindScalar(a,b,vectors);
Sort(vectors);
WriteToFile(vectors);
{ TODO -oUser -cConsole Main : Insert code here }
end.
Это на дельфи,
тебе придётся слегка подправить запись и чтение из файла, просто вроде в паскале нельзя так обращаться легко как в дельфи, но это буквально вроде минут на 5 должно быть
Последний раз редактировалось KaZ@NoVa; 28.04.2009 в 20:54..
|
|
|

29.04.2009, 09:51
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме: 3134311
Репутация:
1467
|
|
Сообщение от Micr0b
На уроке с системного програмирования мне задали зделать лабу. Задание Розроботать програму для передачи сообщения через локальную сеть с интерфейсом. Лаба должна усуществляца на
Borland C++.
Могу сказать что нужно только строка для ввода айпи строка для сообщения и кнопка отправки.
Буду очень рад.
На Borland C++ её делать это несколько неправильно на Buildere еще можно договориться. на делфе есть такая же готовая!!!!!
|
|
|

29.04.2009, 13:01
|
|
Познающий
Регистрация: 13.12.2007
Сообщений: 56
Провел на форуме: 469345
Репутация:
51
|
|
Сообщение от Flame of Soul
Взятие интеграла методом Симпсона
A, B - интервал интегрирования
N - число точек на интервале
Func - функция, от которой берется интеграл.
Возвращаемое значение - значение интеграла
PS: сделано на Delphi (указывайте среду программирования)
оу, ссори, на паскале нужн 
|
|
|

29.04.2009, 13:40
|
|
Новичок
Регистрация: 28.04.2009
Сообщений: 4
Провел на форуме: 13469
Репутация:
0
|
|
Добрый день, вот задали 2 задачки
Условие
Найти значение переменной у после выполнения программы на языке Pascal.
и еще вот эту:
Найти значение выражение Fun(6), вычисленное при обращении к функциям в программе,написанной на языке Pascal
function fun(n: integer): integer;
begin
if n=0 then fun:=1
else fun:=n*fun(n-1)-2
end;
Пожалуста объясните как решать,очень нужно 
|
|
|

29.04.2009, 13:52
|
|
Участник форума
Регистрация: 26.11.2008
Сообщений: 158
Провел на форуме: 2816163
Репутация:
158
|
|
Самое простое это скомпилировать код и посмотреть на результат.
В первом примере смысл такой:
в цикле проверяем строку х(БАРАН), если встречаем символ 'A' то заносим в строку у 0А, иначе в у заносим символ содерж в х на i-ом месте.
В результате выполнения у='БОАРОАН'
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|