Gå til innhold

Bone's Offisielle C++ hjelpetråd


Anbefalte innlegg

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 av Jaffe
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

Ok, takk, til begge delene du svarte på.. :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 :p

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 av Slettet+142
Lenke til kommentar

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

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

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
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
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
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
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
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 av Jaffe
Lenke til kommentar
  • 1 måned senere...
  • 2 uker senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...