Вписване в сайта



Вторник, 23 Август 2011 15:29

Решения на задачи със стек

Написана от 
Оценете
(6 гласа)

Структура стек - решени задачи

списък стек четни числа

Да се състави програма, чрез която от клавиатурата се въвежда естествено число 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

Решение
Прочетена 10151 пъти Последно променена в Петък, 14 Септември 2012 12:02