Labo Informatica II

2007-2008 [01]

Herhaling Informatica 1ste Bachelor

We herhalen volgende zaken uit het eerste jaar:
  • constanten gebruiken
  • rekenen met cijfers
  • keuzemenu opstellen en behandelen
  • werken met tabellen: sorteren, opzoeken; gebruik als frequentietabel
  • efficiënte code schrijven: aantal bewerkingen beperken

    1. Stap 1 : Vraag de gebruiker een geheel getal x, en bereken de waarde van de veeltermuitdrukking x6+5x3+x2+2x+4. Hoeveel bewerkingen had je nodig?
      Stap 2 : Sla de coëfficiënten van de veelterm nu op in een tabel van constanten. Zo kan je de oefening herdoen voor andere veeltermen. Probeer dit, ook met veeltermen van hogere en lagere graad. (Gebruik een constante voor de maximale graad van de veelterm.) Vind je er een automatisme in? Hoeveel bewerkingen heb je nu nodig? (Misschien kan dit je helpen: tussenresultaat = tussenresultaat * x + volgende_coefficient.)
      Stap 3 : Kan je controleren of het gegeven reëel getal een nulpunt is van de veelterm ?
      Stap 4 : Bereken nu voor N equidistante reële getallen in het interval [MIN,MAX] de functiewaarde van de veelterm - gebruik terug constanten voor N,MIN, MAX. Schrijf deze onder elkaar uit. Kan je nu bepalen waar de nulpunten liggen ?
      Stap 5 : Geef tenslotte aan of je zowel positieve als negatieve functiewaarden tegenkwam.

    2. Schrijf een programma dat een pseudo-willekeurige rij getallen produceert, die we noteren met X0,X1,X2,...,Xn,Xn+1.

      Je kan dit doen met de formule Xn+1=(aXn+c) mod m, waarbij a=3.141.592.621, c=1 en m=1.000.000.000.

      Genereer de honderd eerste getallen van deze rij, waarbij X0=1. De eerste waarde van de rij noemt men het zaad (seed) van de rij. Eenzelfde zaad resulteert steeds in dezelfde rij getallen.

      Opgelet : omdat de gehele getallen groter dan 232 niet als negatief getal mogen geïnterpreteerd worden gebruik je het type unsigned int.

      Invoer
        geen
      Uitvoer
        141592622
        424471
        630464524
        993632285
        ...
      

    3. Gebruik nu de pseudo-willekeurige rij getallen om het werpen met 1 dobbelsteen te simuleren. Hiervoor moet je gewoon de getallen uit de pseudo-willekeurige rij "verkleinen" door rest-berekening.
      Gooi meerdere keren met de dobbelsteen, en tel hoeveel keer elke waarde (1,2,3,4,5,6)gegooid wordt. Heeft elke waarde evenveel kans ? Als je in een tweede run andere getallen wilt bekomen moet je enkel het zaad aanpassen.

    4. Een perfect getal is een getal dat gelijk is aan de som van zijn delers (zichzelf niet meegerekend). Voorbeeld: 6=1+2+3 en 28=1+2+4+7+14. Zoek andere perfecte getallen.
      Zoek eerst een werkende oplossing van dit probleem. Pas daarna de code aan zodat ze efficiënter wordt. ( Gebruik zo weinig mogelijk bewerkingen, stop het het berekenen van de som als deze groter wordt dan het getal,... )
      Invoer
        geen
      Uitvoer
        6
        28
        ... ?
      

    5. Gegeven een bestand met voornamen. De eerste regel bevat het aantal namen in dit bestand.
      Lees het bestand in met redirectie, maar zorg tijdens het inlezen dat de namen in alfabetische volgorde worden opgeslagen in een tabel. Nadien schrijf je alle namen (alfabetisch) uit.
      Doordenkertje : Sommige namen komen meerdere keren voor. Nu willen we een tweede tabel waarin elke naam slechts éénmaal voorkomt, maar waarbij de frequentie per naam wel wordt bijgehouden. Hoe zou je dat doen? Nadien zoek je op of een gegeven naam voorkomt, en met welke frequentie.

    6. In de klas van meester Ron worden de klasnummers op alfabetisch gerangschikte (voor)naam toegekend. Lees eerst alle namen in. Nu wordt het aantal namen niet ingelezen, maar wordt de namenlijst afgesloten met de zinloze naam "STOP". Gebruik daarbij geen redirection zoals in de vorige oefening.
      Daarna toon je de gebruiker een menu met volgende mogelijkheden en wordt elke vraag correct afgehandeld. Het menu wordt herhaaldelijk aangeboden.
      1. hele klaslijst (nummer + naam) afdrukken op scherm
      2. nummer opzoeken bij een naam
      3. naam opzoeken bij een nummer
      0. stoppen