Archief - Structorizer Oefening

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Jan_Lori

Legacy Member
Hey,

Ik heb een opgave die ik graag wil uitwerken via het programma Structorizer. Hierin kun je PSD''s maken om ze nadien te testen in Lazarus. De opgave:

Vraag de gebruiker om een karakterreeks in te voeren. Die ziet er bijvoorbeeld alsvolgt uit:
0302*-1500
De karakters 03 en 02 verwijzen naar de dag en de maand.
Nadien volgt een sterretje * met daarna een bedrag.
In dit geval gaat het om een negatief bedrag van 1500. Dit bedrag kan ook positief zijn waardoor er dus een + voor het bedrag komt te staan. Het bedrag is telkens een reeks van 4 karakters.
De invoer stopt als er een sterretje * ingegeven wordt.
Zorg er dus eerst voor dat de invoer correct is. In deze oefening gaan we ervan uit dat het bedrag bestaat uit cijfers.
De maanden in het jaar bestaan uit 31 dagen. We laten een schrikkeljaar niet meetellen, de maand februari bevat 28 dagen.
We willen een uitvoer zien die bestaat uit 3 tabellen.
De eerste tabel is een overzicht van de inkomsten. Inkomsten op dezelfde dag worden bij elkaar opgeteld. We willen ook het totaal weten per maand.
In de tweede tabel doen we hetzelfde maar dan voor de uitgaven.
In de derde tabel komt alle foutieve invoer te staan.

Tot dusver heb ik de string-controle op 'papier' en dit werkt allemaal goed. Nu zou ik dus nog 2 tabellen moeten realiseren met de overzichten en eentje met slechte invoer.
Ik weet dat ik voor de overzichtstabellen mutidimensionale tabellen moet maken en dat zal me ook wel lukken vermoed ik.

Waar ik vooral mee worstel is de slechte invoer.

Ik neem aan dat ik een dynamische array moet aanmaken om deze af te printen? Heb al vanalles geprobeerd, zonder succes.

Hier zie je wat ik totnutoe heb:

https://postimg.org/image/z7ms1lsdl/
https://postimg.org/image/om2wplm21/

Is er iemand die me weer wat op weg kan helpen? Alle tips zijn welkom!!

Alvast super bedankt!

grafzerkpisser

Legacy Member
Jan_Lori zei:
Hey,

Ik heb een opgave die ik graag wil uitwerken via het programma Structorizer. Hierin kun je PSD''s maken om ze nadien te testen in Lazarus. De opgave:

Vraag de gebruiker om een karakterreeks in te voeren. Die ziet er bijvoorbeeld alsvolgt uit:
0302*-1500
De karakters 03 en 02 verwijzen naar de dag en de maand.
Nadien volgt een sterretje * met daarna een bedrag.
In dit geval gaat het om een negatief bedrag van 1500. Dit bedrag kan ook positief zijn waardoor er dus een + voor het bedrag komt te staan. Het bedrag is telkens een reeks van 4 karakters.
De invoer stopt als er een sterretje * ingegeven wordt.
Zorg er dus eerst voor dat de invoer correct is. In deze oefening gaan we ervan uit dat het bedrag bestaat uit cijfers.
De maanden in het jaar bestaan uit 31 dagen. We laten een schrikkeljaar niet meetellen, de maand februari bevat 28 dagen.
We willen een uitvoer zien die bestaat uit 3 tabellen.
De eerste tabel is een overzicht van de inkomsten. Inkomsten op dezelfde dag worden bij elkaar opgeteld. We willen ook het totaal weten per maand.
In de tweede tabel doen we hetzelfde maar dan voor de uitgaven.
In de derde tabel komt alle foutieve invoer te staan.

Tot dusver heb ik de string-controle op 'papier' en dit werkt allemaal goed. Nu zou ik dus nog 2 tabellen moeten realiseren met de overzichten en eentje met slechte invoer.
Ik weet dat ik voor de overzichtstabellen mutidimensionale tabellen moet maken en dat zal me ook wel lukken vermoed ik.

Waar ik vooral mee worstel is de slechte invoer.

