Page 1 of 1

[SE] Oefening 1 reeks 2 (C++)

Posted: Mon Jun 04, 2007 2:56 pm
by Heatryn
In de opgave staat dat je moet controleren of die parameters correct zijn, maar hoe controleer je zoiets? Als ik een "j" bevoorbeeld ingeef, dan berekent mijn programma dat ook nog altijd, waar hij normaal een foutmelding zou moeten geven.

Posted: Mon Jun 04, 2007 3:16 pm
by Robbe
voor degenen die die opdracht niet hebben maar wel willen helpen: wat is de opdracht juist?

Posted: Mon Jun 04, 2007 3:28 pm
by Heatryn
Je moet een programma schrijven die de temperatuur in graden celcius omzet naar fahrenheit en omgekeerd, nu hij wil dat we dat programma op 2 manieren gaan schrijven. Het eerste met 1 waardeparameter, 1 var par en 1 return waarde. En die return waarde moet true zijn als alles goed verlopen is en false wanneer er een foutieve par werd opgegeven. Wat kan ik nu checken aan die parameters, want die mogen zowel geheel, als komma, als pos als neg zijn. Dus vroeg ik mij af of er geen manier in C++ bestond om te gaan controleren of die waardes wel kloppen binnen de grenzen van floats, want als ik een "j" opgeef bv werkt het ook nog en dan zou hij moeten zeggen dat het misloopt.

Hier men code:

Code: Select all

bool CelciusNaarFahrenheit (const float celcius, float &fahrenheit) {
if (fahrenheit == 0) {
fahrenheit = 1.8*celcius+32;
return true;
} else {
return false;
}
}
Ik controleer nu gewoon of die fahrenheit nul is, maar dat is eigenlijk geen deftige controle.

Posted: Mon Jun 04, 2007 3:38 pm
by Robbe
celcius string maken en daar dan eerst errorchecking op doen?

en anders ne try-catch met in de catch "return false;" :P

Posted: Mon Jun 04, 2007 4:00 pm
by Heatryn
Robbe wrote:celcius string maken en daar dan eerst errorchecking op doen?

en anders ne try-catch met in de catch "return false;" :P
En die errorchecking, hoe doe je dat misschien? Dus jij zegt dat ik die celcius naar een string moet omzetten en daarop iets gaan checken? Wat kan ik dan checken op die string?

Posted: Mon Jun 04, 2007 4:29 pm
by Robbe
Heatryn wrote:En die errorchecking, hoe doe je dat misschien? Dus jij zegt dat ik die celcius naar een string moet omzetten en daarop iets gaan checken? Wat kan ik dan checken op die string?
Nee, celsius als string binnenkrijgen. Op zich totaal nutteloos hoor. Hier moet je een keuze maken tussen "blijf ik in de opdracht" of "hou ik het algemeen". Als je in de opdracht blijft, kan je de opgevraagde waarde van de gebruiker, doorgaans een string (doe je dit niet, valt er niets te error-checken), gewoon doorgeven aan je functie. Die error-checking houdt dan in te kijken of er karakters in je string zitten die er niet thuishoren.

Als je algemeen wilt blijven (en dus je functie ook wilt kunnen gebruiken in andere omgevingen dan de opdracht), moet de functie geen rekening houden met de gebruiker en dus gewoon de float die hij aankrijgt omzetten naar een andere float. Enige error-checking dat je hier kan doen is delen door 0 of overflows, die (soms?) exceptions genereren die je dan weer kan opvangen mer een try-blok.

Ik denk dat je het nutteloze geval moet implementeren (enige nut ervan is nu dat je weet hoe je error-checking moet doen :P)

Posted: Mon Jun 04, 2007 4:38 pm
by cG`
Die moet "false" teruggeven als uw temperatuur onder het absolute nulpunt ligt maw 0°Kelvin

Posted: Mon Jun 04, 2007 5:01 pm
by Robbe
cG` wrote:Die moet "false" teruggeven als uw temperatuur onder het absolute nulpunt ligt maw 0°Kelvin
°Kelvin bestaat niet, het is gewoon Kelvin ;)

maar aan dat absolute nulpunt had ik eigenlijk nog niet gedacht :P

Posted: Wed Jun 06, 2007 9:05 am
by Teun
Beetje laat, maar ik heb gedaan dat die even nakijkt of het toevallig niet onder -273,5 komt. Ik heb dat ook gevraagd of hij dat bedoelde en dat was het inderdaad.