Instructie Programmeren Task 5 - PowerPoint PPT Presentation

1 / 10
About This Presentation
Title:

Instructie Programmeren Task 5

Description:

Title: Slide 1 Author: wgaasend Last modified by: Student Created Date: 9/30/2005 2:11:11 PM Document presentation format: A4 Paper (210x297 mm) Company – PowerPoint PPT presentation

Number of Views:55
Avg rating:3.0/5.0
Slides: 11
Provided by: wgaasend
Category:

less

Transcript and Presenter's Notes

Title: Instructie Programmeren Task 5


1
Instructie ProgrammerenTask 5
  • 5JJ70

2
Task 5 Spelling checker
  • Het doel van deze opdracht is het schrijven van
    een kleine spelling checker
  • Dit is de lastigste opdracht tot nu toe!

3
Task 5 Spelling checker - Hints
  • De volgorde waarin je de verschillende correctie
    functies aanroept is van groot belang
  • Je gebruikt spaties om de grenzen van woorden te
    vinden, verwijder dus eerst dubbele spaties
  • Je vergelijkt aangrenzende woorden bij het
    verwijderen van dubbele woorden, zorg dus dat je
    eerst de spelling van de woorden verbeterd
  • Leestekens en hoofdletters toevoegen kan helemaal
    op het eind, dus
  • Spaces gt spelling gt double words gt capital
    punctuation
  • Een zin inlezen met scanf( s, line) werkt
    niet!
  • Gebruik getchar() of een variant hierop ( zie
    opdracht)

4
Task 5 Spelling checker Spaties verwijderen
  • Een functie die 1 karakter (of x karakters) vanaf
    een bepaalde locatie verwijdert is zeer nuttig
    bij deze opdracht!
  • Realiseer je dat iedere keer dat je een karakter
    verwijdert, de stringlengte van je regel
    verandert
  • Bedenk goed wat je doet nadat je een spatie hebt
    weggehaald Waar staat het eerstvolgende karakter
    dat eventueel een spatie zou kunnen zijn?

D i t i s e
D i t i s e e
Gedetecteerde dubbele spatie
Waar blijft deze pointer/index?
5
Task 5 Spelling checker Spaties verwijderen
  • 2 (of meer) spaties achter elkaar is fout
  • Spaties aan het begin van de zin zijn fout
  • Spaties voor leestekens ( ,!?.) zijn fout
  • Er zijn functies die detecteren of een karakter
    een leesteken, spatie, hoofdletter etc. is
  • Header ctype.h
  • Documentatie http//www.cplusplus.com/reference/c
    library/cctype
  • Voorbeeld
  • if(ispunct(linei))
  • // hier de acties als linei een leesteken is
  • else
  • // geen leesteken op plek i in string line

6
Task 5 Spelling checker Spellingsfouten
  • Voor ieder fout woord (teh, eb, si,
    ceratief, etc) moet je dezelfde acties
    uitvoeren, gebruik dus een loopje waar je één
    voor één je foute woorden afgaat.
  • Het is handig je foute en verbeterde woorden op
    te slaan in een array van strings
  • char errors3 "teh", "eb", "si"
  • (Dit declareert een array van 3 poiners naar
    chars. Vervolgens worden deze pointers
    geïnitialiseerd met de adressen van de constantes
    "teh", "eb", en "si)
  • Je kunt een tijdelijke variabele gebruiken om het
    huidige ingelezen woord in op te slaan, of je kan
    de begin en eindindex van het woord opslaan
  • Vergeet niet dat uit strcmp() nul komt wanneer de
    2 strings gelijk zijn!
  • Om zeker te weten dat je alle fouten vindt, kun
    je de ingelezen woorden naar lowercase of
    uppercase converteren voor je ze vergelijkt
    (tolower() en toupper(), of vergelijken met
    strcmpi() (die case insensitive is).

7
Task 5 Spelling checker Spellingsfouten
  • De procedure die je moet bouwen ziet er ongeveer
    zo uit
  • Detecteer het begin van een woord ( begin van de
    zin of een spatie)
  • Detecteer het eind van een woord ( spatie,
    leesteken of eind van de zin)
  • Vergelijk het woord met elk van de foute woorden
  • Komt het woord overeen met een fout woord,
    kopieer dan het verbeterde woord naar de plaats
    van het foute woord
  • Ga terug naar stap 1, tot het eind van de zin
    bereikt is

8
Task 5 Spelling checker Dubbele woorden
  • De dubbele-woorden-verwijder-routine komt erg
    overeen met de spelfouten routine ( kun je code
    hergebruiken? )
  • Detecteer het begin van een woord ( begin van de
    zin of een spatie)
  • Detecteer het eind van een woord ( spatie,
    leesteken of eind van de zin)
  • Vergelijk het woord met het vorige woord (indien
    aanwezig)
  • Komt het woord overeen met het vorige woord,
    verwijder het dan uit de zin (of voeg het niet
    toe aan de output)
  • Komt het woord niet overeen, dan wordt het
    vorige woord het huidige woord
  • Ga terug naar stap 1, tot het eind van de zin
    bereikt is
  • Na een leesteken mag een woord herhaald worden!
    Bijvoorbeeld
  • It took a very, very long time to program this.

9
Task 5 Spelling checker - Hints
  • Een string van lengte L mag je maar tot L-1
    adresseren!
  • char str10s10 a // FOUT!
  • Gaat er iets mis, zet dan een breakpoint neer en
    stap door je programma heen
  • Het is vaak handig en verhelderend op papier even
    uit te tekenen wat er gebeurt
  • Vergeet de \0 en de ruimte die dit karakter
    inneemt nooit!
  • Access violations? Zie de hint slides over
    Debuggen

Line
D i t i s i s
D i t i s i s
Prev_Word
i strlen(Prev_Word)
i 9
i s \0
10
Task 5 Spelling checker - Hints
  • Je spatie-verwijder functie 10x aanroepen omdat
    dan pas alle spaties weg zijn is niet
    toegestaan schrijf degelijke functies die altijd
    werken!
  • De output van je programma moet exact gelijk zijn
    als die bij de voorbeelden op het opdracht blad
  • Daarnaast moet onderstaande zin goed worden
    verbeterd ( spaties worden ter illustratie
    weergegeven met -)
  • ---eb---eb--eb---be-eb-a--a--good--,---good-good-p
    rogram--and---work---!---
  • Corrected Be a good, good program and work!
  • Je programma mag niet crashen wanneer er geen
    input wordt ingegeven!
  • Je programma is niet af voordat het aan de
    bovenstaande eisen voldoet. Proberen af te laten
    tekenen heeft geen zin, voordat alle voorbeelden
    en bovenstaande zin correct worden verbeterd.
  • Tip Laat je buur- man/vrouw je programma testen!
Write a Comment
User Comments (0)
About PowerShow.com