Jaffe Skrevet 11. august 2007 Del Skrevet 11. august 2007 (endret) Hmm. Så de funksjonene han har lagt ved er nyttig å ta vare på altså..(?) "74"(hex) er ikke 84(dec) sant? 9257376[/snapback] De kan sikkert være nyttige å ta vare på, ja, til bruk når du skal sende tall (merk: flyttall som ikke sendes som en streng), og du vil være sikker på at tallet blir tolket likt av mottakeren. Jeg antar du mener selve tallet 74 (i hex) og ikke strengen "74". 74 i hex blir 7 * 16 + 4 som er 116 i desimal, ikke 84. Endret 11. august 2007 av Jaffe Lenke til kommentar
Gjest Slettet+142 Skrevet 11. august 2007 Del Skrevet 11. august 2007 (endret) Ok, takk, til begge delene du svarte på.. Jeg bare ser at på side 40 i Beej's-guiden er det stilt opp hvordan en tekststreng sendes, oppstilt Hex, Ascii. - Og char 'T' sin ASCII-verdi presentert i HEX er jo ikke 74 Eller så er det jeg som har misforstått (tvilsomt, ettersom at de andre som f.eks char 'o' (int 111)->6F er riktig osv..) Link til siden jeg referer til i Beej's Guide Edit; la til link Endret 11. august 2007 av Slettet+142 Lenke til kommentar
Arne Skrevet 13. august 2007 Del Skrevet 13. august 2007 Hei, eg lurar litt på kvifor eg skal lage strukturar i C++ i staden for å berre lage passande variablar etterkvart. T.d dette: struct studentinfo { std::string name; double midterm, final; std::vector<double> homework; }; istream& read(istream& is, studentinfo& s) { is >> s.name >> s.midterm >> s.final; read_hw(is, s.homework); return is; } ps: read_hw er ein funksjon som allereie er laga. Lenke til kommentar
Dead_Rabbit Skrevet 13. august 2007 Del Skrevet 13. august 2007 Det er en del av konseptene bak objektorientering. Ved å enkapsulere variabler og funksjoner i klasser og strukturer, får du en.. "logisk enhet", hvis du skjønner. Det er på ingen måte noen nødvendighet for at ting skal fungere, men det gjør en del ting lettere, og du får en større grad av abstraksjon. Lenke til kommentar
Arne Skrevet 13. august 2007 Del Skrevet 13. august 2007 Ja, eg skjønner, dermed vil det verte enklare for andre utviklarar som ein jobbar i lag med å arbeide med same kode fordi koden faktisk lager meining? Er det det einaste poenget med strukturar? Og kva er forskjelen mellom strukturar og funksjonar? Er det slik at ein struktur berre definerar variablar som høyrer til den aktuelle funksjonen, medan fuksjonen utfører oppgåvene ved hjelp av strukturen? Lenke til kommentar
Arne Skrevet 13. august 2007 Del Skrevet 13. august 2007 Oki, no spør eg litt i hytt og pine her, men det er vel det vi har tråden for? Når språket er så vanskeleg, så er det vel ikkje så rart at eg spør? Eg har ei oppgåve som går ut på å la brukaren taste inn to setningar, også skal eg printe ut den største. Her er koden min: #include <iomanip> #include <string> #include <ios> #include <iostream> #include <algorithm> #include <stdexcept> using namespace std; string returnLargestString (string s1, string s2) { int l1 = s1.size(); int l2 = s2.size(); return s1 > s2 ? s1 : s2; } int main () { string set1, set2; cout << "Skriv inn to setningar: \n1: "; cin >> set1; cout << endl << "2: "; cin >> set2; string largest = returnLargestString(set1, set2); cout << "\nDen lengste setninga er:\n" + largest << endl; system("PAUSE"); return 0; } Det funkar fint det, om det berre er eitt ord. Men om eg tastar inn "kake er godt" som fyrstesetningen, så får eg ikkje lov til å taste inn setning nr. 2, og outputten blir slik: Skriv to setningar: 1: kake er godt 2: Den lengste setninga er: kake Trykk en tast for å fortsette... Kva kan feilen være? Eg testa litt, og eg meiner å trur at feilen ligg i innlesingsprosessen. Lenke til kommentar
Jaffe Skrevet 13. august 2007 Del Skrevet 13. august 2007 Ja, eg skjønner, dermed vil det verte enklare for andre utviklarar som ein jobbar i lag med å arbeide med same kode fordi koden faktisk lager meining? Er det det einaste poenget med strukturar? Og kva er forskjelen mellom strukturar og funksjonar? Er det slik at ein struktur berre definerar variablar som høyrer til den aktuelle funksjonen, medan fuksjonen utfører oppgåvene ved hjelp av strukturen? 9270787[/snapback] Det er ingen direkte sammenheng mellom datastrukturer og funksjoner, annet enn den samme som er mellom funksjoner og variabler: De kan sendes til funksjoner og returneres av funksjoner. Først en litt teoretisk forklaring: En struktur er bare en samling med data under ett navn, slik at det, som staalezh sier, blir en abstraksjon der man ikke ser på hvert enkelt felt i strukturen, men det strukturen representerer som en helhet -- f.eks. en elev, som eksempelet ditt viser. Når vi så har en elevstruktur, kan vi gi variabler av denne til funksjoner, og funksjoner kan returnere elever. På denne måten har vi "utvidet" språket til å operere på elever, noe som gjør det enklere å uttrykke seg. Tenk deg at du vil lage en adressebok. Hvordan vil du lagre informasjonen om hver person? Du kan jo ha en tabell (array) med navnene, en med telefonnumrene, osv., der en felles indeks "binder" dem sammen (altså, indeks 3 i navn-tabellen hører sammen med indeks 3 i telefonnummer-tabellen osv.), men hadde det ikke vært enklere om hver person var en egen "ting", med all informasjonen om personen samlet under ett? Det er akkurat det strukturer (og klasser, som tar det enda et par steg videre), gjør -- det samler alt i én enhet. Da kan du lage én tabell, der hvert element er en instans av person-strukturen. Om du vil, kan du lese mer om dette her: http://no.wikibooks.org/wiki/C#Datastrukturer Lenke til kommentar
Glutar Skrevet 13. august 2007 Del Skrevet 13. august 2007 Oki, no spør eg litt i hytt og pine her, men det er vel det vi har tråden for? Når språket er så vanskeleg, så er det vel ikkje så rart at eg spør? Eg har ei oppgåve som går ut på å la brukaren taste inn to setningar, også skal eg printe ut den største. Her er koden min: #include <iomanip> #include <string> #include <ios> #include <iostream> #include <algorithm> #include <stdexcept> using namespace std; string returnLargestString (string s1, string s2) { int l1 = s1.size(); int l2 = s2.size(); return s1 > s2 ? s1 : s2; } int main () { string set1, set2; cout << "Skriv inn to setningar: \n1: "; cin >> set1; cout << endl << "2: "; cin >> set2; string largest = returnLargestString(set1, set2); cout << "\nDen lengste setninga er:\n" + largest << endl; system("PAUSE"); return 0; } Det funkar fint det, om det berre er eitt ord. Men om eg tastar inn "kake er godt" som fyrstesetningen, så får eg ikkje lov til å taste inn setning nr. 2, og outputten blir slik: Skriv to setningar: 1: kake er godt 2: Den lengste setninga er: kake Trykk en tast for å fortsette... Kva kan feilen være? Eg testa litt, og eg meiner å trur at feilen ligg i innlesingsprosessen. 9271354[/snapback] Du kan vel bruke getline(cin, set1); Lenke til kommentar
Jaffe Skrevet 13. august 2007 Del Skrevet 13. august 2007 Oki, no spør eg litt i hytt og pine her, men det er vel det vi har tråden for? Når språket er så vanskeleg, så er det vel ikkje så rart at eg spør? Eg har ei oppgåve som går ut på å la brukaren taste inn to setningar, også skal eg printe ut den største. Her er koden min: #include <iomanip> #include <string> #include <ios> #include <iostream> #include <algorithm> #include <stdexcept> using namespace std; string returnLargestString (string s1, string s2) { int l1 = s1.size(); int l2 = s2.size(); return s1 > s2 ? s1 : s2; } int main () { string set1, set2; cout << "Skriv inn to setningar: \n1: "; cin >> set1; cout << endl << "2: "; cin >> set2; string largest = returnLargestString(set1, set2); cout << "\nDen lengste setninga er:\n" + largest << endl; system("PAUSE"); return 0; } Det funkar fint det, om det berre er eitt ord. Men om eg tastar inn "kake er godt" som fyrstesetningen, så får eg ikkje lov til å taste inn setning nr. 2, og outputten blir slik: Skriv to setningar: 1: kake er godt 2: Den lengste setninga er: kake Trykk en tast for å fortsette... Kva kan feilen være? Eg testa litt, og eg meiner å trur at feilen ligg i innlesingsprosessen. 9271354[/snapback] For det første er det vel return l1 > l2 ? s1 : s2; du mener, men det ser ut som det er noe krøll under innlesingen ja, siden du bare får kake tilbake. Om jeg ikke husker feil, er det fordi cin med >> operatøren bare leser frem til den får whitespace (mellomrom, tab, enter, osv.) Prøv med cin.get() Lenke til kommentar
Dead_Rabbit Skrevet 13. august 2007 Del Skrevet 13. august 2007 Ja, eg skjønner, dermed vil det verte enklare for andre utviklarar som ein jobbar i lag med å arbeide med same kode fordi koden faktisk lager meining? Er det det einaste poenget med strukturar? Og kva er forskjelen mellom strukturar og funksjonar? Er det slik at ein struktur berre definerar variablar som høyrer til den aktuelle funksjonen, medan fuksjonen utfører oppgåvene ved hjelp av strukturen? 9270787[/snapback] Det er ingen direkte sammenheng mellom datastrukturer og funksjoner, annet enn den samme som er mellom funksjoner og variabler: De kan sendes til funksjoner og returneres av funksjoner. Først en litt teoretisk forklaring: En struktur er bare en samling med data under ett navn, slik at det, som staalezh sier, blir en abstraksjon der man ikke ser på hvert enkelt felt i strukturen, men det strukturen representerer som en helhet -- f.eks. en elev, som eksempelet ditt viser. Når vi så har en elevstruktur, kan vi gi variabler av denne til funksjoner, og funksjoner kan returnere elever. På denne måten har vi "utvidet" språket til å operere på elever, noe som gjør det enklere å uttrykke seg. Tenk deg at du vil lage en adressebok. Hvordan vil du lagre informasjonen om hver person? Du kan jo ha en tabell (array) med navnene, en med telefonnumrene, osv., der en felles indeks "binder" dem sammen (altså, indeks 3 i navn-tabellen hører sammen med indeks 3 i telefonnummer-tabellen osv.), men hadde det ikke vært enklere om hver person var en egen "ting", med all informasjonen om personen samlet under ett? Det er akkurat det strukturer (og klasser, som tar det enda et par steg videre), gjør -- det samler alt i én enhet. Da kan du lage én tabell, der hvert element er en instans av person-strukturen. Om du vil, kan du lese mer om dette her: http://no.wikibooks.org/wiki/C#Datastrukturer 9271425[/snapback] C++ tar også dette til det neste nivået med at man kan overlaste operatorer (slik som operator>>, operator+, operator=, placement new og u-name-it). Dette gjør at en egendefinert klasse - som f.eks. Person - kan fungere mer eller mindre på samme måte som built-in datatyper som int, long, bool, char, osv. Lenke til kommentar
Jaffe Skrevet 13. august 2007 Del Skrevet 13. august 2007 (endret) Ja, eg skjønner, dermed vil det verte enklare for andre utviklarar som ein jobbar i lag med å arbeide med same kode fordi koden faktisk lager meining? Er det det einaste poenget med strukturar? Og kva er forskjelen mellom strukturar og funksjonar? Er det slik at ein struktur berre definerar variablar som høyrer til den aktuelle funksjonen, medan fuksjonen utfører oppgåvene ved hjelp av strukturen? 9270787[/snapback] Det er ingen direkte sammenheng mellom datastrukturer og funksjoner, annet enn den samme som er mellom funksjoner og variabler: De kan sendes til funksjoner og returneres av funksjoner. Først en litt teoretisk forklaring: En struktur er bare en samling med data under ett navn, slik at det, som staalezh sier, blir en abstraksjon der man ikke ser på hvert enkelt felt i strukturen, men det strukturen representerer som en helhet -- f.eks. en elev, som eksempelet ditt viser. Når vi så har en elevstruktur, kan vi gi variabler av denne til funksjoner, og funksjoner kan returnere elever. På denne måten har vi "utvidet" språket til å operere på elever, noe som gjør det enklere å uttrykke seg. Tenk deg at du vil lage en adressebok. Hvordan vil du lagre informasjonen om hver person? Du kan jo ha en tabell (array) med navnene, en med telefonnumrene, osv., der en felles indeks "binder" dem sammen (altså, indeks 3 i navn-tabellen hører sammen med indeks 3 i telefonnummer-tabellen osv.), men hadde det ikke vært enklere om hver person var en egen "ting", med all informasjonen om personen samlet under ett? Det er akkurat det strukturer (og klasser, som tar det enda et par steg videre), gjør -- det samler alt i én enhet. Da kan du lage én tabell, der hvert element er en instans av person-strukturen. Om du vil, kan du lese mer om dette her: http://no.wikibooks.org/wiki/C#Datastrukturer 9271425[/snapback] C++ tar også dette til det neste nivået med at man kan overlaste operatorer (slik som operator>>, operator+, operator=, placement new og u-name-it). Dette gjør at en egendefinert klasse - som f.eks. Person - kan fungere mer eller mindre på samme måte som built-in datatyper som int, long, bool, char, osv. 9271598[/snapback] Vel, den muligheten rekner jeg som en del av OOP-systemet til C++. Off-topic: Det er andre språk som også kan overlaste operatører (Java, Ruby (vel, det er egentlig ikke operatøroverlasting siden +, == osv. er gyldige metodenavn der), for å nevne noen) Endret 13. august 2007 av Jaffe Lenke til kommentar
Dead_Rabbit Skrevet 13. august 2007 Del Skrevet 13. august 2007 (endret) Arne: getline er - som Glutar sier - funksjonen du er ute etter. Den leser frem til '\n' istedenfor whitespace, som cin::operator>> gjør. Edit: Jaffe: Ja, det er en del av OOP-systemet til C++, og jeg er klar over at andre språk har dette også. Jeg bare utdypet litt. Endret 13. august 2007 av staalezh Lenke til kommentar
Arne Skrevet 13. august 2007 Del Skrevet 13. august 2007 Takk skal de ha, getline gjorde verkeleg susen! Lenke til kommentar
Arne Skrevet 13. august 2007 Del Skrevet 13. august 2007 Så dermed er ein struktur og ein klasse sånn nokolunde det same og vert brukt litt om ein annan? Lenke til kommentar
Dead_Rabbit Skrevet 13. august 2007 Del Skrevet 13. august 2007 I C++ så er en klasse (class) og en struktur (struct) akkurat det samme. Eneste forskjellen er at class-medlemer er private som default, og struct-medlemmer er public som default. Lenke til kommentar
............... Skrevet 19. september 2007 Del Skrevet 19. september 2007 (endret) EDIT: har funnet ut litt mer. Holder av denne plassen jeg.. Endret 19. september 2007 av karlsn Lenke til kommentar
.... Skrevet 28. september 2007 Del Skrevet 28. september 2007 (endret) Endret 11. februar 2012 av .... Lenke til kommentar
Dead_Rabbit Skrevet 28. september 2007 Del Skrevet 28. september 2007 Du kan se litt på hvilke flags du sender til kompilatoren. Skal bl. a. være et size-flag som optimaliserer for størrelse... Lenke til kommentar
.... Skrevet 29. september 2007 Del Skrevet 29. september 2007 (endret) Endret 11. februar 2012 av .... Lenke til kommentar
Frysning Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 Er det noen forskjell på: string* adress og string *adress ? 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å