• 1
  • 2
2009-03-19, 13:21
  #13
Medlem
Du lser in siffror i din meny, och det r vl ok, men mer intuitivt kan vara att lsa in tecknen +, -, * och / istllet och ha case '+': och s vidare i din switch.

Du slarvar vldigt med texten, exempelvis skriver du i invAlt "please reenter <1-4>" men ger 5 alternativ. Blandade felstavningar: Welocme, calculatin, wich, Substraction, choosed, multiplice, Invalied ... Vad i hela friden r "Pytogars Technic"? Det vet kanske inte du heller, eftersom det valet ger "Invalid input, pleese reenter" i din kod.

Det r bra att dela upp program i funktioner, men det ska vara vldefinierade samlade enheter. Du har till exempel delat upp instruktionstexten och koden mellan geometricsTxt() och geometricsChoice(), det gr inget lttare utan tvrtom mste man sitta och para ihop allt i huvudet och hlla reda p tv platser vid eventuella ndringar.

Du lser in heltal till alla dina operationer (delvis identisk kod till mul, add etc, det borde f dig att tnka ver designen). I div() gr du heltalsdivision. Du kunde lika vl anvnda operationer med double. Nu har du ju "pratiga" funktioner som skter sin egen input, men annars kan man tycka att tystltna funktioner som tar tv parametrar och ger en retur kunde vara mer passande.

Funktionen med namnet "sqarea", den tror man frst ska rkna ut arean p en kvadrat. Nr man lser koden ser man att du frgar efter lngd och hjd av en kub(!) och sedan rknar ut arean av en rektangel. Fullkomligt frvirrat. Liknande men nnu konstigare med sqvolume, vad ska det betyda; volymen av en kvadrat? Dr frgar du efter lngd, hjd och bredd av en kub, som egentligen har samma mtt p de tre per definition, och sedan ger du volymen av ett rtblock.

Den enda funktion du har som sger sig returnera ngonting, main(), gr inte det.
Citera
2009-03-19, 16:14
  #14
Medlem
Skriv kommentarer nr du programmerar. Det gr bra i brjan men nr programmen blir strre mste du veta vad och hur funktionerna fungerar och vad den returnerar om den gr det. Ssom liknande:

Kod:
/******************************************************************************
*
*   Function name:  timer_init
*
*   returns:        none
*
*   parameters:     none
*
*   Purpose:        Start Timer/Counter2 in asynchronous operation using a
*                   32.768kHz crystal.
*
*******************************************************************************/

Kommentarer och frklaringar kommer gra dina program mycket enklare att frst fr dig sjlv och andra. Inte s roligt att felska program p flera tusen rader utan bra kommentarer.

Du kommenterar dina C och C++ program med:

//text

eller

/* text text */




/Vet_ej
Citera
2009-03-19, 18:54
  #15
Bannlyst
@Katalysator tack fr att du tog dig tid att ppeka alla programmets brister. Jag r jtteglad att f reda p allt jag kan gra bttre och kommer ta med mig den erfarenheten framver, uppskattar verkligen feedbacken

@Vet ej tack du med fr tipset om att andvnda kommentarer, mrkte i slutet att det blev en hel del att hlla reda p nd ..
Citera
2009-03-19, 20:41
  #16
Medlem
fittPlusPluss avatar
Citat:
Ursprungligen postat av mullemalle
Jag tycker att du kan ha allt inom main i en while(true)-loop och ett menyalternativ att avsluta programmet

Det r sjukt dlig design att lgga ett helt program i en enda metod.
Citera
2009-03-20, 09:23
  #17
Medlem
Knilds avatar
Hej dr,

Jag har en id fr hur du ev. kan frbttra inmatningsmetoden.

Jag har ocks gjort Minirknare i C++, min senaste minirknare blev inte som dem tidigare, som liknar din, utan den blev snppet bttre.

Jag gjorde fljande fr addering:
1. Jag tog bort menyvalen(kan ersttas med en if input=help s kommer en meny upp)
2. La in inmatiningen i en strng.
3.
Kod:
pluspos=input.find("+"); 
, nu sparades plustecknets position i "pluspos"
4.
Kod:
i1=input.size();            // Hela strngens(s1) storlek deklareras som en int 'i1' 
s2=input.substr(0pluspos);        // Strngen 's2' fr talen som r fre operatren '+'
s3=input.substr(pluspos+1i1);            // Strngen 's3' fr talen som r efter operatren '+' 

5. Konvertera strngarna(s1 och s2) till int
6. int1+int2=summa

Detta r inte ett trivialt stt att gra det snarare en mycket restriktiv metod, men jag gillar den nd eftersom anvndaren inte behver frbereda programmet lika myket.

Detta r endast en grund till ett program, du behver ju ven de andra rknestten.
Kolla grna upp
Kod:
string::npos

Jag hoppas att allt gr bra och att du skriver ett magnifikt program som kommer att sl vrlden med storm!

Lycka till, Knild
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in