ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

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

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


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

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

  #882  
Старый 12.12.2008, 18:53
Аватар для Asp1r1n
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..
 
Ответить с цитированием

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

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

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

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

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

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

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

  #885  
Старый 12.12.2008, 21:45
Аватар для HencH_MaN
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;
    }
 
Ответить с цитированием

  #886  
Старый 13.12.2008, 01:26
Аватар для izlesa
izlesa
Участник форума
Регистрация: 03.01.2008
Сообщений: 156
Провел на форуме:
414311

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

2HencH_MaN
Уважай тех к кому обращаешься за помощью. Код, который ты привел, просто нечетабелен. Мне реально влом напрягаться, вчитываясь в эту кашу. Раставь нормально отступы, сгруппируй определения и тд. Тебе же самому будет приятно смотреть, на красиво структурированный код.

Да и в чём собственно вопрос?
 
Ответить с цитированием

  #887  
Старый 13.12.2008, 03:12
Аватар для Delimiter
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

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

наверно у него утечка памяти 8))) так активно new использует что даже забыл что есть и delete!
 
Ответить с цитированием

  #888  
Старый 13.12.2008, 11:55
Аватар для N1K70
N1K70
Banned
Регистрация: 02.01.2008
Сообщений: 195
Провел на форуме:
523549

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

задачи на паскале:

Код:
_http://contest.samara.ru/ru/contests/139/
ps: не для слабонервных
 
Ответить с цитированием

  #889  
Старый 13.12.2008, 13:00
Аватар для lisa99
lisa99
Постоянный
Регистрация: 15.07.2008
Сообщений: 444
Провел на форуме:
1417964

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

Цитата:
Сообщение от N1K70  
задачи на паскале:

Код:
_http://contest.samara.ru/ru/contests/139/
ps: не для слабонервных
и что ты этим хотел сказать?
 
Ответить с цитированием

  #890  
Старый 13.12.2008, 21:51
Аватар для HencH_MaN
HencH_MaN
Новичок
Регистрация: 08.02.2008
Сообщений: 19
Провел на форуме:
63941

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

Цитата:
Сообщение от izlesa  
2HencH_MaN
Уважай тех к кому обращаешься за помощью. Код, который ты привел, просто нечетабелен. Мне реально влом напрягаться, вчитываясь в эту кашу. Раставь нормально отступы, сгруппируй определения и тд. Тебе же самому будет приятно смотреть, на красиво структурированный код.

Да и в чём собственно вопрос?
Вопрос в том что упорядочивание не производиться
PHP код:
#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]<minmin=a[i][j];
if (
a[i][j]>maxmax=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;
    } 

Последний раз редактировалось HencH_MaN; 13.12.2008 в 21:53..
 
Ответить с цитированием
Ответ



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



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


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




ANTICHAT.XYZ