Структура стек - решени задачи
списък стек четни числа
Да се състави програма, чрез която от клавиатурата се въвежда естествено число N от интервала [10..100]. Програмата да генерира N броя естествени числа от интервала [1..101].
Числата да бъдат записани в списък / стек.
При извеждането елементите на стека числата да се разделят на четни и нечетни, като първо се изведат всички четни, а след това всички нечетни числа.
Четните стойности се извеждат в същия ред, както са въвеждани, а нечетните стойности се извеждат в ред обратен на въвеждането им.
Пример: 10 генерирани са 42 468 335 501 170 725 479 359 963 465
Изход: 42 468 170 465 963 359 479 725 501 335
проверка за палиндром
Да се състави програма, чрез която се въвежда поредица от символи - само букви и/или цифри.
Общият брой знаци е число от интервала [3..103].
Програмата да извърши проверка и изведе съобщение дали въведената редица е палиндром. Да се използва структура стек.
Пример: 12321 Изход: палиндром
обратен полски запис
Да се състави програма, чрез която се въвежда алгебричен израз, съдържащ цели числа и действията: събиране, изваждане, умножение и делене.
Всяко от изброените действия се означава съответно с: “+”, ”-“, “*”, “\”.
Програмата чрез стек да илюстрира обратен полски запис.
Пример: ((12+15)/(45*2)) Изход: 12 15+ 45 2*/
Пример: (9*((2+3)/(4+5)))+8 Изход: 9 2 3+ 4 5+/* 8+
Използвайте малки скоби за точно указване реда на действията.
аритметичен израз
Да се състави програма, чрез която се въвежда аритметичен израз, съставен от цифри, букви, малки скоби (), знаците за аритметични действия +;-;*;/.
Програмата записва в стек въведения израз и извежда съобщение дали левите и десни малки скоби са правилно балансирани, т.е. дали са левите и десните скоби са равен брой.
Пример: (A5*(45-13)+A6(456+23))*(12*(5-7)+45*(12+34))
Изход: Да
балансирани скоби
Да се състави програма, чрез която се въвежда стринг - аритметичен израз, съставен от цифри, латински букви, скоби {[()]}, като и знаци за аритметични действия +;-;*;/.
Програмата да записва в стек въведения израз. Изходът е съобщение дали левите и десни скоби от съответния вид са равен брой, т.е. дали всички леви скоби и всички десни скоби са правилно балансирани.
Пример: {-10*[2-(4*a-3*b)-4*(c+d)]*(f-h)+12}-5*(r+s)
Изход: Да
стек - двоична бройна система
Да се състави програма, чрез която се въвежда естествено число от интервала [10..1000010].
Програмата да изведе същото число в двоична бройна система.
Да се използва динамичната структура стек.
Пример: 38 Изход: 100110
най-дългото естествено число
Да се състави програма, чрез която в стек се въвежда последователност от букви и цифри, без интервал.
Програмата да изведе от стека най-дългото естествено число, формирано от въведените цифри в ред обратен на въвеждането им.
Полученото число да се представи и в 2-ична бройна система.
Пример: k1a34p8a9k
Изход: най-дълго число: 98431 в 2-ично представяне: 11000000001111111
запис на текстов файл
Да се състави програма чрез която се чете съдържанието на съществуващ текстов файл.
Програмата да извършва запис на нов текстов файл, в който прочетената информация от файла се записва отзад напред - огледално симетрично.
Да се използва структура стек.
обърнат ред в текстов файл
Да се състави програма, чрез която се въвежда име на съществуващ текстов файл.
Програмата да изведе съдържанието на файла и да създаде нов текстов файл, който копира съдържанието на началния текстов файл.
В новия файл, в който последователността на редовете е същата, но съдържанието на редовете е огледално обърнато.
обединяване на две редици
Същестуват предварително въведени две отделни наредени редици, чийто елементи са естествени числа от интервала [1..101].
Да се състави програма, чрез която в стек се въвежда съдържанието на двете редици.
Програмата да изведе всички елементи на стека, така че да същестува наредба след обединяване на двете начални редици.
Пример: 11, 12, 15, 17, 19, 21, 23 и 9, 10, 16, 18, 20
Изход: 9, 10, 11, 12, 15, 16, 17, 18, 19, 20, 21, 23
четни и нечетни естествени числа
Да се състави програма, чрез която от клавиатурата се въвеждат N броя естествени числа от интервала [1..101]. Числото N не е въведено предварително - то се определя в хода на въвеждането.
Числата да бъдат записани в стек. Програмата да изведе всички елементи на стека.
Първо да се изведат всички нечетни, а след това всички четни числа.
Извеждането на елементите от стека да спазва реда на въвеждането им.
Пример: 11, 12, 15, 17, 19, 21, 23, 9, 10, 16, 18, 20
Изход: 11, 15, 17, 19, 21, 23, 9, 12, 10, 16, 18, 20
максимално сечение
По въведено име на файл с директен достъп се записват данни R, r, и h за N броя пресечени конуси.
R и r са радиуси на двете основи, h е височина на пресечен конус. Всички те са естествени числа от интервала [1..99].
Програмата да чете данните от файла и да ги записва в структура стек. Да се изведе изчисленото максимално сечение на пресечен конус.
Пример: N=5 Изход: R=87,r=36,H=11; R=55,r=3,H=79; R=93,r=98,H=85; R=89,r=19,H=25; R=38,r=6,H=59;
максимално сечение S: 8117.5 за R=93, r=98 и H=85
^-образно сортирана редица
Да се състави програма, чрез която се въвежда N - естествено число от интервала [10..10010].
Програмата да генерира N броя псевдослучайни естествени числа от интервала [1..1001].
Да се изведе формираната редица сортирана ^-образно. Първата половина на елементите са подредени във възходящ ред, а втората половина в низходящ ред.
Програмата да използва стек.
Пример: N=10 Изход: начално състояние: 42 468 335 501 170 725 479 359 963 465
След сортиране: 468 479 501 725 963 465 359 335 170 42
ред на Фибоначи
Да се състави програма, чрез която се въвежда N - естествено число от интервала [5..55].
Да се изведат всички елементи от ред на Фибоначи от 1-вия до N-тия член.
Програмата да използва стек, в който са записани изчислените числа на Фибоначи.
Пример: N=10 Изход: 1; 1; 2; 3; 5; 8; 13; 21; 34; 55
изчисляване на факториел
Да се състави програма, чрез която се въвежда естествено число N от интервала [5..20].
Програмата да извърши изчисляване стойности на факториел за всички числа от въведеното до 1.
Да се реализира стек.
Пример: N=10
Изход: 3628800; 362880; 40320; 5040; 720; 120; 24; 6; 2; 1
сума на дълги числа
Да се състави програма, чрез която се въвеждат две дълги естествени числа с брой цифри от интервала [1..10001]. Броят на цифрите в двете числа не е непременно равен.
Входни данни - брой цифри на всяко от двете дълги числа. Отделните цифри са псведослучайни числа.
Програмата да изведе изчислената сума на въведените дълги числа.
Да се реализира стек.
Пример: 12 15
Изход:74094882455; 71152761423221 сума: 871826856305676
сума на два полинома
Да се състави програма, чрез която се въвеждат две естествени числа N и M от интервала [2..99]. Те представляват максималната степен на два полинома. N и M не са непременно равни.
Въвежда се и цифра 0 за сума или 1 за разлика на двата полинома.
Програмата да генерира съответния брой коефициенти за всеки от двата полинома, включително и за свободния им член.
Коефициентите в двата полинома са псевдослучайни числа от [0..99]. Чрез използване на стек да се изведе сума / разлика на двата полинома.
Пример: N=4 M=5 Z=1 Изход:
Коефициенти на I-вия полином: 61 21 87 89 47;
Коефициенти на I-рия полином: 61 77 41 59 14 22;
сума на два полинома: -61*X^5 -16*X^4 -20*X^3 + 28*X^2 + 75*X^1 + 25*X^0
умножаване на дълго число
Да се състави програма, чрез която се въвежда естествено число N от интервала [10..1000001] и естествено число C от интервала [1..9].
Програмата генерира N броя цифри на дълго число и го записва в стек.
Да се извърши умножаване на въведеното дълго число и да се изведе произведението на дългото число и числото C.
Пример: 12 5 Изход: дълго число 674094882455;
след умножаване на въведеното дълго число произведението е: 3370474412275
делители на дълго число
Въвежда естествено число N от интервала [5..1000001].
Програмата да генерира N броя цифри на дълго число и ги записва в стек.
Да се изведе съобщение дали делители на въведеното дълго число са числата: 2, 3, 4, 5, 8, 16.
Пример: 8 Изход: дълго число 67409488
делители на дългото число са: 2,4,8,16
елементи с четен номер
По въведено естествено число N от интервала [10..10010] програмата да генерира, изведе и запише в стек N броя псевдослучайни естествени числа от интервала [100..999].
Да се изведе сумата на участващите елементи с четен номер, считано от върха на стека.
Приема се, че елемента на върха на стека е с номер 1.
Пример: N=10 Изход:148; 628; 596; 164; 649; 777; 922; 398; 216; 844;
елементи с четен номер 216; 922; 649; 596; 148;
сума на елементи: 2531
средна стойност
Да се състави програма, чрез която се генерира псевдослучайно естествено число N от интервала [10..1020].
Програмата да генерира и изведе N броя псевдослучайни естествени числа от интервала [100..999] и да ги запише в стек.
Да се изведе сумата на числата с нечетен номер, считано от дъното на стека. Приема се, че елемента на дъното на стека е с номер 1.
Да се изведе съдържанието на стека, указаните числа и тяхната средна стойност.
Пример: 567; 134; 500; 369; 524; 778; 658; 962; 264; 405; 345;
Изход: 11 броя записани в стека
елементи с нечетен номер 345; 264; 658; 524; 500; 567
средна стойност: 476.333
обединение на множества
По въведено естествено число N от интервала [10..1020] да се генерират и изведат 2 отделни множества съдържащи N броя псевдослучайни естествени числа от интервала [1..99].
Съдържанието на всяко множество се записва в стек.
Да се изтрият всички числа от стек 1, които са равни на число от стек 2. Да се изведат всички елементи представящи обединение на на двете множества - новото съдържание на стек 1 и стек 2.
Пример: N=20.
Съдържание на стек 1: 45; 10; 28; 30; 96; 94; 88; 13; 87; 43; 87; 41; 78; 10; 9; 24; 15; 39; 4; 54;
Съдържание на стек 2: 48; 1; 83; 83; 58; 1; 11; 54; 26; 28; 99; 92; 71; 32; 74; 69; 60; 93; 24; 5
Равни числа в двата стека: 24; 28; 54
обедениние на множествата: 4; 39; 15; 9; 10; 78; 41; 87; 43; 87; 13; 88; 94; 96; 30; 10; 45
сума на прости числа
По въведено естествено число N от интервала [10..10010] да се генерират N броя псевдослучайни нечетни естествени числа от интервала [100..999].
Програмата да използва структура стек за съхраняване на числата.
Да се изведат принадлежащите на стека всички прости числа, както и тяхната сума.
Пример: N=10 Изход: 991; 957; 315; 591; 981; 881; 865; 465; 433; 851
само прости числа: 433; 881; 991
сума на прости числа: 2305
обхождане зиг-заг на таблица
Да се състави програма, чрез която се въвеждат две естествени числа R и K от интервала [2..15]. Числата представляват съответно брой редове и колони на правоъгълна таблица.
Програмата да илюстрира обхождане на таблица под форма на зиг-заг. Всички нечетни колони на таблицата се обхождат отгоре-надолу, а всички четни колони отдолу нагоре.
Програмата да съхрани и изведе описаната последователност при обхождане на въведената таблица като елементи на стек.
Пример: R=4, K=5 Изход:
1 5 9 13 17
2 6 10 14 18
3 7 11 15 19
4 8 12 16 20
вариации с повторение
Да се състави програма, чрез която се въвеждат две естествени числа N и K, от интервала [2..10], като N>K.
Числото N представлява брой елементи, а K е клас на вариация. Всички елементи от всяка вариация са естествени числа от интервала [1..N].
Програмата да запише в стек и изведе първите M вариации с повторение от N елемента, клас K, както и тяхната обща сума.
Пример: N=4, K=3, M=10 Изход:
1 3 2; 1 3 1; 1 2 4; 1 2 3; 1 2 2; 1 2 1; 1 1 4; 1 1 3; 1 1 2; 1 1 1.
Обща сума на елементите: 51
минимален покриващ правоъгълник
Да се състави програма, чрез която се чете съдържанието на съществуващ файл с директен достъп и го записва в стек.
Всеки запис на файла съдържа: две естествени числа X,Y от интервала [1..101].. Числата X,Y представляват координати на точки в равнината.
Програмата да генерира входния файл, т.е. да запише координатите на N броя точки, да зареди съдържанието на файла в стек и да изведе изчислените координатите на минимален покриващ правоъгълник, който включва всички точки.
Пример: N=7
точки: 46,79; 13,73; 22,67; 72,96; 27,91 ;67,50; 63,41;
минимален покриващ правоъгълник: X1=13; Y1=41; X2=72; Y2=96.
разстояние до точка
Да се състави програма, чрез която се чете съдържанието на съществуващ файл с директен достъп и го записва в стек.
Всеки запис на файла съдържа: две естествени числа X,Y от интервала [1..101] и рационално число R. Числата X,Y представляват координати на точки в равнината, а числото R - разстояние на началото на координатната система до всяка точка.
Програмата да генерира файла, т.е. да запише координатите на N броя точки, да зареди съдържанието на файла в стек и да изведе: средно квадратична стой ност на разстоянието на точките Rср до началото на координатната система; както и координатите на точката с най-малко R.
Броят на точките N е естествено число от интервала [5..100005].
Пример: N=5 Изход: X=34,Y=36;X=2,Y=9;X=72,Y=15;X=27,Y=12;X=87,Y=47;
минимално разстояние до точка: 9.21954;
средно квадратична стойност: 68.7689
точки лежащи на права
Да се състави програма, чрез която се чете съдържанието на съществуващ файл с директен достъп и го записва в стек.
Всеки запис на файла съдържа: две естествени числа X,Y от интервала [1..101].. Числата X,Y представляват координати на точки в равнината.
Програмата да генерира файла, т.е. да запише координатите на N броя точки, да зареди съдържанието на файла в стек. Двата записа от върха на стека определят права. Да се изведат координатите на всички точки лежащи на тази права.
Пример: N=10 точки: 6,4; 4,3; 2,3; 6,6; 7,3; 7,3; 5,6; 1,5; 3,4; 5,6
точките: 5,6; 3,4; 5,6 лежат на една права
точките: 5,6; 3,4; 2,3 лежат на една права
разстояние на точка до права
Да се състави програма, чрез която се въвеждат координатите на N броя точки.
N е естествено число от интервала [3..1003], а координатите на точките са естествени числа от интервала [0..99].
Координатите са записват в текстов файл. Програмата да прочете информацията от файла и да я запише в структура стек
Последните две въведени точки образуват права..Да се изведе най-голямото разстояние на точка от въведените до тази права.
Пример: N=6 точки: 72,76; 0,17; 4,34; 71,75; 63,69; 14,87
най голямото разстояние до правата е 70.5343 за точка с координати 0, 17.
триангулация на многоъгълник
Под триангулация на многоъгълник ще разбираме разделяне на многоъгълник на отделни триъгълници.
Всяка от страните на такъв триъгълник е или вътрешен диагонал на началния многоъгълник или негова страна.
В една и съща триангулация сумата от лицата на отделните триъгълници е равна на лицето на многоъгълника, но е недопустимо пресичане на триъгълници.
Съществува изпъкнал многоъгълник с N [3..35] броя страни. Да се състави програма, която чете данни от външен текстов файл - създаден от програмата.
На всеки ред от файла е записано естествено число от интервала [3..35].
Данните да се записват в стек, чийто запис е структура съдържаща брой страни на многоъгълника и съответстващия му брой триангулации.
Да се изведе съдържанието на стека.
Пример: 3, 7, 5 Изход триангулация: 5:5; 7:42; 3:1;
еднакви редове от файл
Съществува предварително сортиран текстов файл. Да се състави програма, чрез която се чете началния файл и се записва съдържанието му в структура стек.
Програмата да изведе в друг файл само онези редове, чиито леви N знака са еднакви, т.е. има повтаряща се последователност от първите леви N знака.
Максималната дължина на ред е 256 символа, N е естествено число от интервала [1..20].
Примерна последователност от редове за N=4: abcd3456, abcd6543,abc333
Изход: abcd6543, abcd3456