Gå til innhold

Bone's Offisielle C++ hjelpetråd


Anbefalte innlegg

Ok, skal ikke snakke mot bedre vitende. Å kalle det hovedideen er kanskje bare ignoranse fra min side; jeg har ikke hatt noe spesielt forhold til OO og brukte det mest da jeg dreiv med C++, så min idé av OO har vært nettopp dette (data + metoder). Når det er sagt så vil jeg jo fortsatt påstå at klasser med metoder kan være et godt verktøy, om det så ikke er hovedideen i OO.

Lenke til kommentar
Videoannonse
Annonse

Don't feel bad, det er ofte sånn det undervises (og forstås). Men da misser man det virkelige konseptet bak, og det er synd.

 

Metoder er en måte å implementere message passing på. Strukturerer du deg deretter er det et fabelaktig nyttig verktøy.

Endret av Lycantrophe
Lenke til kommentar

Jeg har forsåvidt vært innom message passing før, men da en veldig teoretisk implementasjon vha. closures i SICP (objektene var da funksjoner som tar inn en melding og returnerer en funksjon (en closure som har objektets variabler bundet til seg) som tilhører den meldingen). Har ikke tenkt på at det var så knyttet til metoder i andre spåk. F.eks. polymorfi er da egentlig 'bare' å sende samme melding til flere objekttyper (og virtuelle metoder er da en implementasjonsdetalj i C++ for å få det til å funke)?

Lenke til kommentar
Gjest Gjest slettet-ld9eg7s96q

Finnes det er reset funksjon slik at når kalkulatoren er ferdig å regne, så får du mulighet om å avslutte eller starte på nytt?

 

Du må selv programmere inn logikken for dette. Bruk en løkke.

 

bool kjoerprogram = true;

while (kjoerprogram) { // Mens kjoerprogram = true

// program

}

 

Innenfor denne while løkken plasserer du programmet ditt, så lenge kjoerprogram er true kjøres programmet, når du vil avslutte programmet setter du kjoerprogram til false.

Lenke til kommentar

Jeg synes faktisk det er bedre å bruke loop-and-a-half:

 

while( true ) {
/* calc */
if( cond ) break;

	/* more calc */
if( cond2 ) break;

/* wrap up */
}

Da slipper du også en state-mutering, som nødvendigvis er en god ting. Vanskelig å skrive en god test for en while-løkke som avslutter når vilkårlig kode på innsiden føler for det.

Lenke til kommentar
  • 2 uker senere...

Hei,

 

Har nettopp begynt å lære meg C++, og leser boken "C++ Primer Plus" av Stephen Prata. Har lest litt forskjellig (negative) annmeldelser av den i etterkant av at jeg startet, men jeg synes for så vidt at det går ganske greit å følge med på de forskjellige temaene.

 

I kveld (australsk tid) har jeg holdt på med en av oppgavene etter 3. kapittel. Det gis ingen løsning på oppgavene, så jeg tenkte jeg kunne få litt tilbakemeldinger her.

 

Oppgaven er som følger:

 

 

Write a short program that asks for your height in feet and inches and your weight in pounds. (Use three variables to store the information.) Have the program report your body mass index (BMI).To calculate the BMI, first convert your height in feet and inches to your height in inches (1 foot = 12 inches).Then convert your height in inches to your height in meters by multiplying by 0.0254.Then convert your weight in pounds into your mass in kilograms by dividing by 2.2. Finally, compute your BMI by dividing your mass in kilograms by the square of your height in meters.

 

 

 

#include <iostream>
using namespace std;

int feet_to_inches (int);	
float inches_to_meters (float);
float pounds_to_kilograms (float);
float body_mi (float, float);

int main ()
{
cout << "Enter your height in feet: _\b";  
int feet = 0;
cin >> feet;

cout << "and inches: __\b\b";	
int init_inches = 0;
cin >> init_inches;

int inches = feet_to_inches(feet) + init_inches;
float meters = inches_to_meters(inches);

cout << "Enter your weight in pounds (lbs): ___\b\b\b";
int pounds = 0;		  
cin >> pounds;

double kilograms = pounds_to_kilograms(pounds);
float bmi = body_mi(kilograms, meters);

cout << "Your BMI is: " << bmi << endl;  

return 0;
}

int feet_to_inches (int x)
{
return x * 12;
}

float inches_to_meters (float y)
{
return y * 0.0254;
}

float pounds_to_kilograms (float z)
{
return z / 2.2;
}

float body_mi (float a, float b)
{
return a / (b * b);
}

 

Noen som har noen kommentarer? Programmet fungerer, men er det noen ting jeg har gjort som er fy-fy i C++ språket? Noen ting som kanskje kan eller bør gjøres på en annen måte?

Endret av MagnusW
Lenke til kommentar

 

Bare noen raske tilbakemeldinger som jeg legger merke til (ikke noe galt i det du har gjort):

 

1. Deklarasjoner av variabelene du har opprettet ville jeg hatt øverst i main, syns det er mer ryddig og oversiktelig

 

int main ()
{
 int feet = 0;
 int init_inches = 0;
 int inches = 0
 float meters = 0.0f;

 cout << "Enter your height in feet: _\b";
 cin >> feet;

osv

 

2. Vet ikke om du bruker indentering i den oppringelige koden din?

int feet_to_inches (int x)
{
return x * 12;
}

burde kanskje være

int feet_to_inches (int x)
{
 return (x * 12);
}

Det samme gjelder for det som står i main

Endret av Nickless
  • Liker 1
Lenke til kommentar
  • 4 uker senere...

Tror ikke jeg har kommet langt nok til å lage et tekstbasert spill. Følger videoene til thenewboston, er det bra? Eller bør jeg skaffe meg en bok?

 

En god bok er aldri dumt. C++ Primer og Accelerated C++ skal være gode nybegynner bøker. Nyeste versjon av C++ Primer skal være oppdatert med C++11 standaren som jeg mener er obligatorisk hvis du skal lære C++ i dag.

 

http://www.amazon.co...tackoverfl08-20

Endret av Glutar
Lenke til kommentar
  • 3 uker senere...

Okai, da har jeg funnet ut hva jeg vil programmere :) Før jeg går videre i læringen, når og hvorfor bruker man int, VoID, Bool, Double osv ?

 

Når jeg leser spørsmålet ditt, så får jeg lyst til å slå meg i hodet med en hammer. Seriøst, få tak i en bok, bestill på nett, lån på biblioteket, whatever, og les om datatyper. Du kan ikke "gå videre i læringen" før du har en grunnleggende forståelse av dette.

  • Liker 3
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å
×
×
  • Opprett ny...