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

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

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

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    Угу, все бросятся тебе решать срочно за 7 часов, чтоб ты еще успел поспать :)
     
  2. Irdis

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

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    со школы осталось
    Code:
    #include <iostream> 
    
    using namespace std;
    
    class El {
    public:
    	int val;
    	El* next;
    	El(int arg) {
    		next = NULL;
    		val = arg;
    	}
    };
    
    class List {
    public:
    	El *head;
    	List() {
    		head = NULL;
    	}
    
    	void push(int arg) {
    		if (head == NULL) {
    			head = new El(arg);
    			return;
    		}
    		El *e = new El(arg);
    		El * flag1 =head;
    		El * flag2 = NULL; 
    		while(flag1!=NULL&&flag1->val>arg)
    		{
    				flag2 = flag1;
    				flag1=flag1->next;
    		}
    		flag2==NULL?head = e:flag2->next = e;			
    		e->next = flag1;				
    	}
    
    	void print() {
    		El* t = head;
    		while (t != NULL) {
    			cout << t->val <<' ';
    			t = t-> next;
    		}
    		cout<<endl;
    	}
    
    	~List()
    	{
    		El* t = head;
    		El* next;
    		while (t!=NULL)
    		{
    			next = t->next;
    			delete t;
    			t = next;
    		}
    	}
    };
    
    int main(void) 
    {
    	List l;
    	l.push(1);
    	l.push(5);
    	l.push(2);
    	l.print();
    	return 0;
    }
    
    за лес платить :D
     
    #2822 Irdis, 21 Jun 2010
    Last edited: 21 Jun 2010
  3. stilus

    stilus New Member

    Joined:
    3 Jan 2010
    Messages:
    3
    Likes Received:
    1
    Reputations:
    0
    В Делфи, готовую работу
     
  4. n1nja

    n1nja New Member

    Joined:
    20 Jun 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Вот тебе решение по первой задаче


    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Grids;
    
    type
      TForm1 = class(TForm)
        StringGrid1: TStringGrid;
        Button1: TButton;
        StringGrid2: TStringGrid;
        StringGrid3: TStringGrid;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    Var
    i: byte;
    A: array[1..5] of byte;
    B: array[1..5] of byte;
    C: array[1..10] of byte;
    min,k: byte;
    begin
    // Заполняем массивы случайными числами от 1 до 10
    randomize;
    for i := 1 to 5 do
      begin
      A[i] := random(10)+1;
      B[i] := random(10)+1;
      end;
    
    // Сортируем 1й массив по возрастанию
    i := 1;
    while (i<>5) do
      begin
      min := A[i];
      if (min > A[i+1]) then
                        begin
                        A[i] := A[i+1];
                        A[i+1] := min;
                        i := 1;
                        end
                        else
                        inc(i);
      end;
    
    
    // Сортируем 2й массив возрастанию
    i := 1;
    while (i<>5) do
      begin
      min := B[i];
      if (min > B[i+1]) then
                        begin
                        B[i] := B[i+1];
                        B[i+1] := min;
                        i := 1;
                        end
                        else
                        inc(i);
      end;
    
    // Выводим оба массивы в соответствующие таблицы
    for i := 0 to StringGrid1.ColCount-1 do
        begin
        StringGrid1.Cells[i,1] := IntToStr(A[i+1]);
        StringGrid2.Cells[i,1] := IntToStr(B[i+1]);
        end;
    
    //Объединяем 2 массива в 1
    k:=1;
    for i := 1 to 10 do
        begin
        if (i<=5) then
                  C[i] := A[i]
                  else
                  begin
                  C[i] := B[k];
                  inc(k);
                  end;
        end;
    
    //Сортируем его по убыванию
    i := 1;
    while (i<>10) do
      begin
      min := C[i];
      if (min < C[i+1]) then
                        begin
                        C[i] := C[i+1];
                        C[i+1] := min;
                        i := 1;
                        end
                        else
                        inc(i);
      end;
    
    //Выводим в таблицу
    for i := 0 to 10 do
        begin
        StringGrid3.Cells[i,1] := IntToStr(C[i+1]);
        end;
    end;
    
    end.
     
  5. n1nja

    n1nja New Member

    Joined:
    20 Jun 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    а это по второй


    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Label1: TLabel;
        Button1: TButton;
        StringGrid1: TStringGrid;
        StringGrid2: TStringGrid;
        Label2: TLabel;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    Var
    N: byte;
    A: array[1..50] of byte;
    B: array[1..50] of byte;
    i,k,j: byte;
    sum: integer;
    begin
    randomize;
    
    //N - размерность матрицы
    N := StrToInt(Edit1.Text); 
    
    // Заполняем случайными числами массив A
    for i := 1 to N do
        begin
        A[i] := random(10)+1;
        end;
    
    // Делаем вычисления согласно заданию
    sum := 0;
    j := 1;
    for i:= 1 to N do
        begin
        for k := j to N do
            begin
            sum := sum + A[k];
            end;
        inc(j);
        B[i] := sum;
        sum := 0;
        end;
    
    
    StringGrid1.ColCount := N;
    StringGrid2.ColCount := N;
    
    //Заполняем таблицы получившимися массивами
    for i := 0 to N do
        begin
        StringGrid1.cells[i,1] := IntToStr(A[i+1]);
        StringGrid2.cells[i,1] := IntToStr(B[i+1]);
        end;
    
    
    end;
    
    end.
    
     
  6. Progs

    Progs New Member

    Joined:
    17 Jun 2010
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    помогите решить задачи:
    1-я:
    Диапазон изменения случайных чисел от -10 до 10. Найти количество элементов что не равняются 0, и запомнить в новом массиве эти элементы
    2-я:
    Найти суму не парных отрицательних елементов столбцов
    3-я:
    Сменить значения первых k-елементов на противоположные за знаком
    4-я:
    Найти максимальный елемент в каждом столбчике
    5-я:
    Заменить все трехзначные елементы на 100
    6-я
    Отсортировать каждый столбец масива по увеличению

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

    krewger Banned

    Joined:
    24 Oct 2008
    Messages:
    17
    Likes Received:
    1
    Reputations:
    0
    Помогите пожалуйста!! Надо написать код на СИ++:

    Составить алгоритм и программу для численной проверки правильности разложения в ряд заданных функций, для чего вычислить ее значения и значения соответствующего ряда в не менее, чем трех точках. Обеспечить точность вычислений не менее 10-5 :

    [​IMG]

    -1<X<1

    P.S. Даже не понял смысл задания(((
     
  8. arteha

    arteha Banned

    Joined:
    24 Jun 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Помогите пожалуйста решить задачи на СИ++

    Помогите пожалуйста решить задачи на СИ++, очень надо на завтра, хотябы пару))))
    1. [​IMG]
    2. у інтервалі 0<х<2П з кроком П/10
    3. [​IMG]
    4. a-b=2*c
    5. Знайти добуток парних від'ємних елементів рядків
    6. Діапазон зміни випадкових чисел від -7 до 6. Знайти добуток елементів. що не дорівнюють 0, та запам'ятати у новому масиві індекси цих елементів
    7. Ci=(3Ai=2*Bi./i. Діапазон зміни випадкових чисел від -51.1 до 81.1
    8. Змінити на 0 значення перших від'ємних k елементів
    9. Знайти кількість елементів від -500 до 500 в кожному стовпчику
    10. Підрахувати кількість символів "а" у кожному слові речення та змінити їх на символ "~"
    11. Знайти в кожному стовпці різниці між першим та іншими елементами з непарними індексами
    12.Заповнити масив по стовпцям, починаючи з останнього, зверху вниз
    13. Замінити числом n всі елементи, в яких є цифра 3
    14. Визначити кількість літер "е" у кожному слові та вилучити їх з слів, додавши у кінці речення таку ж кількість сімволів "*"
    15. Відсортувати елементи масиву за збільшенням значень за абсолютною величиною
     
  9. arteha

    arteha Banned

    Joined:
    24 Jun 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Помогите пожалуйста....нада очень
     
  10. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Напиши задания по-русски. forum.ahtichat.ru всё-таки. Я вот, например, ничего не понял.
     
  11. arteha

    arteha Banned

    Joined:
    24 Jun 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    1. [​IMG]
    2. в интервале 0 <х <2П с шагом П/10
    3. [​IMG]
    4. a-b=2*c
    5. Найти произведение парных отрицательных элементов строк
    6. Диапазон изменения случайных чисел от -7 до 6. Найти произведение элементов. что не равны 0, и запомнить в новом массиве индексы этих элементов
    7. Ci = (3Ai = 2 * Bi / i. Диапазон изменения случайных чисел от -51.1 до 81.1
    8. Изменить на 0 значение первых отрицательных k элементов
    9. Найти количество элементов от -500 до 500 в каждом столбце
    10. Подсчитать количество символов "а" в каждом слове предложения и изменить их на символ "~"
    11. Найти в каждом столбце разницы между первым и другими элементами с нечетными индексами
    12.Заповниты массив по столбцам, начиная с последнего, сверху вниз
    13. Заменить числом n все элементы, в которых есть цифра 3
    14. Определить количество букв "е" в каждом слове и изъять их из слов, добавив в конце предложения такое же количество символом "*"
    15. Отсортировать элементы массива по возрастанию значений по абсолютной величине
    вот так типа)))))))
     
    #2831 arteha, 26 Jun 2010
    Last edited: 27 Jun 2010
  12. ynbIpb

    ynbIpb New Member

    Joined:
    20 Jun 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Доброго времени суток! Помогите пожалуста написать функцию нахождения максимального элемента в бинарном дереве. Я что-то вообще не могу понять как это сделать. Заранее спасибо.
     
  13. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    нужно рекурсивно входит в каждый узел и сравнивать его с текущим. Задача тривиальна. примерно так:

    Code:
    node * root = 0x1234567; // указатель на корень дерева
    int max = root->data;
    
    int main()
    {
    ...
       search(root);
    ...
    }
    
    void search (node * root)
    {
      if (root->left != NULL)
         search(root->left);
    
      if (root->right != NULL)
         search(root->right);
    
      if (root->data > max)
        max = root->data;
    }
     
    #2833 herfleisch, 28 Jun 2010
    Last edited: 28 Jun 2010
  14. ynbIpb

    ynbIpb New Member

    Joined:
    20 Jun 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    А можно код? А то у меня башка совсем не варит. Если не сложно конечно.
     
  15. herfleisch

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

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    Сообщением выше добавил примерный ход мыслей в виде кода на С/C++. Если хоть немного понимаешь что такое бинарное дерево, рекурсивные алгоритмы, указатели - разберёшься без проблем.

    А вообще, задача очень распространённая. За 15-20 минут можно нагуглить код.
     
  16. ynbIpb

    ynbIpb New Member

    Joined:
    20 Jun 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Значит я не умею искать в инэте, если уже около часа пытаюсь найти.
     
  17. DrCepbIu

    DrCepbIu New Member

    Joined:
    26 Jun 2010
    Messages:
    15
    Likes Received:
    2
    Reputations:
    0
    Собственно задача вот такая:

    Определим правильные скобочные выражения так:
    Пустое выражение - правильное.
    Если выражение S правильное, то (S) и также правильные.
    Если выражения A и B правильные, то и выражение AB - правильное.
    Дана последовательность скобок "(", ")", "[" и "]". Требуется найти самое короткое правильное выражение, в котором данная последовательность является подпоследовательностью, то есть такое, из которого можно вычеркнуть некоторые символы (возможно, ноль) и получить исходную последовательность, не меняя порядок оставшихся.
    Ограничения: исходная последовательность содержит не более 100 скобок, время 1 с.
    Ввод из файла bracket3.in. В первой строке находятся символы (, ), [ и ] без пробелов.
    Вывод в файл bracket3.out. Выводится искомая последовательность скобок без пробелов.
    Примеры
    Ввод 1 Ввод 2 Ввод 3 Ввод 4
    ([(] ([[)]] (([))] (([[[))]]]
    Вывод 1 Вывод 2 Вывод 3 Вывод 4
    ()[()] ([[()]]) (([]))[] ()()[[[()()]]]

    вот нашёл объяснение решения, находится оно на 256 странице(их два варианта-динамика и стек).
    вот тут книга
    http://slil.ru/29396267

    Как я понимаю проще всего использовать LR динамику(с двумя параметрами), могу даже по ней дать кусок кода

    Code:
    function f(L, R : integer) : integer;
    var
    K, now : integer;
    begin
    if (D[L, R] = -1) then // значение еще не подсчитано
    if (R < L) then D[L, R] := 0 // база динамики №1
    else if (R = L) then D[L, R] := 1 // база динамики №2
    else
    if ((S[L] = ’(’) and (S[R] = ’)’)) then D[L, R] = f(L+1, R-1)
    else { // первая и последняя скобки не образуют пары
    D[L, R] := R-L+1; // в худшем случае к каждой добавим
    for K := L to R-1 do begin // разбиваем на две части
    now := f(L, K) + f(K+1, R); // ищем стоимость
    if (now < D[L, R]) then D[L, R] := now; // если надо меняем
    end;
    end;
    f := D[L, R]; // возвращаем последнее значение
    end;
    доделать немного осталось(весь этот алгоритм ПОЛНОСТЬЮ изложен в книге на одном листе)
    мне нужна только функция в которую бы подавалась строка(ну и что там ещё нужно будет), а возвращала она самое короткое правильное выражение

    Помогите пожалуйста кто сталкивался с подобным
     
  18. rid3r~man

    rid3r~man Active Member

    Joined:
    10 Jan 2009
    Messages:
    224
    Likes Received:
    223
    Reputations:
    25
    Ребят, помогите кто соображает.
    Язык реализации любой, с++\delphi\pascal
     
  19. Getty

    Getty Banned

    Joined:
    17 Jun 2010
    Messages:
    104
    Likes Received:
    1
    Reputations:
    0
    ребята опять нужна ваша помощь нужно решить две задачки:
    1)Даны два массива A и B размера 5, элементы которых упорядочены по возрастанию. Объединить эти массивы так, чтобы результирующий мас¬сив C (размера 10) остался упорядоченным по убыванию.
    2)Дан массив A размера N. Сформировать новый массив B того же раз¬мера по следующему правилу: элемент BK равен сумме элементов массива A с номерами от 1 до K.
    P.S. в долгу не останусь))) кто сделает пишите в аську 386892
     
  20. mozgpanic

    mozgpanic New Member

    Joined:
    9 Mar 2010
    Messages:
    6
    Likes Received:
    2
    Reputations:
    0
    Информация к размышлению:

    https://forum.antichat.ru/showpost.php?p=2207884&postcount=2862

    https://forum.antichat.ru/showpost.php?p=2208159&postcount=2863
     
Thread Status:
Not open for further replies.