Gå til innhold

Bone's Offisielle C++ hjelpetråd


Anbefalte innlegg

Heisann! :)

 

 

Først, før noen klager på 'feil bruk av emnefelt', vil jeg bare si at jeg er en nybegynner; så av den grunn kommer det nok til å bli flere spørsmål fra meg etterhvert, så i stedet for å ha x -antall (hundre!? hehe..) emner, så laget jeg en liten "felles" en.. ..flere nybegynnere kan selvsagt også poste her! :)

 

Uansett..

 

Jeg har drevet litt med C++ før, men det begynner å bli en stund siden, og nå har jeg tatt fatt igjen.. Og med meg på løpet har jeg en bok å lese i som jeg er meget fornøyd med, .. anyway;

 

I boka står det at

 

cout << setw(6) << setprecision(2) << 134.568767;

 

skal gi følgende output;

 

134.57

 

Men, hos meg så får jeg

 

1.3e+02

 

Warum?

 

 

Til info, så har jeg også husket #include <iomanip.h>

 

Det står også at hvis jeg bare skrive

 

cout << 134.568767;

 

så skal jeg få hele tallet..

 

Mens jeg ender opp med

 

134.569

 

Again; Why?

 

 

Takk for all hjelp! :)

 

mvh Bone

 

ps; kjører Borland C++ 5.01, mens boka er 4.0 -versjon..

uansett vil jeg gjerne vite hvordan jeg får desimaler, istedet for det derre "opphøyd i" tullet.. :)

Lenke til kommentar
Videoannonse
Annonse

Sikkert ingen dårlig idé, men så var det det om faktisk noen av nybegynnerene greide å poste under dette emnet da. :)

 

cout << fixed << setprecision(2) << 134.568767;

 

Ville gitt 134.57. Den vil runde opp som du ser.

 

Det "opphøyd i" tullet kalles vitenskapelig notasjon (scientific notation) hvis jeg ikke skriver/sier feil. Jeg har en tendens til å oversette ting "direkte" fra engelsk til norsk i mangel av eller kunnskap om gode norske ord. Som standard velger den enten fixed eller scientific notasjon automatisk etter som hva den anser vil spare plass; altså etter som hvor "stort" tallet er.

 

Det er mulig boken din er litt gammel. Man bruker #include<iostream> og #include<iomanip> nå. Ikke de tilsvarende med .h bak.

Endret av daysleper
Lenke til kommentar
  • 2 uker senere...
..flere nybegynnere kan selvsagt også poste her!
Benytter meg av dette nå jeg ;)

 

Lurte på hva "!=" vil si...

F.eks

[...]
while(c !=cols)  {
cout << greeting;
c += greeting.size();
} 
[...]

 

Er det slik at det IKKE (usann/false) stemmer?

Hva vil egentlig "size()" si, er det slik at det er f.eks her antall bokstaver i greeting?

 

Takk for svar :thumbup:

Endret av moesen
Lenke til kommentar

greeting er en string ja...

The size() function returns the number of characters currently in the string.
Takk :green:

Du kan få se hele programmet...

Jeg holder på med boka Accelerated C++, kommet til kapittel 2.

#include <iostream>
#include <string>
                                                          
//Her kunne jeg bare ha brukt "using namespace std;" men jeg tar det rett fra boka jeg.. ;)  

using std::cin;        using std::endl;
using std::cout;      using std::string;

int main()
{
cout << "Skriv inn navnet ditt: ";

string name;
cin >> name;

const string greeting = "Heisann, " + name + "!";
const int pad = 1;
const int rows = pad * 2 + 3;
const string::size_type cols = greeting.size() + pad * 2 + 2;
cout << endl;

for (int r = 0; r !=rows; ++r)  {
string::size_type c = 0;

while (c != cols) {
if (r == pad + 1 && c == pad + 1) {
cout << greeting;
c += greeting.size();
}else{

if (r == 0 || r == rows - 1 || c == 0 || c == cols - 1)
cout << "*";

else 

cout << " ";
++c;

}
} 
cout << endl;
}
return 0;
}

 

Jeg må innrømme at jeg er litt usikker på om jeg skjønner absolutt alt med programmet, hadde ihvertfall aldri kommet på dette selv..

Lenke til kommentar

Det løsner når du kommer videre ut i boka.

 

Få med deg deg det boken tar opp nå og ignorer det du ikke forstår ennå. Det kommer siden som sagt.

 

Fra en tidligere post:

"Foresten så er den første feilen nybegynnere gjør akkurat det å "bekymre seg om det de ikke forstår". Så gir de opp og glemmer det de faktisk kanskje har forstått og fått med seg. Konsepter før syntax er noe som kan gjentaes i det uendelige har jeg inntrykk av."

 

Hvis du ikke har testet er det altid lurt å prøve noen oppgaver. :scared:

 

Gudd løkk! :thumbup:

Lenke til kommentar
Det løsner når du kommer videre ut i boka.

 

Få med deg deg det boken tar opp nå og ignorer det du ikke forstår ennå. Det kommer siden som sagt.

 

Fra en tidligere post:

"Foresten så er den første feilen nybegynnere gjør akkurat det å "bekymre seg om det de ikke forstår". Så gir de opp og glemmer det de faktisk kanskje har forstått og fått med seg. Konsepter før syntax er noe som kan gjentaes i det uendelige har jeg inntrykk av."

 

