heihopp89 Skrevet 7. desember 2017 Del Skrevet 7. desember 2017 (endret) Holde på med et oppgave som jeg sliter med å forstå hva som kommer som utskrift: #include <iostream> #include <cstring> using namespace std; const int LEN = 20; class Objekt { private: char txt[LEN]; char tegn; int tall; public: Objekt(char tx[], char te, int ta) { strcpy(txt, tx); tegn = te; tall = ta; } void funk1() { cout << txt << ' ' << tegn << ' ' << tall; } bool funk2(char te, int n1, int n2) { return (txt[n1] == te || txt[n2] == te); } char funk3() { return (char(int(tegn) + tall)); } void funk4(int ta) { tall = ta; } }; int main() { Objekt ob1("Arsenal", 'A', 5), ob2("Chelsea", 'H', 3); ob2.funk1(); cout << " "; ob1.funk1(); cout << '\n'; // Utskrift: Chelsea H 3 ' ' Arsenal A 5 cout << ob2.funk2('e', 3, 6) << '\n'; // Utskrift : ??? cout << ob1.funk2('a', 0, 5) << ' ' << ob2.funk2('E', 2, 5) << '\n'; // Utskrift ???? cout << ob2.funk3() << ' ' << ob1.funk3() << '\n'; // Utskrift: K ' ' F ob2.funk4(-7); cout << ob1.funk2(ob2.funk3(), 0, 1) << '\n'; // Utskrift: ??? return 0; Jeg er usikker hva som skjer i return i funksjonene. Jeg har fasit på svarene men jeg forstår ikke det. Endret 7. desember 2017 av heihopp89 Lenke til kommentar
Enthroner Skrevet 7. desember 2017 Del Skrevet 7. desember 2017 (endret) Neste gang så bruk gjerne <> i editoren for å legge inn kode. Da ser det slik ut (med forklarende kommentarer): int main() { Objekt ob1("Arsenal", 'A', 5), ob2("Chelsea", 'H', 3); ob2.funk1(); cout << " "; ob1.funk1(); cout << '\n'; // Utskrift: Chelsea H 3 ' ' Arsenal A 5 // funk2 sammenligner ob2.txt[3] == 'e' eller ob2.txt[6] == 'e' // siden e ikke finnes for Chelsea ved index 3 eller 6 så blir dette returnert som den boolske verdien false // false er også 0 så denne linjen printer antakelig 0 fordi funk2 returnerer false cout << ob2.funk2('e', 3, 6) << '\n'; // her testes Arsenal om den har en liten a ved 0 eller 5 // siden den har en liten a på index 5 så blir dette true og returneres som true // true blir 1 så her printes 1 cout << ob1.funk2('a', 0, 5) << ' '; // finnes ingen E i Chelsea så dette blir false, eller 0 cout << ob2.funk2('E', 2, 5) << '\n'; // char(int('H')+3) er det samme som char(int(72)+3) // 72+3 blir 75 og http://www.asciitable.com/ // sier at 75 blir K // samme regnestykket gjelder for ob1 bare andre tall cout << ob2.funk3() << ' ' << ob1.funk3() << '\n'; // Utskrift: K ' ' F // her endres ob2 sitt tall ob2.funk4(-7); // input til funk2 blir nå returen av funk3 // funk3 blir char(int('A')+ -7) = 65 + -7 = 58 = ':' // Arsenal har ikke : i seg, så dette blir false, og derfor 0 cout << ob1.funk2(ob2.funk3(), 0, 1) << '\n'; // Utskrift: ??? return 0; } Anbefaler deg å aldri bruke navn som funk2 og tall, det er utrolig forvirrende. Endret 7. desember 2017 av Enthroner Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå