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

12.12.2008, 01:34
|
|
Постоянный
Регистрация: 15.07.2008
Сообщений: 444
Провел на форуме: 1417964
Репутация:
665
|
|
Сообщение от 5w17ch3r
Если кто возьмется, icq:455422511
утром напишу (с 9 по м.). поздновато уже......
|
|
|

12.12.2008, 15:18
|
|
Постоянный
Регистрация: 15.07.2008
Сообщений: 444
Провел на форуме: 1417964
Репутация:
665
|
|
Сообщение от 5w17ch3r
Ребят, нужна помощь. Надо написать программу на паскале, который я уже 3 года в глаза не видел... Нужно чтобы программа вычисляла и выводила на экран таблицу значений функции y = система: первое уравнение: sqrt(x^3+2x-1), при x<2; второе уравнение: sqrt^5((1)/(x^2+3x-5)), при x>=2. x принадлежит отрезку [-1;3], шаг изменения 0,05.
Если кто возьмется, icq:455422511
Код:
program zad;
uses CRT;
var x,y: real;
begin
ClrScr;
writeln ('--------------------- Funcktion --------------');
x:=-1;
while x< 3 do begin
if x<2 then
begin
y:=sqr(exp(3*ln(abs(x)))+2*x-1);
end
else
begin
y:=x;
end;
x:=x+0.05;
writeln('y=',y);
end;
end.
мде...сколько спотыкалась. сама все забыла..
В общем, вторую функцию скорректируй. Замени на свою, мне не понравилась твоя запись.
|
|
|

12.12.2008, 01:56
|
|
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме: 1027635
Репутация:
234
|
|
Alexandr II
вот, набросал перед сном:
PHP код:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct Bus
{
int BusNumber;
int RouteNumber;
string driver;
};
void ShowList(const vector<Bus> & buses)
{
for (int i = 0; i < buses.size(); i++)
{
cout << "Bus Number: " << buses[i].BusNumber
<< " Route Number: " << buses[i].RouteNumber
<< " Driver name: " << buses[i].driver << "\n";
}
}
int main()
{
vector<Bus> buses;//список автобусов стоящих в парке
char ch;
cout << "Type y for keyboard and n for file\n";
cin >> ch;
if(ch == 'y')
{
cout << "Enter a number of buses!\n";
int n;
cin >> n;
Bus temp;
for (int i = 0; i < n; i++)
{
cin >> temp.BusNumber >> temp.RouteNumber >> temp.driver;
buses.push_back(temp);
}
}
else
if (ch == 'n')
{
freopen("input.in", "r", stdin);
int n;
cin >> n;
Bus temp;
for (int i = 0; i < n; i++)
{
cin >> temp.BusNumber >> temp.RouteNumber >> temp.driver;
buses.push_back(temp);
}
}
else
{
cout << "Error!\n";
return 0;
}
ShowList(buses);
vector<Bus> inroute; // список автобусов отправившихся в далёкий путь
int num;
cout << "Enter a bus number:\n";
cin >> num;
for (int i = 0; i < buses.size(); i++)
{
if(buses[i].BusNumber == num)
{
inroute.push_back(buses[i]);
buses.erase(buses.begin()+i);
}
}
ShowList(inroute);
cin.get();
cin.get();
ShowList(buses);
cin.get();
cin.get();
return 0;
}
|
|
|

