Студентам с лабораторными сюда (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 20 Jun 2007.

Thread Status:
Not open for further replies.
  1. Airoman

    Airoman New Member

    Joined:
    9 Dec 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Неужели никто не знает? Выручайте плиз. =\
     
  2. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    2~NeiTRoN~
    А почему ты считаешь, что строка "Слово слово слово,слово" чем то прерывается? Строки (Си-строки) это последовательность ASCII-символов, ограниченная '\0' в конце. Символ пробела и запятой это такие же ASCII символы как и любая гласная-согласная. Так что для подсчёта кол-ва гласных в строке тебе не надо разбирать строку по словам.

    2Airoman
    Та задача, ктр ты выложил к программированию имеет очень опосредованное отношение. Динамическое программирование в этом контексте - это один из разделов Методов Оптимизации. Здесь с ним тебе никто не поможет скорее всего.
     
    #862 izlesa, 10 Dec 2008
    Last edited: 10 Dec 2008
    1 person likes this.
  3. ~NeiTRoN~

    ~NeiTRoN~ Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    64
    Likes Received:
    2
    Reputations:
    0
    А почему тогда код jawbreaker. При вводе aaassdduuiio выводит эту строку и количество гласных:8, а при вводе aaass dduuiio-выводит aaass и количество гласных: 3?Хотя нужно чтобы всеравно вывел 8
     
  4. Airoman

    Airoman New Member

    Joined:
    9 Dec 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Да мне хоть что-то похожее на этот динамический метод. а то я линейно сделал, а это не подходит. Спасайте!!!
     
  5. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    млин, мне проще на Си переделать немного, чем в приплюснотом разбираццо ...

    Code:
     
    
    #include <stdio.h>
    
    char *vowels = "aeiou";
    
    int countvowels(char *s)
    {
        int res = 0;
        int i;
        int j;
        for(i = 0; i < strlen(s); i++)
        {
            for(j = 0; j < strlen(vowels); j++)
    	{
                if (s[i] == vowels[j])
                    res++;
    	}
        }
        return res;
    }
    
    int main()
    {
        char str[100];
        gets(str);
        printf("%s", str);
        printf("\nvowels count : %d", countvowels(str));
        return 0;
    }  
    
    
    всё должно быть в принципе понятно ...
     
  6. jawbreaker

    jawbreaker Elder - Старейшина

    Joined:
    7 Jul 2008
    Messages:
    156
    Likes Received:
    76
    Reputations:
    3
    PHP:
    #include <iostream>
    #include <string>
    #include <sstream>

    using namespace std;

    string vowels "aeiou";

    int countvowels(const strings)
    {
        
    int res 0;
        for(
    int i 0s.length(); i++)
            for(
    int j 0vowels.length(); j++)
                if (
    s[i] == vowels[j])
                    
    res++;

        return 
    res;
    }

    int main()
    {
        
    string a;
        
    getline(cina);
        
    cout << << "\n";
        
    cout << countvowels(a);
        
    cin.get();
        return 
    0;
    }
    так? У cin'a разделитель это пробел, а здесь читается вся строчка до перевода строки.
     
    #866 jawbreaker, 10 Dec 2008
    Last edited: 10 Dec 2008
  7. ~NeiTRoN~

    ~NeiTRoN~ Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    64
    Likes Received:
    2
    Reputations:
    0
    jawbreaker, izlesa спасибо большое!!!!=))
    Единственное непонял как сделать чтобы вводить можно было несколько строк, мнеж как бы надо из нескольких строк выбирать ту в которой больше гласных, но все равно еще раз спс!
     
    #867 ~NeiTRoN~, 10 Dec 2008
    Last edited: 10 Dec 2008
  8. jawbreaker

    jawbreaker Elder - Старейшина

    Joined:
    7 Jul 2008
    Messages:
    156
    Likes Received:
    76
    Reputations:
    3
    PHP:
    #include <iostream>
    #include <string>
    #include <sstream>

    using namespace std;

    string vowels "aeiou";

    int countvowels(const strings)
    {
        
    int res 0;
        for(
    int i 0s.length(); i++)
            for(
    int j 0vowels.length(); j++)
                if (
    s[i] == vowels[j])
                    
    res++;

        return 
    res;
    }

    int main()
    {
        
    string ares;
        
    int max = -1;
        while(
    getline(cina)) // читаем строку пока не встречаем символ перевода строки
        
    {
            if(
    == "end")// end означает конец ввода
            
    break;
            
    cout << << "\n";
            
    cout << countvowels(a) << "\n";
            if (
    countvowels(a) > max)
            {
                
    max countvowels(a);
                
    res a;
            }
        }
        
    cout << max << "\n" << res;
        
    cin.get();
        return 
    0;
    }
     
    1 person likes this.
  9. ~NeiTRoN~

    ~NeiTRoN~ Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    64
    Likes Received:
    2
    Reputations:
    0
    О спс прямо то,что надо!!!=))
     
  10. ~NeiTRoN~

    ~NeiTRoN~ Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    64
    Likes Received:
    2
    Reputations:
    0
    Еще по строкам

    Возник еще вопрос.
    Вот есть код:
    PHP:
    #include<stdio.h>
    #include<string.h>
    #include<conio.h>
    #include<iostream>
    #define YES 1
    #define NO 0
    void main()
    {
    const 
    int m=10;
    char string[m][80],d;
    int n,i,j,beg;
    int inword=NO;
    i=0;
    while (
    gets(string[i])!=NULL)
    i++;
    int k=i;
    printf("\n");
    for(
    i=0;i<k;i++)
    {
        
        
    n=strlen(string[i][j]);
        for(
    j=0;j<=n;j++)
            if(
    string[i]+j)==' ' || string[i]+j=='\0' || string[i]+j==',')
            {if(
    inword==YES)
            {
                
    d=*(string[i]+j-1);
                *(
    string[i]+j-1)=*(string[i]+beg);
                *(
    string[i]+beg)=d;
            }
            
    inword=NO;
            }
            else
                if(
    inword==NO)
                {
    inword=YES;beg=j;}
    }
    for(
    i=0;i<k;i++)
    puts(string[i]);
    getch();
    }
    Поидеи он должен выпонять следующую функцию:Вводится текст не больше 10 строк и не более 80 символов в строке и меняет у каждого слова последнюю букву!Но он почемуто не хочет этого делать=( Кто подскажет в чем косяк в коде???
     
  11. izlesa

    izlesa Elder - Старейшина

    Joined:
    3 Jan 2008
    Messages:
    112
    Likes Received:
    32
    Reputations:
    5
    Ну во первых код в корне неправильный )
    Если мы в string[j] имеем массив строк то, чтото в этом роде [WARNINGZ : НЕ ТЕСТИРОВАЛОСЬ]

    Code:
    //должно менять первую и последнюю букву в каждом слове
    //работать должно только со строчными буквами a-z
    for(int i = 0; i < iNumOfRows - 1; i++)
    {
           for(int j = 0; j < iNumOfCols - 1; j++)
           {
                   if(((string[i][j] == ' ') || (string[i][j] == '\0')) && (inWordFlag == 1))
                   {
                                inWordFlag = 0;
                                string[i][j-1] = cFirstChar;
                   }
                    else if((string[i][j] > 'a') && (string[i][j] < 'z') && (inWordFlag == 0))
                    {
                                inWordFlag = 1;
                                cFirstChar = string[i][j];
                    }
           }
    }
    
     
    А с массивами ты работать не умеешь ...
     
  12. Alexandr II

    Alexandr II -=ImperatoR=-

    Joined:
    28 Dec 2007
    Messages:
    1,069
    Likes Received:
    671
    Reputations:
    87
    срочно нужно написать программу моделирования работы автобусного парка.
    Сведения о каждом автобусе содержат:
    1. Номер автобуса
    2. Фамилию и инициалы водителя
    3. Номер маршрута
    Программа должна обеспечить выбор с помощью меню и выполнение одной из след. операций:
    1. Начальное форматирование данных о всех автобусах в парке в виде списка (ввод с клавиатуры или из файла).
    2. Имитация выезда автобуса из парка: вводится номер автобуса, программа удаляет данные об этом автобусе из списка автобусов, находящихся в парке и записывает эти данные в список автобусов, находящихся на маршруте.

    это нужно написать на С++ с меня незаржавеет ;)
     
  13. 5w17ch3r

    5w17ch3r Member

    Joined:
    1 Dec 2008
    Messages:
    79
    Likes Received:
    11
    Reputations:
    0
    Ребят, нужна помощь. Надо написать программу на паскале, который я уже 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
     
    1 person likes this.
  14. lisa99

    lisa99 Banned

    Joined:
    15 Jul 2008
    Messages:
    359
    Likes Received:
    200
    Reputations:
    70
    утром напишу (с 9 по м.). поздновато уже......
     
  15. jawbreaker

    jawbreaker Elder - Старейшина

    Joined:
    7 Jul 2008
    Messages:
    156
    Likes Received:
    76
    Reputations:
    3
    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;
    }
     
    1 person likes this.
  16. P3L3NG

    P3L3NG Banned

    Joined:
    4 Jun 2008
    Messages:
    175
    Likes Received:
    204
    Reputations:
    11
    Нужно реализовать алгоритм Хаффмана на Pascal-е

    Об алгоритме Хаффмана

    вот что есть. знаю, что надо перекроить сильно =))

    хэлп ми если кому не очень трудно
    Code:
    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.
                     
                     
    еще есть вот такое
    Code:
    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 букв (алфавит), посчитать вероятность каждой появления каждой буквы, создать динамическое дерево, которое присваивает двоичный код каждому символу.

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

    кто поможет благодарность и небольшой денежный бонус ( щас не при деньгах :( )
     
    4 people like this.
  17. lisa99

    lisa99 Banned

    Joined:
    15 Jul 2008
    Messages:
    359
    Likes Received:
    200
    Reputations:
    70
    Code:
    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 people like this.
  18. xaldey

    xaldey New Member

    Joined:
    7 Nov 2006
    Messages:
    13
    Likes Received:
    2
    Reputations:
    0
    Нужно вычислить интеграл методом трапеций путем создания цикла подпроцессов, которые моделируют работу виртуальных процессоров при их асинхронному параллельном выполнении в виде цикла создания подпроцессов.

    [​IMG]
    Короче полная засада, как решить все ето на делфи не знаю.... Помогите кто может.
    аська: 4пять879236четыре
     
    #878 xaldey, 12 Dec 2008
    Last edited: 12 Dec 2008
  19. Asp1r1n

    Asp1r1n Elder - Старейшина

    Joined:
    10 Nov 2006
    Messages:
    52
    Likes Received:
    9
    Reputations:
    0
    Задача: найти все перестановки целого числа длинной 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 номеров и т.п.)


    Спасибо за внимание.
     
    #879 Asp1r1n, 12 Dec 2008
    Last edited: 12 Dec 2008
  20. lisa99

    lisa99 Banned

    Joined:
    15 Jul 2008
    Messages:
    359
    Likes Received:
    200
    Reputations:
    70
    2Asp1r1n:
    не стоит задавать исходный массив, как упорядоченную последовательность
    1,2,3,4.
    Тестировать лучше на рэндомных числах.
    Особенно, когда идет привязка к сортировке по возрастанию

    п.с. формально препод абсолютно прав.
     
Thread Status:
Not open for further replies.