Hvis du ikke har testet er det altid lurt å prøve noen oppgaver. :scared:

 

Gudd løkk! :thumbup:

Takk for hjelpen ihvertfall. Skal gå vidre i boka, boka er foresten veldig bra/god i motsetning til Dummies boka jeg brukte før. Kommer veldig fort i gang og forklarer setning for setning. Super bok :thumbs:

Lenke til kommentar

OK, som dere sikkert allerede vet er jeg temmelig ny i Linux. Særlig når det gjelder det med konsoll og sånt. Så har jeg et spørsmål angående min fremgangsmåte, for det er noe jeg rett og slett ikke får til!

Sitter og knoter i Kate på et lite skriv-ut-en-melding-program. Det ser slik ut:

#include <iostream>
int main ()
{
cout << "Hei verden!/n";
return 0;
}

...og ligger her:

file:/home/arne_daniel/Documents/programmering/cpp/tester/mldboks.c

 

Når jeg skal kompilere det, prøver jeg å gjøre dette i GCC. Da gjør jeg disse kommanoene:

cd /home/arne_daniel/Documents/programmering/cpp/tester/

gcc --help

gcc -o mldboks mldboks.c

 

Her starter problemet. Jeg får nemlig opp en melding om at fila / mappa ikke eksisterer.

Hva har jeg gjort feil?

Lenke til kommentar

Stroyer...

 

For og compilere C++ kode så må du bruke kommandoen

g++ programnavn.cpp -o programnavn

Det er ved C kompilering man bruker gcc vel?

 

 

Du skrev følgende kode...

#include <iostream>
int main ()
{
cout << "Hei verden!/n";
return 0;
}

Ser du prøver og hoppe en linje med "/n". Tor det er "\n" du hopper en linje med.

Og jeg tror det skal være int main();.

Vet ikke om det har noe og si, jeg bare sier/skriver det uansett.

Lenke til kommentar

Jeg sliter litt med noe småtterier..

 

To ting jeg lurer på. Ett kapittel i boka heter Counting, som tar for seg hvorfor det er bedre og telle fra 0 i stedet for 1. Mye om asymetrik eller noe, skjønner ikke stort. Noen som har en enkel måte og forklare dette på norsk?

 

Den andre tingen:

 

Hva betyr f.eks ++k?

Jeg mener at det betyr økning med en og en.. F.eks i koden nedenfor; k øker med to (k+1+1). Stemmer det eller er jeg helt på jordet?

#include <iostream>
using namespace std;

int main() {
int k = 0;
while(k !=10) {

cout << "*";

++k;

} 

cout << endl;
return 0;
}

Lenke til kommentar

Både ++k og k++ øker med én i de fleste tilfeller. Du kan programmere om dette hvis du vil, slik at operatorene gjør andre ting .. dette kalles "operator overloading", men dette kommer kanskje siden.

 

Hvis du kjører koden du har pastet burde du se med en gang hva som skjer(?).

 

Forskjellen mellom dem (++k og k++) har noe med timing og rekkefølge å gjøre, kjør et experimenth:

 

#include <iostream>

using namespace std;


int main()
{
int a = 0;
int b = 0;

cout << "a: " << endl;
cout << ++a << endl;
cout << a << endl;

cout << endl;

cout << "b: " << endl;
cout << b++ << endl;
cout << b << endl;

}

 

 

Under kjøring:

a:

1

1

 

b:

0

1

 

Comprenez-vous?

 

 

Det første spørsmålet ditt rekker jeg ikke å forklare; men jeg kan si meg enig at det er bedre å starte fra 0. :)

 

:xmas:

Lenke til kommentar

int arrayAvInter[5];

 

bare husk at dette går fra 0 til 4

 

og ikke fra:

 

0 til 5

eller

1 til 5

eller.no.sånnt

 

altså du kan si:

 

arrayAvInter[0] = 123;

arrayAvInter[1] = 123;

arrayAvInter[2] = 123;

arrayAvInter[3] = 123;

arrayAvInter[4] = 123;

 

men

 

arrayAvInter[5] = 123;

.."går ikke".

Lenke til kommentar
int arrayAvInter[5];

 

bare husk at dette går fra 0 til 4

 

og ikke fra:

 

0 til 5

eller

1 til 5

eller.no.sånnt

 

altså du kan si:

 

arrayAvInter[0] = 123;

arrayAvInter[1] = 123;

arrayAvInter[2] = 123;

arrayAvInter[3] = 123;

arrayAvInter[4] = 123;

 

men

 

arrayAvInter[5] = 123;

.."går ikke".

Hvor "Går ikke" betyr at det antakelig går, men du skriver over andre biter av minnnet enn det du ønsker.

Noen ganger virker det likevel.

 

Mao. ganske fryktelig å finne ut av, av og til!

Lenke til kommentar

Jeg bare fortsetter og spør jeg...

 

if (cin >> x) {/* ... */}

Er det samme som:

cin >> x;
if (cin) {/* ... */}

Bare svar ja eller nei på dette:

Er det slik at "(cin >> x)" sier at hvis jeg i det hele tatt skriver noe, så kommer jeg inn i den "if-" loopen?

 

Og hva er bool? Og hva gjør vector? Hva er mer praktisk med en vector?

 

Hvis noen er så greie og forklarer det er jeg kjempetakknemlig.

 

God Jul foresten :xmas:

Lenke til kommentar

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...