Gå til innhold

Bone's Offisielle C++ hjelpetråd


Anbefalte innlegg

Videoannonse
Annonse

Forresten. Takk for et utfyllende svar, zotbar. Jeg skjønte bedre nå hvorfor jeg burde lagt til const PrimeNumber& foran postfix-operatorene og PrimeNumber& for prefix-operatorene da den første returnerer en verdi, mens den første returnerer en adresse (?).

Lenke til kommentar

Jeg skjønte bedre nå hvorfor jeg burde lagt til const PrimeNumber& foran postfix-operatorene og PrimeNumber& for prefix-operatorene da den første returnerer en verdi, mens den første returnerer en adresse (?).

 

Nei (på begge).

 

const PrimeNumber& betegner en referanse som ikke lar deg modifisere objektet. PrimeNumber& betegner en referanse. En måte å tenke på referanser på er å tenke på dem som et annet navn for et objekt som finnes alt. En klassisk bruksmåte for referanser er å sende et objekt til en funksjon uten å betale kostnaden for kopiering av objektet.

Endret av zotbar1234
Lenke til kommentar

Begynnelsen på ett program, eg får denne feilmedlingen:

1>------ Build started: Project: Biome Generator, Configuration: Debug Win32 ------1> Biome Generator.cpp1>c:\code\c++\vsc++\biome generator\biome generator\biome generator.cpp(16): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data1>c:\code\c++\vsc++\biome generator\biome generator\biome generator.cpp(18): error C2143: syntax error : missing ';' before 'constant'1>c:\code\c++\vsc++\biome generator\biome generator\biome generator.cpp(18): error C2059: syntax error : ';'1>c:\code\c++\vsc++\biome generator\biome generator\biome generator.cpp(19): error C2143: syntax error : missing ';' before 'constant'1>c:\code\c++\vsc++\biome generator\biome generator\biome generator.cpp(19): error C2059: syntax error : ';'1>c:\code\c++\vsc++\biome generator\biome generator\biome generator.cpp(20): error C2143: syntax error : missing ';' before 'constant'1>c:\code\c++\vsc++\biome generator\biome generator\biome generator.cpp(20): error C2059: syntax error : ';'1>c:\code\c++\vsc++\biome generator\biome generator\biome generator.cpp(32): warning C4390: ';' : empty controlled statement found; is this the intent?========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

 

 

Med denne koden:

 


#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

using namespace std;

void Biome(){

int biomeChoiceTemp, biomeChoiceArea, biomeChoiceGeography;

biomeChoiceTemp      = rand() 10%;
biomeChoiceArea      = rand() 10%;
biomeChoiceGeography = rand() 10%;
}


int main()
{   
srand ( time(NULL) );

int createBiome;
cout << "Type 1 to generate a biome: ";
cin  >> createBiome;

if (createBiome, "1");

return 0;
}

Endret av Gabbe
Lenke til kommentar

Jeg skjønte bedre nå hvorfor jeg burde lagt til const PrimeNumber& foran postfix-operatorene og PrimeNumber& for prefix-operatorene da den første returnerer en verdi, mens den første returnerer en adresse (?).

 

Nei (på begge).

 

const PrimeNumber& betegner en referanse som ikke lar deg modifisere objektet. PrimeNumber& betegner en referanse. En måte å tenke på referanser på er å tenke på dem som et annet navn for et objekt som finnes alt. En klassisk bruksmåte for referanser er å sende et objekt til en funksjon uten å betale kostnaden for kopiering av objektet.

 

Ok, takk igjen. Det ser ut som om jeg må lese meg litt opp på overlagringer igjen :)

Lenke til kommentar

Ser ut til at eg har flere problemer med random. Slik eg ser det skal programmet generere ett tilfeldig tall mellom 1 og 10, men det som skjer er at eg bare får "biomeChoiceTemp" til å vere 1. Uansett. Og if funksjonen i int main() ser ikke ut til å fungere da eg kan skrive inn hva eg enn måtte ønske og allikevel får eg"biomeChoiceTemp" til å vere en og output blir at Biomens temperatur er 20..

 

 

 

#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

using namespace std;


