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  
Старый 12.12.2008, 01:34
lisa99
Постоянный
Регистрация: 15.07.2008
Сообщений: 444
Провел на форуме:
1417964

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

Цитата:
Сообщение от 5w17ch3r  

Если кто возьмется, icq:455422511
утром напишу (с 9 по м.). поздновато уже......
 
Ответить с цитированием

  #2  
Старый 12.12.2008, 15:18
lisa99
Постоянный
Регистрация: 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.
мде...сколько спотыкалась. сама все забыла..
В общем, вторую функцию скорректируй. Замени на свою, мне не понравилась твоя запись.
 
Ответить с цитированием

  #3  
Старый 12.12.2008, 01:56
jawbreaker
Участник форума
Регистрация: 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 0buses.size(); i++)
    {
        
cout << "Bus Number: " << buses[i].BusNumber 
            
<< " Route Number: " << buses[i].RouteNumber
            
<< " Driver name: " << buses[i].driver << "\n";
    }
}

int main()
{
    
vector<Busbuses;//список автобусов стоящих в парке
    
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 0ni++)
        {
            
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 0ni++)
            {
                
cin >> temp.BusNumber >> temp.RouteNumber >> temp.driver;
                
buses.push_back(temp);
            }
        }
        else
        {
            
cout << "Error!\n";
            return 
0;
        }
    
ShowList(buses);
    
    
vector<Businroute// список автобусов отправившихся в далёкий путь
    
int num;
    
cout << "Enter a bus number:\n";
    
cin >> num;
    for (
int i 0buses.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;

 
Ответить с цитированием

  #4  
Старый 12.12.2008, 02:12
P3L3NG
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 букв (алфавит), посчитать вероятность каждой появления каждой буквы, создать динамическое дерево, которое присваивает двоичный код каждому символу.

не откажусь и от просто частичных фрагментов, думаю смогу разобраться. прост еще не прошли динамические указатели

кто поможет благодарность и небольшой денежный бонус ( щас не при деньгах )
 
Ответить с цитированием

  #5  
Старый 12.12.2008, 02:53
Alexandr II
Постоянный
Регистрация: 28.12.2007
Сообщений: 804
Провел на форуме:
4861890

Репутация: 1400


Отправить сообщение для Alexandr II с помощью ICQ
По умолчанию

Цитата:
Сообщение от jawbreaker  
Alexandr II
вот, набросал перед сном:
спс большое спас
 
Ответить с цитированием

  #6  
Старый 12.12.2008, 16:19
xaldey
Новичок
Регистрация: 07.11.2006
Сообщений: 20
Провел на форуме:
299123

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

Нужно вычислить интеграл методом трапеций путем создания цикла подпроцессов, которые моделируют работу виртуальных процессоров при их асинхронному параллельном выполнении в виде цикла создания подпроцессов.


Короче полная засада, как решить все ето на делфи не знаю.... Помогите кто может.
аська: 4пять879236четыре

Последний раз редактировалось xaldey; 12.12.2008 в 16:24..
 
Ответить с цитированием

  #7  
Старый 12.12.2008, 18:53
Asp1r1n
Познающий
Регистрация: 10.11.2006
Сообщений: 57
Провел на форуме:
456672

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

Задача: найти все перестановки целого числа длинной n. Вот мой алгоритм.

PHP код:
#include <stdio.h>
#include <stdlib.h>                
                
int main() 
{
    
FILE *out;
    
int data[10]; //10 элементов будет досточно
    
int n//кол-во элементов для перестановок
    
int tmpmin;
    
int invert;//номер элемента для перестановки
    
int ij//счетчики
    
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 (0ni++) //заполняем массив 
    
{
        
data[i] = i+1;
    }
    
    while (
go
    {
        
go false;
        for (
=0ni++) 
        {
            
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 (2i>= 0i--) //перебираем возможные перестановки
        
{
            if (
data[i] < data[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+1i<ni++)
        {
            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<nj++)
        {
           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..
 
Ответить с цитированием

  #8  
Старый 12.12.2008, 20:47
lisa99
Постоянный
Регистрация: 15.07.2008
Сообщений: 444
Провел на форуме:
1417964

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

2Asp1r1n:
не стоит задавать исходный массив, как упорядоченную последовательность
1,2,3,4.
Тестировать лучше на рэндомных числах.
Особенно, когда идет привязка к сортировке по возрастанию

п.с. формально препод абсолютно прав.
 
Ответить с цитированием

  #9  
Старый 12.12.2008, 21:09
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

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

2 Asp1r1n
все перестановки элементов массива у которых элементы могут совпадать
не является тривиальной задачей
например 11111 существуеет одна единственная перестановка а не 5! 8))
...
если необходимо найти общее количество перестановок то математически
находится
G=N!
Total=G-F
где F - это всевозможные перестановки одинаковых!
 
Ответить с цитированием

  #10  
Старый 12.12.2008, 21:45
HencH_MaN
Новичок
Регистрация: 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;
    }
 
Ответить с цитированием
Ответ



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



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


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




ANTICHAT.XYZ