Gå til innhold

Anbefalte innlegg

Hei.

 

Er det noen grunn til at følgende kode ikke skal kunne kompileres i en kompilator ved navn Dev-C++? Den er kopiert fra en bok, så det er kanskje litt forskjellig språk til forskjellige kompilatorer? Kan noen eventuelt fortelle meg navnet på en kompilator hvor denne koden virker? Det er jo ganske viktig at kodene som oppgis i boken virker når man følger boken....

 

1: // Listing 2.2 using cout

2:

3: #include <iostream.h>

4: int main()

5: {

6: cout << "Hello there.\n";

7: cout << "Here is 5: " << 5 << "\n";

8: cout << "The manipulator endl writes a new line to the screen." <<

Âendl;

9: cout << "Here is a very big number:\t" << 70000 << endl;

10: cout << "Here is the sum of 8 and 5:\t" << 8+5 << endl;

11: cout << "Here's a fraction:\t\t" << (float) 5/8 << endl;

12: cout << "And a very very big number:\t" << (double) 7000 * 7000 <<

Âendl;

13: cout << "Don't forget to replace Jesse Liberty with your name...\n";

14: cout << "Jesse Liberty is a C++ programmer!\n";

15: return 0;

16: }

Lenke til kommentar
Videoannonse
Annonse

 // Listing 2.2 using cout

#include <iostream>

using namespace std;

int main()
{
cout << "Hello there.\n";
cout << "Here is 5: " << 5 << "\n";
cout << "The manipulator endl writes a new line to the screen." << endl;
cout << "Here is a very big number:\t" << 70000 << endl;
cout << "Here is the sum of 8 and 5:\t" << 8+5 << endl;
cout << "Here's a fraction:\t\t" << (float) 5/8 << endl;
cout << "And a very very big number:\t" << (double) 7000 * 7000 << endl;
cout << "Don't forget to replace Jesse Liberty with your name...\n";
cout << "Jesse Liberty is a C++ programmer!\n";
return 0;
}

 

try that

Endret av aC
Lenke til kommentar

Fjern .h fra #includene (#include <iostream.h> => #include <iostream>) og legg til using namespace std; så burde det gå bra. Kan virke som om det er en gammel bok du har fått tak i?

 

Når det gjelder vanlige c++-kompilatorer, så finnes det ikke så mange som er vanlige. De jeg kommer på en microsoft sine, mingw/g++ (Dev-Cpp, og "hele" linuxmiljøet bruker denne) og borland sin. Alle bruker den samme c++-koden.

 

Da du ikke fikk kompilert fikk du kanskje en feilmelding? Det skader ikke å google denne.

Endret av Kagee
Lenke til kommentar

Det var mange som tilbød fisk her, men jeg skal prøve å lære deg å fiske litt.

 

Et "namespace" eller navneområde er en måte å dele inn programmet i mindre logiske enheter. Du kan tenke på et namespace som en samling med funksjoner som benyttes til å manipulere en bestemt ting.

 

Et namespace kan for eksempel se slik ut:

 

namespace net_connect
{
 int make_connection();
 int test_connection();
 //og så videre
}

 

Du kan da kalle, fra hvor som helst i programmet

handle = net_connect::make_connection();

 

For å unngå at du må skrive net_connect:: hver gang du vil bruke en funksjon i dette navneområdet så kan du isteden gjøre

using namespace net_connect;
handle = make_connection();

 

Et navneområde, slik jeg har forstått det, kan sees på som en singleton-klasse uten variabler.

 

Så i din kode så kan du fjerne "using namespace std;" og bytte alle "cout" med "std::cout" og programmet vil kompilere.

 

Konseptet med navneområder er relativt nytt og boken din trenger ikke være veldig gammel for å ikke ha dekket dette området. Nå er ikke jeg sikker på når cout ble flyttet til std-navneområdet, men det er det sikkert noen som vet. :)

 

 

Håper det hjelper deg videre.

Lenke til kommentar

Når det gjelder kompilatorer er gcc og Visual C++ helt klart de vanligste.

 

gcc følger med mingw, og Visual C++ får du tak i ved å laste ned Visual C++ Express. (fordelen med VC+ er at det følger med et overlegent IDE)

 

En øvrig kompilator som jeg anbefaler er Digital Mars C++ som er enkel i bruk og krever ingen formell installasjon.

Lenke til kommentar

