Forum huvudsida -> Programmering -> if / else if satsen
Sidor: 1
Bookia | 22:40 - 8:e Februari 2007 | Post #1 | |
Medlem Inlägg: 44 Skicka PM |
Jaha, då var det dags att köra fast i programmeringen. Det är garanterat något så otroligt barnsligt självklart och jag är en jubelidiot som inte ser det men nu är det tyvärr så. Whats wrong with this picture?
Programmet kompileras men den gör inte det jag vill den ska göra. Så länge man svarar J/j så sköter den sig finfint. Men när man svarar N/n så gör den ändå samma sak som om man hade svarat J/j. Uppenbarligen har jag inte begripit ett skit av hur if och else if satserna fungerar. Har försökt läsa mer i boken men tyvärr blir jag inte klokare. ------------------------- All truth passes through three stages. First, it is ridiculed. Second, it is violently opposed. Third, it is accepted as being self-evident. We are just an advanced breed of monkeys on a minor planet of a very average star. Senast redigerad 23:02 - 8:e Februari 2007 |
Nissebosselasse | 23:03 - 8:e Februari 2007 | Post #2 | |
Medlem Inlägg: 490 Skicka PM |
Först och främst har du konstruerat if-satserna fel. Du har skrivit dom som du säger dom högt: om svar1 är lika med J eller j, när du i själva verket måste konstruera den så här: om svar1 är lika med J eller om svar1 är lika med j, d.v.s., du måste göra om jämförelsen två gånger. Det andra felet är att du har påbörjat ett block (kod som innesluts mellan två måsvingar { }) efter if-satsen på rad 26. Om det är meningen att else-if-satsen på rad 32 ska matcha if-satsen på rad 26, måste du först avsluta blocket (m.h.a. en måsvinge } ). Alltså: if (svar1 == \\\'J\\\' || svar == \\\'j\\\') { // Kod här } else if (villkor här) { // Annan kod här } Här finns mer om if-satsen:
------------------------- http://pushingcows.se Gula Nallen |
Smygis | 08:30 - 9:e Februari 2007 | Post #3 | |
Medlem Inlägg: 90 Skicka PM |
Citat av Nissebosselasse: Det andra felet är att du har påbörjat ett block (kod som innesluts mellan två måsvingar { }) efter if-satsen på rad 26. Om det är meningen att else-if-satsen på rad 32 ska matcha if-satsen på rad 26, måste du först avsluta blocket (m.h.a. en måsvinge } ). Nej, Där är det nog du som har fått lite om bakfoten. På rad 32 har han en for-loop Och är det bara en rad kod efter if/else if/else/for så behöver man inte måsvingar. @Bookia if (svar1 == 'J'||'j') Felet du gör är att du läser || som "eller". Då det igentligen ska läsas som "eller om" så nu blir det: Om svar1 är lika med 'j' eller om 'J'. Efter som att 'J' är positivt så blir det sant hela tiden. Samma sak med && det ska inte läsas som 'och' utan som 'och om' ------------------------- Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS! Senast redigerad 08:31 - 9:e Februari 2007 |
Bookia | 09:46 - 9:e Februari 2007 | Post #4 | |
Medlem Inlägg: 44 Skicka PM |
Nej, Där är det nog du som har fått lite om bakfoten. På rad 32 har han en for-loop Jag är en hon. if (svar1 == 'J'||'j') Felet du gör är att du läser || som "eller". Då det igentligen ska läsas som "eller om" så nu blir det: Om svar1 är lika med 'j' eller om 'J'. Efter som att 'J' är positivt så blir det sant hela tiden. Samma sak med && det ska inte läsas som 'och' utan som 'och om' I boken står det såhär: A && B = A and B = sant om både A och B är sanna A || B = A or B = sant om minst en av A eller B är sanna. Därifrån drog jag slutsatsen att om användaren knappar in ANTINGEN J eller j så är i alla fall båda sanna och satsen kickar igång. Den första utsagan med && låter för mig att det krävs både J och j för att det ska vara sant. Typ att användaren måste knappa in både J och j. Hänger inte riktigt med där. Har i alla fall bytt || mot && och det funkade inte. Nu fungerar det när man väljer N/n men inte när man väljer J/j. ------------------------- All truth passes through three stages. First, it is ridiculed. Second, it is violently opposed. Third, it is accepted as being self-evident. We are just an advanced breed of monkeys on a minor planet of a very average star. |
Smygis | 09:59 - 9:e Februari 2007 | Post #5 | |
Medlem Inlägg: 90 Skicka PM |
Citat av Bookia: Jag är en hon. :huh: if (svar1 == 'J'||'j') Felet du gör är att du läser || som "eller". Då det igentligen ska läsas som "eller om" så nu blir det: Om svar1 är lika med 'j' eller om 'J'. Efter som att 'J' är positivt så blir det sant hela tiden. Samma sak med && det ska inte läsas som 'och' utan som 'och om' I boken står det såhär: A && B = A and B = sant om både A och B är sanna A || B = A or B = sant om minst en av A eller B är sanna. Därifrån drog jag slutsatsen att om användaren knappar in ANTINGEN J eller j så är i alla fall båda sanna och satsen kickar igång. Den första utsagan med && låter för mig att det krävs både J och j för att det ska vara sant. Typ att användaren måste knappa in både J och j. Hänger inte riktigt med där. Har i alla fall bytt || mot && och det funkade inte. Nu fungerar det när man väljer N/n men inte när man väljer J/j. Nu missade du lite vad jag menade tror jag. Han ovanför mig svarade bra på din fråga, Jag bara förklarade lite. ... Funderar nästan på att ge mig på att förklara boelisk algebra nu... ------------------------- Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS! |
Bookia | 10:02 - 9:e Februari 2007 | Post #6 | |
Medlem Inlägg: 44 Skicka PM |
Har nu modifierat koden, tanken var att försäkra mig att programmet läser det jag menar. Jag tycker dock inte om det. Jag vill hålla koden så ren som möjlig, hatar ställa femtioelva krav i main funktionen. Det är bättre att göra separata funktionssatser ovanför main så att koden blir tydligare och mindre plottrig. Så tänker jag i alla fall. Nedanstående modifierad kod är kompilerbar. Men nu funkar INGENTING. Varken J/j eller N/n fungerar. Programmet hamnar direkt på cin.get(); vad man än skriver in. Det är nåt lurt här med if satserna. ,,r det så att detta program inte kan skrivas med if satser överhuvudtaget? Eller är det bara jag och mitt logiska förståelse som haltar?
------------------------- All truth passes through three stages. First, it is ridiculed. Second, it is violently opposed. Third, it is accepted as being self-evident. We are just an advanced breed of monkeys on a minor planet of a very average star. |
Bookia | 10:14 - 9:e Februari 2007 | Post #7 | |
Medlem Inlägg: 44 Skicka PM |
JAG FICK DET ATT FUNKA. Nu när jag läste Nissebosselasses kommentar igen förstod jag vad han menade. Har nu ändrat koden till if(svar1/2==\'J\'||svar1/2==\'j\') och motsvarande på alla ställen och nu funkar hela programmet. Det där att man måste göra skriva jämförelsen om två gånger var nytt för mig. Det står inte så (tydligt) i boken och det har inte nämnts på föreläsningarna. Men nu vet jag det. Smygis: Du hade skrivit \"På rad 32 har han en for-loop\" varpå jag svarade att jag är en hon. Alltså jag är en tjej, inte kille. ------------------------- All truth passes through three stages. First, it is ridiculed. Second, it is violently opposed. Third, it is accepted as being self-evident. We are just an advanced breed of monkeys on a minor planet of a very average star. |
Nissebosselasse | 10:49 - 9:e Februari 2007 | Post #8 | |
Medlem Inlägg: 490 Skicka PM |
Gött att det löste sig! ------------------------- http://pushingcows.se Gula Nallen |
Smygis | 13:09 - 9:e Februari 2007 | Post #9 | |
Medlem Inlägg: 90 Skicka PM |
Citat av Bookia: JAG FICK DET ATT FUNKA. Nu när jag läste Nissebosselasses kommentar igen förstod jag vad han menade. Har nu ändrat koden till if(svar1/2=='J'||svar1/2=='j') och motsvarande på alla ställen och nu funkar hela programmet. Det där att man måste göra skriva jämförelsen om två gånger var nytt för mig. Det står inte så (tydligt) i boken och det har inte nämnts på föreläsningarna. Men nu vet jag det. Smygis: Du hade skrivit "På rad 32 har han en for-loop" varpå jag svarade att jag är en hon. Alltså jag är en tjej, inte kille. Gott. tyckte att det var mysko om du skulle missförstå oss så grovt. Och (: h u h : ) ska tydligen vara en shokerad/förvånad smily. Vet inte varför den inte fungerade... Blinkenligts: 97% fulkod och 2% tur ------------------------- Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS! |
Sidor: 1
Forum huvudsida -> Programmering -> if / else if satsen
Du får inte posta i den här tråden | Till toppen
Datum
2024-04-28 10:17
Vecka: 17
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.