со школы осталось 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; } за лес платить
Вот тебе решение по первой задаче 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.
а это по второй 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.
помогите решить задачи: 1-я: Диапазон изменения случайных чисел от -10 до 10. Найти количество элементов что не равняются 0, и запомнить в новом массиве эти элементы 2-я: Найти суму не парных отрицательних елементов столбцов 3-я: Сменить значения первых k-елементов на противоположные за знаком 4-я: Найти максимальный елемент в каждом столбчике 5-я: Заменить все трехзначные елементы на 100 6-я Отсортировать каждый столбец масива по увеличению Пользуюсь борландом, пока написал 6 задач вам, если поможите допишу их, у меня их всего 15, надо что бы вы помогли....
Помогите пожалуйста!! Надо написать код на СИ++: Составить алгоритм и программу для численной проверки правильности разложения в ряд заданных функций, для чего вычислить ее значения и значения соответствующего ряда в не менее, чем трех точках. Обеспечить точность вычислений не менее 10-5 : -1<X<1 P.S. Даже не понял смысл задания(((
Помогите пожалуйста решить задачи на СИ++ Помогите пожалуйста решить задачи на СИ++, очень надо на завтра, хотябы пару)))) 1. 2. у інтервалі 0<х<2П з кроком П/10 3. 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. Відсортувати елементи масиву за збільшенням значень за абсолютною величиною
1. 2. в интервале 0 <х <2П с шагом П/10 3. 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. Отсортировать элементы массива по возрастанию значений по абсолютной величине вот так типа)))))))
Доброго времени суток! Помогите пожалуста написать функцию нахождения максимального элемента в бинарном дереве. Я что-то вообще не могу понять как это сделать. Заранее спасибо.
нужно рекурсивно входит в каждый узел и сравнивать его с текущим. Задача тривиальна. примерно так: 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; }
Сообщением выше добавил примерный ход мыслей в виде кода на С/C++. Если хоть немного понимаешь что такое бинарное дерево, рекурсивные алгоритмы, указатели - разберёшься без проблем. А вообще, задача очень распространённая. За 15-20 минут можно нагуглить код.
Собственно задача вот такая: Определим правильные скобочные выражения так: Пустое выражение - правильное. Если выражение 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; доделать немного осталось(весь этот алгоритм ПОЛНОСТЬЮ изложен в книге на одном листе) мне нужна только функция в которую бы подавалась строка(ну и что там ещё нужно будет), а возвращала она самое короткое правильное выражение Помогите пожалуйста кто сталкивался с подобным
ребята опять нужна ваша помощь нужно решить две задачки: 1)Даны два массива A и B размера 5, элементы которых упорядочены по возрастанию. Объединить эти массивы так, чтобы результирующий мас¬сив C (размера 10) остался упорядоченным по убыванию. 2)Дан массив A размера N. Сформировать новый массив B того же раз¬мера по следующему правилу: элемент BK равен сумме элементов массива A с номерами от 1 до K. P.S. в долгу не останусь))) кто сделает пишите в аську 386892
Информация к размышлению: https://forum.antichat.ru/showpost.php?p=2207884&postcount=2862 https://forum.antichat.ru/showpost.php?p=2208159&postcount=2863