12.12.2008, 02:12
|
|
Banned
Регистрация: 04.06.2008
Сообщений: 402
Провел на форуме: 2267346
Репутация:
719
|
|
Нужно реализовать алгоритм Хаффмана на Pascal-е
Об алгоритме Хаффмана
вот что есть. знаю, что надо перекроить сильно =))
хэлп ми если кому не очень трудно
Код:
program haffman;
USES CRT;
Label link1;
Var S, R:array[1..7] of integer; {начальный массив и упорядоченный}
wordshifr:array[1..10] of string;
{шифрованное двоичным кодом слово}
stroka, st, word:string;
{stroka - то что вводим, st - путь, word - слово для шифрования}
f:file;
z, x, c, v, b, n, m, def:Char;
{символы алфавита, def - символ, который читается из заданной строки. для сравнения с символами данного алфавита}
n1, n2, n3, n4, n5, n6, n7, symbol: integer;
{количество символов, symbol - меняется в цикле для записи количества символов }
shag, min:integer;
{счетчик шагов цикла, min - минимальное число в начальном массиве}
z1, x1, c1, v1, b1 ,n1 ,m1:string;
{двоичные коды символов}
begin
ClrScr;
{объявляем переменные}
z:=z;
x:=x;
c:=c;
v:=v;
b:=b;
n:=n;
m:=m;
n1:=0;
n2:=0;
n3:=0;
n4:=0;
n5:=0;
n6:=0;
n7:=0;
{считаем строку для составления алгоритма Хаффмана}
write('vvedite stroku iz bukv z,x,c,v,b,n,m');
readln(stroka);
{укажем файл}
write('ukajite put k failu i ego imya -');
readln(st);
Assign(f, st);
rewrite(f);
write(f, stroka);
{посчитаем количество каждого из 7 символов}
while not eof(f) do
begin
read(f,def);
if def=z then n1:=n1 + 1;
if def=x then n1:=n2 + 1;
if def=c then n1:=n3 + 1;
if def=v then n1:=n4 + 1;
if def=b then n1:=n5 + 1;
if def=n then n1:=n6 + 1;
if def=m then n1:=n7 + 1;
end;
close(f);
{запишем в первый массив все полученные количества символов}
symbol:=n1;
{объявим symbol = n1 , чтобы записать количество символов Z в первую ячейку}
link1:
for shag:=1 to 7 do
begin
S[shag]:=symbol;
if symbol=n1 then symbol:=n2;
GOTO link1;
if symbol=n2 then symbol:=n3;
GOTO link1;
if symbol=n3 then symbol:=n4;
GOTO link1;
if symbol=n4 then symbol:=n5;
GOTO link1;
if symbol=n5 then symbol:=n6;
GOTO link1;
if symbol=n6 then symbol:=n7;
GOTO link1;
if symbol=n7 then symbol:=n7;
end;
{получили массив, заполненный целыми числами = количеству каждого символа в строке}
{перенесем элементы массива в порядке убывания}
for shag:=1 to 7 do begin
while (shag+1)<=7 do
begin
If S[shag]<S[shag+1] then min:=S[shag];
end;
R[8-shag]:=min;
end;
z1:="0";
x1:="10";
c1:="110";
v1:="1110";
b1:="11110";
n1:="111110";
m1:="1111111";
{получили коды символов}
write('napishite slovo, sostoyachee iz bukv alfavita, chtobi zashifrovat ego - ');
Readln(word);
Assign(f, 'C:\811\recent.txt');
rewrite(f);
write(f, word);
{шифруем слово}
shag:=1;
while not eof(f) do
begin
read(f,def);
if def=z then wordshifr[shag]:=z1;
if def=x then wordshifr[shag]:=x1;
if def=c then wordshifr[shag]:=c1;
if def=v then wordshifr[shag]:=v1;
if def=b then wordshifr[shag]:=b1;
if def=n then wordshifr[shag]:=n1;
if def=m then wordshifr[shag]:=m1;
shag:=shag+1;
end;
close(f);
write('slovo ',word,'zashifrovano! rezultat - ');
writeln(wordshifr);
end.
еще есть вот такое
Код:
program huffman;
const sb=256;
type obr=record
vl:longint;
len:byte
end;
var a:array[0..511]of longint;
b:array[byte]of word;
c:array[0..1,byte]of word;
st:array[byte]of byte;
j,obc:byte;
f,g:file;
obb,size:longint;
brp,brm,bwp:word;
bufr,bufw:array[0..sb-1]of byte;
reof:boolean;
o:array[byte]of obr;
procedure opget(var f:file;s:string);
begin
assign(f,s);
reset(f,1);
blockread(f,bufr,sb,brm)
end;
procedure init;
begin
brp:=0;
brm:=0;
bwp:=0;
obb:=0;
obc:=0;
reof:=false
end;
procedure putc(var f:file;b:byte);
begin
if bwp=sb then begin blockwrite(f,bufw,sb); bwp:=0 end;
bufw[bwp]:=b;
inc(bwp)
end;
procedure clput(var f:file);
begin
putc(f,obb shr 24);
blockwrite(f,bufw,bwp);
close(f)
end;
procedure out(var out:file;ch:byte);
var glk:byte;
begin
obb:=obb or o[ch].vl shl (32-o[ch].len-obc);
inc(obc,o[ch].len);
while obc>=8 do begin
glk:=obb shr 24;
putc(out,glk);
obb:=obb shl 8;
dec(obc,8)
end
end;
procedure sift(l,r:word);
var i,j,x:word;
begin
i:=l; j:=l+l+1; x:=b[l];
if (j<r)and(a[b[j]]>a[b[j+1]])then inc(j);
while (j<=r)and(a[x]>=a[b[j]])do begin
b[i]:=b[j]; i:=j; j:=j+j+1;
if (j<r)and(a[b[j]]>a[b[j+1]])then inc(j)
end;
b[i]:=x
end;
procedure obh(i:word;p:byte);
begin
if i<256 then begin
o[i].len:=p;
o[i].vl:=0;
for j:=0 to p-1 do o[i].vl:=o[i].vl shl 1+st[j]
end
else begin
st[p]:=0;
obh(c[0,i-256],p+1);
st[p]:=1;
obh(c[1,i-256],p+1)
end
end;
procedure build;
var i,p:word;
begin
for i:=0 to 255 do b[i]:=i;
for i:=127 downto 0 do sift(i,255);
p:=0;
for i:=255 downto 1 do begin
c[0,p]:=b[0];
b[0]:=b[i];
sift(0,i-1);
c[1,p]:=b[0];
b[0]:=p+256;
a[p+256]:=a[c[0,p]]+a[c[1,p]];
sift(0,i-1);
inc(p)
end;
obh(p+255,0)
end;
procedure getc(var f:file);
var ch:byte;
begin
ch:=bufr[brp];
out(g,ch);
inc(a[ch]);
inc(brp);
if brp=brm then begin
if eof(f) then reof:=true else build;
blockread(f,bufr,sb,brm); brp:=0
end
end;
begin
init;
opget(f,paramstr(1));
size:=filesize(f);
assign(g,'test.glk');
rewrite(g,1);
blockwrite(g,size,4);
for j:=0 to 255 do a[j]:=1;
build;
while not reof do getc(f);
clput(g)
end.
что нужно:
считать строку символов, состоящую из 5 букв (алфавит), посчитать вероятность каждой появления каждой буквы, создать динамическое дерево, которое присваивает двоичный код каждому символу.
не откажусь и от просто частичных фрагментов, думаю смогу разобраться. прост еще не прошли динамические указатели
кто поможет благодарность и небольшой денежный бонус ( щас не при деньгах  )
|
|
|

