Programeer opdrachtenOpdracht : opdr3b_elmo1608.txt

Terug naar de inzendingen
Opdracht 3b, Reno Elmendorp
23 Feb 2005
 Hier is mijn bijdrage in C:
 
 compileren met gcc -lm -o
 
 1 
****opdracht3b.c*****
  
 2/*
 3Pascal's programmeer-opdracht 3b
 4Reno Elmendorp
 5*/
 6
 7#include 
 8#include 
 9
 10int main(void)
 11{
 12   // declaratie variabelen
 13   float s , h, tijd_totaal, tijd_start_min, tijd_cruise_u, usg,
 14afstand_cruise;
 15   // zinloze eyecandy :P
 16   printf("_____________________\n| Vlucht berekening
 17|\n~~~~~~~~~~~~~~~~~~~~~\n");
 18   // aanvraag gegevens
 19   printf("Geef de gewenste cruisehoogte in Ft: ");
 20   scanf("%f",&h);
 21   printf("Geef de afstand in NM: ");
 22   scanf("%f",&s);
 23
 24   // bereken hoe veel min. de start duurt
 25   tijd_start_min = h/700;
 26   // benodigde brandstof voor start (9 USG / u)
 27   usg = tijd_start_min*0.15;
 28   // afgelegde afstand bij de start erafhalen (v = 70 kts)
 29   afstand_cruise = s-(tijd_start_min*(7/6));
 30   // duur van de vlucht op hoogte (v = 100kts)
 31   tijd_cruise_u = afstand_cruise/100;
 32   // benodigde brandstof voor vlucht op hoogte (7 USG /u)
 33   usg = usg + (tijd_cruise_u*7);
 34   // omrekenen naar minuten en optellen
 35   tijd_totaal = tijd_start_min + tijd_cruise_u*60;
 36   // 8 USG extra & +10%
 37   usg = (usg+8)*1.1;
 38   /* Uitvoer:
 39   Tijd in min. naar boven afgerond
 40   brandstofverbruik in usg naar boven afgerond
 41   afstanden in NM naar dichts bij zijnde waarde afgerond
 42   */
 43   printf("\nGegevens:\n~~~~~~~~~~~~~~~~~~~~~\nAfstand (NM): %i\nTijd (min):
 44%i\nBrandstof (USG):
 45%%i\n",((int)rintf(s)),((int)ceil(tijd_totaal)),((int)ceil(usg)));
 46}
 
 
Mijn commentaar
 
 Elmo,
 Netjes gedaan, goed gedocumenteerd.
 Graag iets duidelijkere variabele namen gebruiken, voor [B]h[/B] kun je b.v. ook
 [B]hoogte[/B] nemen.
 USG is een maateenheid, je had de variable daar b.v. [B]start_brandstof[/B]
 kunnen noemen.
 Je werkwijze in regel 25 en 26 is heel netjes en slim, maar ik moet toch nog even
 kijken hoe je nu aan die 0.15 komt.
 Gebruik voor zoiets defines of zet er eenvoudig weg 9/60 neer.
 Een goede compiler maakt daar zelf gewoon 0.15 van.
 Ik kom er zo nog wel uit, maar het kost extra tijd.
 Dat vinden je colega's die het programma mee ontwikkelen niet erg prettig.
 
 In regel 36 ga je eigenlijk de mist in.
 De opdracht stelt n.l. dat je voor alle brandstof berekeningen 10% extra moet
 nemen.
 Jij doet dat aleen maar over het toaal, bovendien reken jij ook 10% voor de
 8USG start&landing brandstof.
 Als dat laatste nodig was geweest, had ik daar wel wel 9 USG voor gerekend.
 
 Maar waar het eigenlijk om gaat in deze opdracht,
 is dat je een een ingebouwde bug onderkent !
 Kijk eens wat er gebeurd als je een afstand van slechts 8 NM wil afleggen op
 een hoogte van 5000 Ft !
 Geen rieele situatie uiteraard, maar een programma moet met dergelijke dingen
 rekening houden !
 
 Al met al vind ik het een heel mooie bijdrage
 Goed over nagedacht, netjes uitgewerkt, en daar gaat het om.
 
 Even nog wat zeiken, regel 18 het is [I]Kruishoogte[/I] of [I]CruisingAltitude[/I]