main() er den funksjonen som kalles først i et (iallefall et commandolinje)-c++-program. Denne må være til stede for at programmet skal gjøre noe.

 

Hva manin() virker som en helt vanlig c++-funsksjon. Hva den gjør aner jeg ikke.

 

int main() betyr at funksjonen main returnerer en int (heltall) når den avslutter. Siden dette er "programfunksjonen" vil dette tallet returneres til operativsystemet. Om alt gikk som det skulle, bør denne returnere 0.

 

int main() {
if ( ( 2 + 2 ) == 4 ) {
	return 0; // 2+2=4, verden fungerer som den skal
} else {
	return 100;  // 2+2 er ikke 4, verden er gått under
}
}

 

Vanligvis kan du bare bruke den slik

 

int main() {
/* mange linjer kode som gjør noe */
return 0;
}

Endret av Kagee
Lenke til kommentar

Dette programmet virker jo utmerket med main(). Hva skal til for at man må bruke int main()? Jeg har laget programmet selv, og har prøvd noen enkle funksjoner. Det er grunnen til at det er litt rart og endel unødvendige ting, hvis noen skulle lure på det...

 

#include <iostream>

 

using namespace std;

 

main()

{

unsigned short int Lengde, Bredde;

Lengde = 5;

Bredde = 5;

#define H 15

unsigned short int Volum = Lengde * Bredde * H;

cout << "Volum: " << Volum;

cout << "cm^3\n" "hvor Volum = Lengde * Bredde * Høyde";

return 0;

}

Lenke til kommentar

int main() er synonymt med å bare skrive main().

Den går utifra at du mener int main.

 

Hvis du vil droppe return 0; på slutten, skriver du void main istedet.

 

Du burde i det minste får en warning, du gjør det i VC++ vet jeg, men jeg får ikke det i gcc.

Endret av GeirGrusom
Lenke til kommentar
Du burde i det minste får en warning, du gjør det i VC++ vet jeg, men jeg får ikke det i gcc.

 

Hvis du slenger på -Wall i g++ (f.eks eclipse gjør som std. det) får du

maintest.cpp:5: warning: ISO C++ forbids declaration of ‘main’ with no type

 

Return code er brukt mye av f.eks && og ||-kommandoene i linux, der program2 kun kjøres om program1 en returnerer 0.

~$ program1 && program2

eller at program2 kun kjøres om program1 returnerer noe annet enn null

~$ program1 || program2

 

Return code kan være en unsigned byte, dvs fra 0 til 255 (iallefall i linux/bash)

 

~$ program1; echo $?

echo vil skrive ut return code

Endret av Kagee
Lenke til kommentar
  • 2 uker senere...

Hei igjen.

 

Jeg har skrevet inn denne koden:

 

#include <iostream>

#include <iomanip>

#include <fstream>

using namespace std;

 

int main() {

int sum = 0;

int x;

ifstream inFile;

 

inFile.open("test.txt");

if (!inFile) {

cout << "Unable to open file";

exit(1); // terminate with error

}

 

while (inFile >> x) {

sum = sum + x;

}

 

inFile.close();

cout << "Sum = " << sum << endl;

return 0;

}

 

Hva forutsetter den at ligger i "test.txt"? Jeg får opp "no match for 'operator<<'in 'inFile<<x'"

Lenke til kommentar

Jeg kan bare gjette på at du på et tidspunkt hadde

inFile << x

i koden din, i stedet for

inFile >> x

 

Det første fungerer ikke siden du har åpnet filen for lesing, det siste fungerer.

 

I While-løkken din, bør du vel heller ha

while( ! inFile.eof ( ) )

Endret av Kagee
Lenke til kommentar
Hmm, vet ikke helt om jeg skjønner.

...

Hva? Du har jo nesten hele koden. Her har jeg endret noen småting i koden din, og den fungerer

 

#include <iostream>
#include <fstream>

using namespace std;

/* Eksempel på test.txt:
1 2 3 1
1
1 1
1000
// Gir svaret "Sum = 1010"
*/

int main() {
	int sum = 0;
	int x;
	ifstream inFile("test.txt");

	if (inFile) {
			inFile >> x;
			while (!inFile.eof()) {
					sum += x; // samme som sum = sum + x;
					inFile >> x;
			}

			inFile.close();
			cout << "Sum = " << sum << endl;
			return 0;
	} else {
			cerr << "Feil med fil!\n";
			return 1;
	}
}

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