12.12.2008, 02:53
|
|
Постоянный
Регистрация: 28.12.2007
Сообщений: 804
Провел на форуме: 4861890
Репутация:
1400
|
|
Сообщение от jawbreaker
Alexandr II
вот, набросал перед сном:
спс большое  спас 
|
|
|

12.12.2008, 16:19
|
|
Новичок
Регистрация: 07.11.2006
Сообщений: 20
Провел на форуме: 299123
Репутация:
3
|
|
Нужно вычислить интеграл методом трапеций путем создания цикла подпроцессов, которые моделируют работу виртуальных процессоров при их асинхронному параллельном выполнении в виде цикла создания подпроцессов.
Короче полная засада, как решить все ето на делфи не знаю.... Помогите кто может.
аська: 4пять879236четыре
Последний раз редактировалось xaldey; 12.12.2008 в 16:24..
|
|
|

12.12.2008, 18:53
|
|
Познающий
Регистрация: 10.11.2006
Сообщений: 57
Провел на форуме: 456672
Репутация:
20
|
|
Задача: найти все перестановки целого числа длинной n. Вот мой алгоритм.
PHP код:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *out;
int data[10]; //10 элементов будет досточно
int n; //кол-во элементов для перестановок
int tmp, min;
int invert;//номер элемента для перестановки
int i, j; //счетчики
int scrambling=0; //кол-во записей
bool go=true;//true-продолжить вычисления, false - остановиться.;
char inbuf[2];
start:
printf("Enter the number(1-9): ");
gets(inbuf);
sscanf(inbuf,"%d",&n); //ввод числа с клавиатуры
if(n<1||n>9) //проверка на введенное число
{
printf("Error!!\n");
goto start;
}
out=fopen("output.txt", "w");
//n=4;
for (i = 0; i < n; i++) //заполняем массив
{
data[i] = i+1;
}
while (go)
{
go = false;
for (i =0; i < n; i++)
{
printf("%d", data[i]); //вывод на экран массива т.е. одной строчки.
fprintf(out, "%d", data[i]);
}
scrambling++;//Количество перестановок увеличилось на единицу.
if(n==1) //если n единица, то выход из цикла.
{
printf("\n");
fprintf(out, "%d", data[i]);
break;
}
/* 1. Двигаемся с предпоследнего элемента перестановки, ищем элемент data[i],
удовлетворяющий неравенству data[i] < data[i + 1] */
for (i = n - 2; i>= 0; i--) //перебираем возможные перестановки
{
if (data[i] < data[i + 1]) //если ни разу не выполяентся, то go останется false,
{
invert=i; //номер элемента, который будем переставлять
go = true;
break;
}
}
if(go==false){break;};
printf("\n");
fprintf(out, "\n");
/* 2. Меняем местами элемент data[invert] с наименьшим элементом, который:
находится праве data[invert] и является больше чем data[invert] */
for (i=invert+1; i<n; i++)
{
if(data[invert]<data[i]){min=i;}
}
tmp=data[invert];
data[invert] = data[min];
data[min] = tmp;
/* 3. Все элементы стоящие правее data[invert] сортируем по возрастанию*/
/*Сортировка пузырьковым методом*/
for (j=invert+1;j<n; j++)
{
for(i=invert+1;i<n-1;i++)
{
if(data[i]>data[i+1])
{
tmp=data[i];
data[i]=data[i+1];
data[i+1]=tmp;
}
}
}
}
printf("\n\nScrambling=%d\n",scrambling);
fclose(out);
system("PAUSE");
return 0;
}
Преподаватель попросил усовершенствовать его, а именно обезопаситься от одинаковых значений (хотя и так понятно, что их там нет), а так же подтворить, что все вариантов перестановок больше нет.
Мои идеи по этому поводу. Перестановок может быть N!, а значит что если N! будет равно scrambling, то перестановок именно нужное кол-во. Препод сказал следующее, а вдруг встретятся одинаковые перестановки, тогда scrambling не будет равно N!.
Что касается одинаковых строчек, можно каждый раз перед выводом(записью) новой строки сравнивать ее со всеми предыдущими из файла, на сколько это угробит скорость работы?
Помогите идеями с этими двумя вопросам. Реализация не обязательно, хотя не откажусь.
Если у вас имеется другие алгоритмы для данной задачи, то хотел бы увидеть их тоже. Тема должна быть близка вам (генераторы паролей, icq номеров и т.п.)
Спасибо за внимание.
Последний раз редактировалось Asp1r1n; 12.12.2008 в 19:13..
|
|
|

