2008-03-14.kl.14-19 Uppgift 1 (”Betyg 3 uppgift”) Du skall skriva ett program som läser igenom en textfil som heter DATA.XML och skriver ut på skärmen hur många ”taggar” det finns inuti. Vi räknar inte de taggar som är rena ”avslutningstaggar”. De taggar som kan förekomma är: • Inledningstag: <xxx> • Avslutningstag: </xxx> • Inledning och avslutning i samma tag: <xxx/> Ett exempel på indatafil skulle kunna vara: <aaa> .... <bbb> ... </bbb> ... ... <ccc> ... </ccc> ... <ddd/> ... </aaa> <eee/> Resultatet på skärmen skulle i detta fall bli: Det finns 5 taggar i filen. Det finns en given textfil som heter just DATA.XML att kopiera. Det är givet att filen består av en korrekt datamängd. D.v.s. det fattas inga avslutningstaggar och det finns inga taggar som ligger i fel ordning. Det är också givet att texten i övrigt inte innehåller några ’/’, ’<’ eller ’>’. 2008-03-14.kl.14-19 Uppgift 2 I Ada har vi lite problem med hantering av riktigt stora heltal. Datatypen Integer räcker liksom inte till. Detta i kombination med att man ofta vill hantera andra talbaser än det decimala gör att vi är ute efter ett paket som klarar av att addera binära tal. Din uppgift är att skapa paketet Big_Binary_Numbers och där skapa operatorn ”+” som adderar två binära tal. Det är givet att din operator skall ta emot två strängar (som inte är begränsade i längd) och addera ihop innehållet och returnera en ny sträng med resultatet. Strängarna innehåller endast ett antal tecken ’0’ och ’1’. Inga inledande nollor får finnas med (förutom för talet noll som givetvis representeras som ”0”). Det är givet att det endat är positiva binära heltal som skall adderas. Att addera binära tal är inget konstigare än att addera två vanliga tal. Man får tänka på att det blir en minnessiffra till nästa position om man adderar minst två ettor. OBS! Tänk på att minnessiffran räknas med i additionen. Körexempel 1: Mata in två binära tal (ett per rad): 1001010001010101010100100101010100100101001 10010101001010100101010001010 Resultatet av additionen blir: 1001010001010111101001101111111001110110011 Körexempel 2: Mata in två binära tal (ett per rad): 101 111 Resultatet av additionen blir: 1100 Körexempel 3: Mata in två binära tal (ett per rad): 1 11111111111 Resultatet av additionen blir: 100000000000 Körexempel 4: Mata in två binära tal (ett per rad): 0 0 Resultatet av additionen blir: 0 2008-03-14.kl.14-19 Uppgift 3 Du skall komplettera paketet Data_Structure_Handling som redan är påbörjat. Din uppgift är att se till att proceduren Insert fungerar enligt nedan. Det är givet att varje nod har ett tecken som data och att den kan kopplas mot två andra noder. Detta leder till att det kan bli cirkulariteter i datastrukturen, men det är alltid givet att man inte behöver leta sig vidare i strukturen om ”nästa” nod är en nod med en tidigare bokstav (i alfabetet). Indata till programmet kommer att vara en sekvens av rader med beskrivningar av vilka noder som skall kopplas ihop i datastrukturen. Indatasekvensen kommer alltid att vara ordnad så att den kan ses som sorterad i bokstavsordning och man kan aldrig koppla sig mot en tidigare nod om inte existerar. Indatasekvensen avslutas med en enkel nolla (tecknet ’0’). Exempel på indatasekvens: a-b b-c c-b c-d d-a d-e e-c 0 Datastrukturen efter detta: Data b e a d c Du har i paketet en utskriftsprocedur given som återskapar indatasekvensen om du fått till datastrukturen rätt. 2008-03-14.kl.14-19 Uppgift 4 Du skall skriva ut det diagram man får för funktionen ”y = roten ur x”. Det som är lite udda är att användaren inte matar in värden på x utan istället matar in min- och maxvärde på y. Steglängden skall alltid vara 1. Se i exemplen nedan hur utskrifterna skall se ut för olika indata. Körexempel 1: Mata in startvärde på y: 1 Mata in slutvärde på y : 5 5 * 4 * * 3 * * * 2 * * * * 1 * * * * * 01234567890123456789012345 Körexempel 2: Mata in startvärde på y: 0 Mata in slutvärde på y : 7 7 * 6 * * 5 * * * 4 * * * * 3 * * * * * 2 * * * * * * 1 * * * * * * * 0** * * * * * * 01234567890123456789012345678901234567890123456789 Körexempel 3: Mata in startvärde på y: 3 Mata in slutvärde på y : 7 7 * 6 * * 5 * * * 4 * * * * 3 * * * * * 01234567890123456789012345678901234567890123456789 Tips: Den ordinarie funktionen för roten ur heter ”Sqrt” och ligger i paketet Ada.Numerics.Elementary_Functions.