Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2016-09-23, 10:54
  #13
Moderator
RostigHinks avatar
Citat:
Ursprungligen postat av DrSvenne
Tex så här:

Kod:
#include <stdio.h>

int main(void)
{  
    int arrayTable[9], min, max, i, result = 0;
    float avg;
    
    for (i=0; i<10; i++)
    {
        printf("Enter Measurement #%i (or 0): ", i);
        scanf("%d", result);
        if (result == 0)
            break; /* Eller typ return 0;, dvs pre-terminating loopen genom att avsluta funktionen */
        arrayTable[i] = result;
    }  
    return 0;
}
Detta tycker jag är det korrekta sättet att bryta loopen i förväg givet att man inte vill skriva in nollan i arrayTable. Både break och return 0 funkar bra i detta specifika fallet.

Goto-diskussionen ger jag mig inte in i, goto behövs aldrig i C-kod.

Som en liten fotnot när man jämför variabel med konstant så skriv hellre if (konstant == variabel), då fångar man enkelt annars svårfunna buggar som if (variabel = constant).
__________________
Senast redigerad av RostigHink 2016-09-23 kl. 10:56.
Citera
2016-09-23, 12:22
  #14
Medlem
christerys avatar
Citat:
Ursprungligen postat av RostigHink
<klipp>
Som en liten fotnot när man jämför variabel med konstant så skriv hellre if (konstant == variabel), då fångar man enkelt annars svårfunna buggar som if (variabel = constant).

Ja det är ett bra tips, lite bakvänt att skriva så men visst fan har jag suttit och klurat på varför inte mitt program fungerar som det ska och det slutade med att jag använt bara = istället för ==
Citera
2016-10-11, 21:32
  #15
Medlem
Annacondas avatar
Citat:
Ursprungligen postat av christery
Ja det är ett bra tips, lite bakvänt att skriva så men visst fan har jag suttit och klurat på varför inte mitt program fungerar som det ska och det slutade med att jag använt bara = istället för ==
Kan bara hålla med! Konstigt att jag aldrig sett detta tips förr!?

Ang. GOTO... Jag har faktiskt använt det vid några speciella tillfällen då min kod har blivit alltför svår att överblicka pga massor av if-else if-else if-else if-.... (jag tror i alla fall att så var fallet).
Jag har då alltid hoppat till slutet av den långa if-else-historien (innan return) och alltid benämnt labeln "end<myfunction>".


ETA: "Senast redigerad av christery år 2498 kl. -07:62"! Du lurade mig för ett ögonblick...
__________________
Senast redigerad av Annaconda 2016-10-11 kl. 21:40.
Citera
2016-10-12, 01:39
  #16
Medlem
Citat:
Ursprungligen postat av RostigHink
Som en liten fotnot när man jämför variabel med konstant så skriv hellre if (konstant == variabel), då fångar man enkelt annars svårfunna buggar som if (variabel = constant).

Jag håller med helt och hållet, - Man tycker att kompilatorn skulle varna tex "Implicit conversion of int to bool" men i C/C++ kan en int ses som en bool ändå,
Jag har sett kod där man använder makron istället vilket minskar risken för felskrivning, tex:
#define AND &&
#define EQ ==
men det försvårar ju att man tar in annan kod som är skriven på traditionellt sätt.

Citat:
Ursprungligen postat av Annaconda
Kan bara hålla med! Konstigt att jag aldrig sett detta tips förr!?

Ang. GOTO... Jag har faktiskt använt det vid några speciella tillfällen då min kod har blivit alltför svår att överblicka pga massor av if-else if-else if-else if-.... (jag tror i alla fall att så var fallet).
Jag har då alltid hoppat till slutet av den långa if-else-historien (innan return) och alltid benämnt labeln "end<myfunction>".

ETA: "Senast redigerad av christery år 2498 kl. -07:62"! Du lurade mig för ett ögonblick...

Ja riktigt - ja sådana där långa if -- else sekvenser kan bli snåriga, särskilt om if satsen innehåller flera villkor som måste vara uppfyllda. Ibland kan man istället städa upp sådan if-else-spaghetti med att använda flaggor istället, en flagga kan tex vara en enum typ och man kan lägga testandet i en switch sats istället. Det gör kanske den logiska delen av koden mer komplicerad, men utförandet ser mer överblickbart och snyggare ut.

För sådan programkod som har mängder av villkor i sina if-satser så kan det alltså vara lönt att använda flaggor istället, det innebär att man bara behöver testa alla villkoren en gång, så sätter man flaggan och sen behöver man bara testa på flaggan, det spar några CPU-cykler.

Å andra sidan så kan man ju göra koden ännu rörigare med hjälp av flaggor särskilt om man blandar metoderna hux flux, då begriper ingen vad som menas nä.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback