ОТДЕЛЬНЫЕ ЦИКЛЫ И ПРОЦЕДУРЫ
| |
WolfClan | Дата: Вторник, 21.04.2009, 09:02 | Сообщение # 1 |
Группа: Удаленные
| ПЯВУ 1-й курс МАТРИЦЫ, МАССИВЫ, ФУНКЦИИ 1. ПРОИЗВЕДЕНИЕ ЭЛЕМЕНТОВ МАССИВА С ЧЕТНЫМИ НОМЕРАМИ 2. СУММА ЭЛЕМЕНТОВ МАССИВА, РАСПОЛОЖЕНЫХ МЕЖДУ ПЕРВЫМ И ПОСЛЕДНИМ ЭЛЕМЕНТАМИ 3. ВЫВОД НОМЕРОВ СТРОК С MAX ЭЛЕМЕНТОМ 4. СУММА ЭЛЕМЕНТОВ КАЖДОЙ СТРОКИ МАТРИЦЫ 5. НАХОЖДЕНИЕ МАКСИМУМА В МАССИВЕ 6. ПОМЕНЯТЬ МЕСТАМИ НАИБОЛЬШИЙ И НАИМЕНЬШИЙ ЭЛЕМЕНТ МАССИВА 7. НАПЕЧАТАТЬ НОМЕРА СТРОК СОДЕРЖАЩИХ НЕ МЕНЕЕ 3-х ЭЛЕМЕНТОВ 8. СОРТИРОВКА ОТ MIN К MAX В МАТРИЦЕ 9. ОПРЕДЕЛЕНИЕ КОЛИЧЕСТВА ОТРИЦАТЕЛЬНЫХ ЭЛЕМЕНТОВ В МАТРИЦЕ 10. ПОИСК САМОЙ ДЛИННОЙ ЦЕПОЧКИ ПОДРЯД ИДУЩИХ ОДИНАКОВЫХ ЭЛЕМЕНТОВ В МАССИВЕ 11. НАХОЖДЕНИЕ МИНИМАЛЬНЫХ ЭЛЕМЕНТОВ МАССИВА 12. НОМЕР СТРОКИ МАССИВА, СУММА ЭЛЕМЕНТОВ КОТОРОЙ МАКСИМАЛЬНА 13. ПРОЦЕДУРА СРАВНЕНИЯ ДВУХ СТРОК 14. ПРОИЗВЕДЕНИЕ ОТРИЦАТЕЛЬНЫХ ЭЛЕМЕНТОВ МАССИВА 15. ПЕРЕВОРОТ МАССИВА ПЯВУ 2-й курс СПИСКИ 16. ПОСТРОИТЬ СПИСОК 17. НАПЕЧАТАТЬ СПИСОК 18. ДОБАВИТЬ В СПИСОК ОДИН ЭЛЕМЕНТ В НАЧАЛО (ВЛЕВО) 19. ДОБАВИТЬ В СПИСОК ОДИН ЭЛЕМЕНТ В КОНЕЦ (ВПРАВО) 20. ВСТАВИТЬ В СПИСОК 1 ЭЛЕМЕНТ ПОСЛЕ ЭЛЕМЕНТА С ЗАДАННЫМ АДРЕСОМ 21. ИСКЛЮЧИТЬ ЭЛЕМЕНТ С ЗАДАННЫМ АДРЕСОМ 22. ОТСОРТИРОВАТЬ СПИСОК В ПОРЯДКЕ ВОЗРАСТАНИЯ ЭЛЕМЕНТОВ СПИСКА ОТ ДНА КВЕРХУ 23. ВСЕ ОТРИЦАТЕЛЬНЫЕ ЭЛЕМЕНТЫ ПЕРЕНЕСТИ В НАЧАЛО СПИСКА, НЕ НАРУШАЯ ИХ ПОРЯДОК СЛЕДОВАНИЯ 24. ВСЕ ОТРИЦАТЕЛЬНЫЕ ЭЛЕМЕНТЫ ПЕРЕНЕСТИ В КОНЕЦ СПИСКА, НЕ НАРУШАЯ ИХ ПОРЯДОК СЛЕДОВАНИЯ 25. ПРОВЕРЯЕТ, ВХОДИТ ЛИ ДВУНАПРАВЛЕННЫЙ СПИСОК L2 В СПИСОК L1 БИНАРНЫЕ ДЕРЕВЬЯ 26. ФУНКЦИЯ НАХОЖДЕНИЯ СУММЫ УЗЛОВ ДЕРЕВА 27. НАХОЖДЕНИЕ СУММЫ ОТРИЦАТЕЛЬНЫХ УЗЛОВ 28. НАХОЖДЕНИЕ КОЛИЧЕСТВА ОТРИЦАТЕЛЬНЫХ УЗЛОВ 29. ФУНКЦИЯ ПОИСКА КОЛ-ВА УЗЛОВ С ОДИНАКОВЫМИ ЗНАЧЕНИЯМИ 30. УНИЧТОЖИТЬ ЦЕПОЧКУ ОТРИЦАТЕЛЬНЫХ ЭЛЕМЕНТОВ РАСПОЛОЖЕННЫХ В НАЧАЛЕ СПИСКА 31. УНИЧТОЖИТЬ 10 ЭЛЕМЕНТОВ В КОНЦЕ СПИСКА (предположительно в списке более 10 эл.) Тема будет расширятся и улучшаться. Народ нужны образцы прог, выкладывайте. Также жду критику и предложения по оформлению темы
|
|
| |
WolfClan | Дата: Вторник, 21.04.2009, 09:07 | Сообщение # 16 |
Группа: Удаленные
| ПЕРЕВОРОТ МАССИВА float temp; for (i=0, j=SIZE-1;i<j;i++,j--){ temp = a[i]; a[i] = a[j]; a[j] = temp;
|
|
| |
SlipandSlide | Дата: Воскресенье, 07.02.2010, 15:05 | Сообщение # 17 |
Кулхацкер
Группа: Модераторы
Сообщений: 107
Статус: Offline
| ПОСТРОИТЬ СПИСОК void make (node *&first, node *&last, int x) { first = 0; last = 0; do { cout<<"\n Vvedite chislo \n"; cin>>x; addr (first,last,x); cout<<"\n Prodolzhit y/n \n"; } while (getch()!='n'); }
Glory to Arstotzka!
|
|
| |
SlipandSlide | Дата: Воскресенье, 07.02.2010, 15:07 | Сообщение # 18 |
Кулхацкер
Группа: Модераторы
Сообщений: 107
Статус: Offline
| НАПЕЧАТАТЬ СПИСОК void output (node *first) { node *p = first; if (first == 0) cout<<"\n Spisok pust \n"; else { while (p!=0) { cout<info<<" "; p = p->next; } cout< } }
Glory to Arstotzka!
|
|
| |
SlipandSlide | Дата: Воскресенье, 07.02.2010, 15:09 | Сообщение # 19 |
Кулхацкер
Группа: Модераторы
Сообщений: 107
Статус: Offline
| ДОБАВИТЬ В СПИСОК ОДИН ЭЛЕМЕНТ В НАЧАЛО (ВЛЕВО) void addl (node *&first, node *&last, int x) { node *p = new node; p->info = x; p->next = last; p->prev = 0; if (first == 0) last = p; else first->prev = p; first = p; }
Glory to Arstotzka!
|
|
| |
SlipandSlide | Дата: Воскресенье, 07.02.2010, 15:10 | Сообщение # 20 |
Кулхацкер
Группа: Модераторы
Сообщений: 107
Статус: Offline
| ДОБАВИТЬ В СПИСОК ОДИН ЭЛЕМЕНТ В КОНЕЦ (ВПРАВО) void addr (node *&first, node *&last, int x) { node *p = new node; p->info = x; p->next = 0; p->prev = last; if (first == 0) first = p; else last->next = p; last = p; }
Glory to Arstotzka!
|
|
| |
SlipandSlide | Дата: Воскресенье, 07.02.2010, 15:12 | Сообщение # 21 |
Кулхацкер
Группа: Модераторы
Сообщений: 107
Статус: Offline
| ВСТАВИТЬ В СПИСОК 1 ЭЛЕМЕНТ ПОСЛЕ ЭЛЕМЕНТА С ЗАДАННЫМ АДРЕСОМ void vstavka (node *&first, node *&last,node *t, int x) { node *p = new node; p->info = x; p->next = t->next; p->prev = t; if (t == last) last = p; else t->next->prev = p; t->next = p; }
Glory to Arstotzka!
|
|
| |
SlipandSlide | Дата: Воскресенье, 07.02.2010, 15:13 | Сообщение # 22 |
Кулхацкер
Группа: Модераторы
Сообщений: 107
Статус: Offline
| ИСКЛЮЧИТЬ ЭЛЕМЕНТ С ЗАДАННЫМ АДРЕСОМ void del (node *&first, node *&last, node *t) { if (t == first) first = first->next; else t->prev->next = t->next; if (t == last) last = last->prev; else t->next->prev = t->prev; delete t; }
Glory to Arstotzka!
|
|
| |
SlipandSlide | Дата: Воскресенье, 07.02.2010, 15:17 | Сообщение # 23 |
Кулхацкер
Группа: Модераторы
Сообщений: 107
Статус: Offline
| ОТСОРТИРОВАТЬ СПИСОК В ПОРЯДКЕ ВОЗРАСТАНИЯ ЭЛЕМЕНТОВ СПИСКА ОТ ДНА КВЕРХУ void sort(node *&first, node *&last){ //сортируем по возрастанию node *p; //указатель на то место, куда будем переставлять node *p1; //указатель-переменная цикла node *min;//указатель на элемент с минимальным значением int temp; // буфер p = first; while(p){ p1=p; min = p1; while(p1){ //ищем узел с минимальным info if(p1->info < min->info) min = p1; p1=p1->next; }; if (p!=min){ //перставляем если найдено значение еще меньше temp = p->info; p->info = min->info; min->info = temp; }; p=p->next; }; }
Glory to Arstotzka!
|
|
| |
SlipandSlide | Дата: Воскресенье, 07.02.2010, 15:20 | Сообщение # 24 |
Кулхацкер
Группа: Модераторы
Сообщений: 107
Статус: Offline
| ВСЕ ОТРИЦАТЕЛЬНЫЕ ЭЛЕМЕНТЫ ПЕРЕНЕСТИ В НАЧАЛО СПИСКА, НЕ НАРУШАЯ ИХ ПОРЯДОК СЛЕДОВАНИЯ void main () { int x = 0; node *first, *last, *first2 = 0, *last2=0; make (first, last, x); node *t, *p = first; while (p!= 0) { t=p; p = p->next; if (t->info<0) { x=t->info; del (first,last,t); addr (first2,last2,x); } } if (first2 == 0) cout<<"\n Spisok ne izmenen \n"; else { if (first == 0) { first = first2; last = last2; } else { last2->next = first; first->prev = last2; first = first2; } cout<<"\n IZMEN SPISOK \n"; output (first); } getch(); }
Glory to Arstotzka!
|
|
| |
SlipandSlide | Дата: Воскресенье, 07.02.2010, 15:22 | Сообщение # 25 |
Кулхацкер
Группа: Модераторы
Сообщений: 107
Статус: Offline
| ВСЕ ОТРИЦАТЕЛЬНЫЕ ЭЛЕМЕНТЫ ПЕРЕНЕСТИ В КОНЕЦ СПИСКА, НЕ НАРУШАЯ ИХ ПОРЯДОК СЛЕДОВАНИЯ void main () { int x = 0; node *first, *last, *first2 = 0, *last2=0; make (first, last, x); node *t, *p = first; while (p!= 0) { t=p; p = p->next; if (t->info<0) { x=t->info; del (first,last,t); addr (first2,last2,x); } } if (first2 == 0) cout<<"\n Spisok ne izmenen \n"; else { if (first == 0) { first = first2; last = last2; } else { last->next = first2; first2->prev = last; last = last2; } cout<<"\n IZMEN SPISOK \n"; output (first); } getch(); }
Glory to Arstotzka!
|
|
| |
WolfClan | Дата: Понедельник, 22.03.2010, 09:32 | Сообщение # 26 |
Группа: Удаленные
| ПРОВЕРЯЕТ, ВХОДИТ ЛИ ДВУНАПРАВЛЕННЫЙ СПИСОК L2 В СПИСОК L1 void compare(node *&first, node *&first2) { node *p2=first2; node *p=first; while (p!=0) { if(p->info==p2->info) { p=p->next; p2=p2->next; } else { p=p->next; p2=first2; } } if(p2!=0) cout<<"\n Spisok L2 ne vhodit v L1 \n"; else cout<<"\n Spisok L2 vhodit v L1 \n"; }
|
|
| |
WolfClan | Дата: Понедельник, 22.03.2010, 12:08 | Сообщение # 27 |
Группа: Удаленные
| ФУНКЦИЯ НАХОЖДЕНИЯ СУММЫ УЗЛОВ ДЕРЕВА Обычная int Summa (node *t) {if (t==0)return 0; else return (t->key + summa (t->left)+summa(t->right); } Универсальная int Summa (node *t) {int sum; if (t==0) return 0; else {sum=t->key, return(sum+summa(t->left)+summa(t->right),) } }
|
|
| |
WolfClan | Дата: Понедельник, 22.03.2010, 12:16 | Сообщение # 28 |
Группа: Удаленные
| НАХОЖДЕНИЕ СУММЫ ОТРИЦАТЕЛЬНЫХ УЗЛОВ int Summa (node *t) {int s; if(t==0) return 0; else {if(t->key>0) s=t->key; else s=0; return(s+summa(t->left)+summa(t->right)); } }
|
|
| |
WolfClan | Дата: Понедельник, 22.03.2010, 12:20 | Сообщение # 29 |
Группа: Удаленные
| НАХОЖДЕНИЕ КОЛИЧЕСТВА ОТРИЦАТЕЛЬНЫХ УЗЛОВ int kol (node*t) {int s; if (t==0)return 0; else {if (t->key<0)s=1; else s=0; return (s+kol(t->left)+kol(t->right),) } }
|
|
| |
WolfClan | Дата: Понедельник, 22.03.2010, 13:10 | Сообщение # 30 |
Группа: Удаленные
| НАХОЖДЕНИЕ МАКСИМАЛЬНЫХ ЭЛЕМЕНТОВ В УЗЛАХ ..... #include <limits.h> \\ обязательно, что бы работал - INT_MAX ..... (int b,r; if (t==0) return - INT_MAX; \\ вообще вместо INT_MAX можно еще использовать число 32768, но всем пофиг. else {b=maxi(t->left); if(t->key>b) b=t->key; r=maxi(t->right); if(r>b>b=r); return b; }
|
|
| |
|