void Biome(){        


int biomeChoiceTemp, biomeChoiceArea, biomeChoiceGeography;

       biomeChoiceTemp      = rand() % 10 + 1;
      // biomeChoiceArea      = rand() % 10;
      // biomeChoiceGeography = rand() % 10;        

	if (biomeChoiceTemp = 1){
	    cout << "the temperature on this biome is 20 celcius\n";
	}
    else if (biomeChoiceTemp = 2){
	    cout << "the temperature of this biome is -49 celcius\n";
	}
	else if (biomeChoiceTemp = 3){
	    cout << "the temperature of this biome is 30 celcius\n";
	}
	else if (biomeChoiceTemp = 4){
	    cout << "the temperature of this biome is -12 celcius\n";
	}
	else if (biomeChoiceTemp = 5){
	    cout << "the temperature of this biome is 12 celcius\n";
	}
	else if (biomeChoiceTemp = 6){
	    cout << "the temperature of this biome is 9 celcius\n";
	}
    else if (biomeChoiceTemp = 7){
	    cout << "the temperature of this biome is -30 celcius\n";
	}
	else if (biomeChoiceTemp = 8){
	    cout << "the temperature of this biome is -20 celcius\n";
	}
	else if (biomeChoiceTemp = 9){
	    cout << "the temperature of this biome is 39 celcius\n";
	}
    else if (biomeChoiceTemp = 10){
	    cout << "the temperature of this biome is 60 celcius\n";
	}
	else if (biomeChoiceTemp > 10){
	    cout << "the temperature of this biome is 1 celcius\n";
	}
	else if (biomeChoiceTemp < 1){
	    cout << "the temperature of this biome is 3 celcius\n";
	}
}


int main()
{   

int biomeChoiceTemp, createBiome;

srand ( time(NULL) );

cout << "this program is a early version of automatic Biome Design, use with caution!\n";
cout << "Type exactely what the program wants you to do";
cout << "\nType 1 to generate a biome: ";
cin  >> createBiome;

if (createBiome = 1){
    Biome();
}
system("pause");
return 0;
}

Lenke til kommentar

I if-setningen så bruker du "="-operatoren som også kalles assignment-operatoren. Det som skjer er at du setter createBiome = 1 i betingelsen noe som alltid vil stemme. Du må istedet bruke "==" som returnerer en boolsk verdi for om uttrykket er sant eller ikke.

 

Jeg er ikke helt sikker på hvorfor du ikke får tilfeldige tall, men jeg pleier og bruke #include <ctime> i stedet for "time.h", selv om jeg ikke tror det skal ha noe å si, men det skader jo ikke å sjekke.

  • Liker 1
Lenke til kommentar

I if-setningen så bruker du "="-operatoren som også kalles assignment-operatoren. Det som skjer er at du setter createBiome = 1 i betingelsen noe som alltid vil stemme. Du må istedet bruke "==" som returnerer en boolsk verdi for om uttrykket er sant eller ikke.

 

Jeg er ikke helt sikker på hvorfor du ikke får tilfeldige tall, men jeg pleier og bruke #include <ctime> i stedet for "time.h", selv om jeg ikke tror det skal ha noe å si, men det skader jo ikke å sjekke.

 

Takk haarod :) Fikk det til med == istedefor = uten å bytte fra time.h til ctime. Skal huske det fra nå av.

 

EDIT: gjikk fint :D

Endret av Gabbe
Lenke til kommentar

Ut i fra postene dine virker det litt som du kopierer og limer inn diverse kode og tester (?). Dette lærer du sikkert mye av, men du går kanskje glipp av noen av de helt grunnleggende tingene i språket. En kort introduksjon til C på norsk er lagt ut her hvis du er interessert. :) (Det er jo ikke akkurat C++, men mye av det grunnleggende er likt.)

Endret av Jaffe
Lenke til kommentar

Mhm eg kopirer og tester litt nå. De tingene eg kan, eller føler eg kan nå, er cout og cin, bruke matte i cin og cout, bruke int, double, char og eg tror eg har taket på void og random også, men er ikke sikker. Eg skal ta en titt på den introduksjonslinken, ligner C og C++? (navnet tilsier jo så :roll: )

Lenke til kommentar

Man kan kode objekt-orientert i C også om man vil.

God C++ kode er gjerne utformet helt annerledes enn god C. Man ser knapt at førstnevnte er basert på sistnevnte. :p

Mulig det. Jeg kjenner ikke så godt til C, men selv om god kode ser forskjellig ut i de to språkene betyr ikke det at språkene er veldig forskjellig.

Lenke til kommentar

Når man programmerer GUI (windows forms) med C++ må brukeren som kjører programmet ha .NET framework installert da? Eventuelt i hvilke tilfeller (/programmeringsspråk) trenger ikke brukeren ha .NET framework installert for å kjøre programmet?

I Express tror jeg kun form designer for Windows Forms er tilgjengelig, men hvis du skrur av CLR og bruker Windows API-et direkte, MFC, GTK eller Qt så slipper du å ha .NET installert.

Først og fremst må du ha .NET hvis du bruker /CLR switchen på kompileren, som gjør at kompilatoren kompilerer til CLR kode istedet for native code.

 

Mitt tips er å ikke bruke CLR med mindre du har en grunn til å gjøre det. Fordi ellers vil C++ bruke masse .NET utvidelser (og språket heter plutselig C++/CLI fordi det er et supersett av C++)

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