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

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

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

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

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    щас фряхи нету под рукой так что могут быть неточности НО:
    copy==strcpy;
    pos==index
     
  2. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Держи.
    Code:
    #include <stdio.h>
    #include <string.h>
    
    #define MAX_SIZE 0xff
    
    char *ReverseStr (char *s)
    {
      int i = 0, j, len;
      char s2 [MAX_SIZE];
    
      len = strlen (s);
      j = len - 1;
      bzero (s2, len + 1);
      while (j >= 0)
      {
        s2 [i++] = s [j--];
      }
      return s2;
    }
    
    int main ()
    {
      char s [MAX_SIZE], *s1, *s2, *s3;
    
      //strcpy (s, "dfgh fdgn zhopaapohz dfgn ghjk ghn fghmjnfc oooppppppooo dfgbs 777999999777");
      printf ("Vvedite stroky:\n");
      if (fgets (s, MAX_SIZE, stdin) == NULL)
      {
        printf ("Error\n");
        return -1;
      }
      s [strlen (s) - 1] = '\0';
      s1 = s2 = s;
      while ((s1 = strchr (s1, 0x20)) != NULL)
      {
        s1++;
        s2 [s1 - s2 - 1] = '\0';
        s3 = ReverseStr (s2);
        printf ("%s", s2);
        if (strstr (s2, s3) == NULL)
          printf (" - NO\n");
        else
          printf (" - Palyndrom :)\n");
        s2 = s1;
      }
      return 0;
    }
    
     
    #362 krypt3r, 1 Apr 2008
    Last edited: 1 Apr 2008
  3. 043nKRuT0y

    043nKRuT0y Elder - Старейшина

    Joined:
    31 Oct 2007
    Messages:
    226
    Likes Received:
    8
    Reputations:
    0
    "bzero (s2, len + 1);" у меня пишет "Function should have a prototype" связкой CTRL+F1 не выдает библиотеку , показывает ево как не-зарезервированое слово !!! Есть замена етой функцыи ? .... и что она вообще делает ??? В остальном пока все понятно !
     
  4. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    А-а, ну у тебя же не линукс, сорри. Замени на
    Code:
    memset (s2, '\0', len + 1);
    
    Хотя можно и по-другому
    Code:
    s2 [len + 1] = '\0';
    
     
  5. TOLIA

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

    Joined:
    20 Aug 2007
    Messages:
    54
    Likes Received:
    9
    Reputations:
    -11
    КОНЕЧНО НЕ ТО НО ВСЕ РАВНО СПАСИБО, НУЖНО БЫЛО ТИПО ТОГО

     
  6. 043nKRuT0y

    043nKRuT0y Elder - Старейшина

    Joined:
    31 Oct 2007
    Messages:
    226
    Likes Received:
    8
    Reputations:
    0
    Слушай прога работает почти как надо одно НО , нужно штобы пробулы упускались полностю , тоесть в начале текста можно задать пробел или несколько так и на протяжении всево текста , так вот пробелы нужно упустить .... Как ето замутить ???
     
  7. DiffuSer

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

    Joined:
    26 Sep 2007
    Messages:
    29
    Likes Received:
    6
    Reputations:
    0
    Парни, need help. Только что уведомили, что на завтро надо прогу на Pascal (либо C++), кодирование тремя методами -

    1. статический ХАФФМАНА
    2. Фано-Шеннона
    3. динамический ХАФФМАНА

    Выручайте, оч. прошу.
     
  8. Ivan007

    Ivan007 New Member

    Joined:
    1 Apr 2008
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    С#

    Народ кто сможет помогите, очень нужно сделать два задания по С#, пожалуйста если кто может сделайте.


    1.Даны два массива, упорядоченных по возростанию: А[n] и B[m]. Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возростанию.


    2.И решить задачу с помощью рекурсии...
    Легенда гласит, что где-то в Ханое находится храм, в котором размещена следующая конструкция: на основании укреплены 3 алмазных стержня, на которые при сотворении мира Брахма нанизал 64 золотых диска с отверстием посередине, причем внизу оказался самый большой диск, на нем – чуть меньший и так далее, пока на верхушке пирамиды не оказался самый маленький диск. Жрецы храма обязаны перекладывать диски по следующим правилам:

    1. За один ход можно перенести только один диск.

    2. Нельзя класть больший диск на меньший.

    Руководствуясь этими нехитрыми правилами, жрецы должны перенести исходную пирамиду с 1-го стержня на 3-й.
     
  9. KSoniX

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

    Joined:
    17 Jan 2008
    Messages:
    94
    Likes Received:
    12
    Reputations:
    1
    Ivan007 смотри ArrayList для 1 задание
     
    1 person likes this.
  10. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
  11. 043nKRuT0y

    043nKRuT0y Elder - Старейшина

    Joined:
    31 Oct 2007
    Messages:
    226
    Likes Received:
    8
    Reputations:
    0
    2 krypt3r : слушай подскажы как в выше описаном тобой коде о полендромном слове прыисходит выделение слова а то я немогу догнать даную конструкцыю ! И что означает даная конструкцыя "((s1 = strchr (s1, 0x20)) != NULL)" особенно 0x20 ато я с таким еще не сталкивалса , а препад напрягает )
     
  12. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Как понять фразу?
    Как в слове происходит выделение слова О.О? Или имелось в виду выделение слова из введенной строки? В коде юзаются два указателя, которые указывают (сорри за тавтологию=) на начало двух соседних слов, разделенных пробелом. Символы, находящиеся между этими указателями, принадлежат одной строке
    Функция strchr
    Другими словами,
    Code:
    while ((s1 = strchr (s1, 0x20)) != NULL)
    
    ищет в строке пробел. 0x20 - это шестнадцатиричный код пробела, если смущает, замени его на более понятный вариант
    Code:
    while ((s1 = strchr (s1, ' ')) != NULL)
    
    Если пробел не найден, то возвращает NULL и выходит из цикла, если пробел найден, то прогоняем цикл для выделения слова, его реверсинга и сравнения "обратного" слова с оригинальным. Последнее происходит с помощью функции strstr. Ну тут все просто. Читай ман
     
  13. Pechenushka

    Pechenushka Member

    Joined:
    2 Apr 2008
    Messages:
    12
    Likes Received:
    6
    Reputations:
    5
    Решите пожалуйста задачу. Сроки жмут, а я все пары по информатике прогулял, думая что там меня ничему новому не научат, теперь каюсь. Решение необходимо на Турбо Паскале... Заранее спасибо.
    ------------
    Дана матрица А:
    -4.1 5.8 -6.7 4.3
    2.1 -5.1 6.3 -4.7


    Найти
    Р=<сумма элементов 1 строки> - <произведение элементов 2й строки>

    b [1...n, 1...m]
    bij, b[i,j]
    --------------------
     
  14. Jairam

    Jairam New Member

    Joined:
    26 Mar 2008
    Messages:
    7
    Likes Received:
    2
    Reputations:
    0
    перемножение матриц с помощью указателей

    Нужно переделать так, чтобы в функции result вместо sum=sum+a[h]*b[h][j]; использовались указатели.

    C++


    Code:
    #include<iostream>
    #include <conio.h>
    using namespace std;
    
    void fillarray(int * array[], int m, int n)
    {
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                array[i][j]=rand() % 10; //fill with random value from 0 to 9
                cout<<array[i][j]<<"\t"; //print to screen
            }
        cout<<"\n"; //"\n"=endl
        }
        cout<<endl;
    }
    
    void result(int * a[], int * b[], int m, int k, int n)
    {
        int sum;
        cout<<"Result "<<m<<"x"<<n<<" array:"<<endl<<endl;
    
        for(int i=0; i<m; i++)
        {
            for(int j=0; j<n; j++)
            {
                for(int h=0; h<k ;h++)
                {
                    sum=sum+a[i][h]*b[h][j]; //matrix multiplication
                }
                cout<<sum<<"\t"; //print to screen
                sum=0;             
            }
            cout<<endl;
        }    
    }
    
    int main()
    {
        srand(time(NULL));
        int m,n,k;
        
        cout<<"Put first array size: "<<endl<<"m: ";
        cin>>m; cout<<"n: "; cin>>k;
        cout<<"Put second array size: "<<endl<<"m: "<<k<<endl<<"n: ";
        cin>>n; cout<<endl;
        /* allocate memory */
        int**p=new int *[m],**q=new int*[k];
        for (int i=0;i<m;i++) p[i]=new int[k];
        for (int i=0;i<k;i++) q[i]=new int[n];
    
        fillarray(p,m,k);
        cout<<"*"<<endl<<endl;
        fillarray(q,k,n);
        cout<<"="<<endl<<endl;
        result(p,q,m,k,n);
        /* free memory */
        for (int i=0;i<k;i++) delete p[i];
        for (int i=0;i<n;i++) delete q[i];
        delete[] p, q;
    
        cout<<endl<<"Press any key..."<<endl;
        getch();
        return 0;
    }
    
    хэлп ми энибади...

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

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int const N =3;
    
    int ** func(int **m, int **n)
    {
    int **v;
    int i, j, f, l, h, k;
    
    v = (int**)malloc(sizeof(int) * N);
    
    if(v == NULL)
    {
    printf("Not ehough memory!\n");
    getch();
    exit(1);
    }
    
    for(i=0; i<N; i++)
    {
    *(v+i) = (int*)malloc(sizeof(int)*N);
    
    if(*(v+i) == NULL)
    {
    printf("Not enough memory!\n");
    getch();
    exit(1);
    }
    }
    i = j = k = h =0;
    for (f=0; f<N; f++)
    {
    for(l=0; l<N; l++)
    {
    int sum=0, current;
    for(j=0,k=0; j<N,k<N; j++,k++)
    {
    current = *(*(m+i)+j) * *(*(n+k)+h);
    sum += current;
    }
    *(*(v+f)+l) = sum;
    h++, j=0, k=0;
    }
    i++, j=0, k=0, h=0;
    }
    return v;
    }
    
    int main()
    {
    
    int **m;
    int **n;
    int **v;
    n = m = (int**)malloc(sizeof(int) * N); // v6deljaem pamat'
    int i,j,k,h,f,l;
    srand(time(NULL));
    
    for (i=0; i<N; i++){
    m[i] = (int*)malloc(sizeof(int)*N);// v6deljaem pamat'
    for(j=0; j<N; j++){
    m[j] = (int*)malloc(sizeof(int)*N);}}
    
    for (k=0; k<N; k++){
    n[k] = (int*)malloc(sizeof(int)*N);// v6deljaem pamat'
    for(h=0; h<N; h++){
    n[h] = (int*)malloc(sizeof(int)*N);}}
    
    for (i=0; i<N; i++){
    for(j=0; j<N; j++){
    *(*(m+j)+i) = (rand() % 10) + 1; }} // zapolnjaem matrix
    
    for (i=0; i<N; i++){
    for(j=0; j<N; j++){ printf("%d\t", m[i][j]); } printf("\n"); }
    printf("\n*\n\n");
    
    for (k=0; k<N; k++){
    for(h=0; h<N; h++){
    *(*(n+h)+k) = (rand() % 10) + 1; }} // zapolnjaem matrix
    for (k=0; k<N; k++){
    for(h=0; h<N; h++){ printf("%d\t", n[k][h]); } printf("\n"); }
    printf("\n=\n\n");
    
    v = func(m, n);
    for (i=0; i<N; i++)
    {
    for(j=0; j<N; j++)
    {
    printf("%d\t", *(*(v+i)+j));
    }
    printf("\n\n");
    }
    getch ();
    return 0;
    }
    
    P.S. Тем, кто поможет, плюсы, а также $$$ (призовой фонд 20 WMZ :cool: )
     
  15. KSoniX

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

    Joined:
    17 Jan 2008
    Messages:
    94
    Likes Received:
    12
    Reputations:
    1
    Jairam вы 2 коду malloc поменяй на new и тебе новый код а если тебе нужно по другому алгоритму то стучи по ICQ № 465-497-196
     
  16. Pechenushka

    Pechenushka Member

    Joined:
    2 Apr 2008
    Messages:
    12
    Likes Received:
    6
    Reputations:
    5
    Просил решить задачу, но никто не отписАл... Вот, если у кого будет такая/похожая выкладываю решение:
    Program matrix2;
    Uses CRT;
    Var b:array [1..2,1..4] of real;
    i,j:integer;
    p,p1,p2:real;

    BEGIN
    ClrScr;
    b[1,1]:=-4.1;
    b[1,2]:=5.8;
    b[1,3]:=-6.7;
    b[1,4]:=4.3;
    b[2,1]:=2.1;
    b[2,2]:=-5.1;
    b[2,3]:=6.3;
    b[2,4]:=-4.7;

    Writeln('vivod matrx');
    For i:= 1 to 2 do
    begin
    For j:=1 to 4 do
    begin
    Write(b[i,j]:3:1);
    Write(' ');
    end;
    Writeln;
    end;
    p:=0;
    p1:=0;
    p2:=1;
    For j:=1 to 4 do
    begin
    p1:=p1+b[1,j];
    p2:=p2*b[2,j];
    end;
    p:=p1-p2;
    Writeln('p=',p:6:2);
    readkey;
    END.
     
  17. CTPAHGEP

    CTPAHGEP New Member

    Joined:
    9 Apr 2008
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Экспертная система

    Всем привет !! Вообщем такая проблема? нужно написать экспертную систему по типу Prospector с использованием нечёткой логики и неточных данных , считающюю коээфиценты уверенности по формуле Байеса
    Может быть кто то уже делал что то подобное и есть примеры работ??
     
  18. advokat.holy

    advokat.holy New Member

    Joined:
    5 Mar 2008
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    Всем привет! Люди помогите плЗзз.
    Вот задание:
    сформировать и вывести на экран вектор(масив одновымерный) из N целых случайных чисел,
    каторые принимают значения на отрезке [a,b]. Границы интервала ([a,b])
    ввести с клавы. Найти среднее арифметическое случайных чисел,
    с них же найти максимальный минимальный елементы и их порядковые номера.
    Да чуть не забил, для работы с массивами нужно использовать УКАЗАТЕЛЬ(ЛИ).
     
  19. hackconnect

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

    Joined:
    8 Mar 2007
    Messages:
    49
    Likes Received:
    5
    Reputations:
    0
    только если есть готовые решения или их часть.
    На С/С++/c# надо написать прогу, в которой рисуется многогранник произвольный, который можно будет крутить в разные стороны.

    просто не очень охота изучать опенГЛ или директикс

    ЛИБО

    код на OpenGL для вывода различных многогранников.
     
    #379 hackconnect, 16 Apr 2008
    Last edited: 16 Apr 2008
  20. Ivanich

    Ivanich New Member

    Joined:
    19 Mar 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Срочно нужна помоч.

    Помогите сделать задачи.
    первая:

    Номиналы россиыских рублей могут принимать значения 1,2,5,10,50,100,500,1000,5000. Копейки представить как 0.01 (1 копейка), 0.05 (5 копеек). 0.1 (10 копеек), 0.5 (50 копеек). Создать клаасс Money для работы с денежными суммами. Сумма должна быть представлена полями-номиналами, значениями которых должно быть количество купюр данного достоинства. Реализовать сложение сумм, вычитание сумм, деление сумм, деление суммы на дробное число, умножение на дробное число и операции соавнения. Дробная часть (копейки) при выводе на экран должны быть отделена от целой запятой.

    Вторая задача.

    Создать класс ModelWindow для работы с моделями экранных окон. В качестве полей задаются: заголовок окна, координаты левого верхного угла, размер по горизонтали, размер по вертикали, цвет окна, состояние "видимое/невидимое", состояние "с рамкой//без рамки". Координаты и размеры указываются в целых числах. Реализовать операции: передвижение окна по горизонтали.

    Во всех этих заданиях, помимо указанных взадании операций, обязательно должны быть реализованы следующие методы:

    # метод инициализации Init;

    # ввод с клавиатуры Read;

    # вывод на экран Display;

    # преобразование в строку tostring.

    Все задания должны быть реализованы тремя способами.

    1. тип данных представляется структурой с необходимыми полями, а операции
    реализуются как внешние функции, которые получают объекты данного типа в
    качестве аргументов.
    2. Как класс с закрытыми полями, где операции реализуются как методы класса.

    3. инкапсулировать поля класса в независимой структуре и в ней реализовать методы Init(), Read(), Display(), tostring(). В основном классе должно быть поле данных, представленное объектом структурой.[/I][/QUOTE]
     
Thread Status:
Not open for further replies.