12.12.2008, 20:47
|
|
Постоянный
Регистрация: 15.07.2008
Сообщений: 444
Провел на форуме: 1417964
Репутация:
665
|
|
2Asp1r1n:
не стоит задавать исходный массив, как упорядоченную последовательность
1,2,3,4.
Тестировать лучше на рэндомных числах.
Особенно, когда идет привязка к сортировке по возрастанию
п.с. формально препод абсолютно прав.
|
|
|

12.12.2008, 21:09
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
2 Asp1r1n
все перестановки элементов массива у которых элементы могут совпадать
не является тривиальной задачей
например 11111 существуеет одна единственная перестановка а не 5! 8))
...
если необходимо найти общее количество перестановок то математически
находится
G=N!
Total=G-F
где F - это всевозможные перестановки одинаковых!
|
|
|

12.12.2008, 21:45
|
|
Новичок
Регистрация: 08.02.2008
Сообщений: 19
Провел на форуме: 63941
Репутация:
0
|
|
Посмотрите плз код вот что я написал для своей лабы!!!!
18. Написать программу, которая находит в каждой строке матрицы F размерности m n максимальный и минимальный элементы и помещает их на место первого и последнего элемента строки соответственно.
Код:
#include<iostream>
#include<alloc.h>
#include<conio.h>
using namespace std;
int main()
{
int i,j,x;
cout<<endl<<"m=";
int m;
cin>>m;
cout<<endl<<"n=";
int n;
cin>>n;
if(m<1||n<1) return -1;
double**a=new double*[m];
for(i=0;i<m;i++)
{
a[i]=new double[n];
for(int j=0;j<n;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
}
int k;
int*b=new int[m];
int min,l;
i=0;x=0;
while(i<m)
{
int min=a[i][0],max=a[i][0],l;
for(int j=1;j<n;++j)
{
if (a[i][j]<min) min=a[i][j];
if (a[i][j]>max) max=a[i][j];
}
l=(2*m-i);
b[l]=max;
b[i]=min;
++i;
}
int p;
for (p=0;p<m;p++){
cout<<"b["<<p<<"]="<<b[p];}
getch ();
return 0;
}
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|