Ik neem aan dat ik een dynamische array moet aanmaken om deze af te printen? Heb al vanalles geprobeerd, zonder succes.

Hier zie je wat ik totnutoe heb:

https://postimg.org/image/z7ms1lsdl/
https://postimg.org/image/om2wplm21/

Is er iemand die me weer wat op weg kan helpen? Alle tips zijn welkom!!

Alvast super bedankt!

1. Je houdt geen rekening met letters op je getal gedeeltes van je inputstring.
2. Je foutieve invoer specificeert niets. Dus misschien kan je je string in 1 groot if statement checken. (Overzichtelijker dan x geneste if statements)
3. Een substring van een string, is je syntax wel correct? Ik ken de syntax niet maar na even te google kom ik precies uit op pos of copy

Jan_Lori

Legacy Member
Bedankt alvast voor je reactie!

'1. Je houdt geen rekening met letters op je getal gedeeltes van je inputstring.'
Nee inderdaad. Het staat ook in de opdracht dat die controle niet hoeft. (In deze oefening gaan we ervan uit dat het bedrag bestaat uit cijfers.) En aangezien dat stukje string naar een integer is omgezet (functie VAL) krijg je sowieso een foutmelding bij invoer van een letter of ander karakter.

2. Je foutieve invoer specificeert niets. Dus misschien kan je je string in 1 groot if statement checken. (Overzichtelijker dan x geneste if statements)
Intussen 1 groot if statement gemaakt en lijkt me inderdaad iets overzichtelijker. Wat betreft specifieker zijn bij foute invoer... Ik zal het iets duidelijker maken.

3. Een substring van een string, is je syntax wel correct? Ik ken de syntax niet maar na even te google kom ik precies uit op pos of copy
De syntax die ik gebruikt heb is zeker voor verbetering vatbaar. Het is nog wat zoeken naar wat makkelijkst en meest efficient is. Maar wat ik neergepoot heb werkt en dat is op dit moment het voornaamste.

Wat me blij zou maken is te weten hoe de foute invoer van de correcte invoer te scheiden.

Zou ik hiervoor een case moeten aanmaken? Of wat zou een goeie oplossing zijn? Denk gerust luidop mee.

Vriendelijke groet!

grafzerkpisser

Legacy Member
Jan_Lori zei:
Bedankt alvast voor je reactie!

'1. Je houdt geen rekening met letters op je getal gedeeltes van je inputstring.'
Nee inderdaad. Het staat ook in de opdracht dat die controle niet hoeft. (In deze oefening gaan we ervan uit dat het bedrag bestaat uit cijfers.) En aangezien dat stukje string naar een integer is omgezet (functie VAL) krijg je sowieso een foutmelding bij invoer van een letter of ander karakter.

2. Je foutieve invoer specificeert niets. Dus misschien kan je je string in 1 groot if statement checken. (Overzichtelijker dan x geneste if statements)
Intussen 1 groot if statement gemaakt en lijkt me inderdaad iets overzichtelijker. Wat betreft specifieker zijn bij foute invoer... Ik zal het iets duidelijker maken.

3. Een substring van een string, is je syntax wel correct? Ik ken de syntax niet maar na even te google kom ik precies uit op pos of copy
De syntax die ik gebruikt heb is zeker voor verbetering vatbaar. Het is nog wat zoeken naar wat makkelijkst en meest efficient is. Maar wat ik neergepoot heb werkt en dat is op dit moment het voornaamste.

Wat me blij zou maken is te weten hoe de foute invoer van de correcte invoer te scheiden.

Zou ik hiervoor een case moeten aanmaken? Of wat zou een goeie oplossing zijn? Denk gerust luidop mee.

Vriendelijke groet!


Gewoon twee arrays aanmaken. 1 voor de juiste input, de andere voor foutieve. Ik neem aan dat je niet op voorhand weet hoe groot je array gaat zijn. Dus je kan een derde array gebruiken als Temp array, of je gebruikt als tussenoplossing twee strings variabele en met een delimiter scheid je de data van elke invoer. Als de gebruiker op eindigen duwt (*). Ga je de strings splitsen (weet je exact hoe groot elke array moet zijn). En schrijf je de data weg in de arrays.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan