Avatar billede dennism Nybegynder
07. august 2002 - 12:52 Der er 35 kommentarer og
2 løsninger

Hvad er fejlen i dette C++ program?

Jeg er nybegynder indenfor C++ programmering.

Jeg er ved at læse bogen "C++" afKris Jamsa.

Sidst på side 5 skal man indskrive denne kode, og kompilere den. Men min kompiler (Dev-C++) siger at der er en fejl i denne kode:

#include <iostream.h>

void main(void)
    {
   
        cout << "Det er nemt at programmere C++!";
    }


Det er sikkert mig der har testet noget forkert... Men jeg kan ikke lige se hvad det er! Har indskrevet to gange!

Hvad er fejlen?
Avatar billede dennism Nybegynder
07. august 2002 - 12:53 #1
Disse fejl kommer:

1 D:\cpp\nemt.cpp          parse error before `['
  D:\cpp\Makefile.win      [Build Error]  [nemt.o] Error 1
Avatar billede dennism Nybegynder
07. august 2002 - 12:54 #2
fejl = fejlmeddelser
Avatar billede chries Nybegynder
07. august 2002 - 12:55 #3
hvad melder den som fejl ?
sikert på det ikke kun er en warning ? fordi main normal bruger int ?

int main(void)
    {
   
        cout << "Det er nemt at programmere C++!";
return 0;
    }
Avatar billede chries Nybegynder
07. august 2002 - 12:55 #4
okey det var ikke den =)
Avatar billede dennism Nybegynder
07. august 2002 - 12:56 #5
Skal jeg også indsætte "return 0;", og hvad gør den? Det siger de allere ikke noget om i bogen!
Avatar billede chries Nybegynder
07. august 2002 - 12:57 #6
men kan fortælle den kode du har postet er 100% iorden i visual c++
Avatar billede dennism Nybegynder
07. august 2002 - 13:00 #7
Jeg kan sagtens kompilere denne kode, som ellers minder meget om:

#include <iostream>

void main(void)
{
    cout << "Programmer i C++!";
    cin.get();
}
Avatar billede chries Nybegynder
07. august 2002 - 13:01 #8
prøv at fjerne .h i
#include <iostream.h>
->
#include <iostream>
Avatar billede dennism Nybegynder
07. august 2002 - 13:02 #9
Jeg har lige rettet i den overstående kode, så den er som jeg skal have den!
Og nu kan jeg godt kompilere den! Der var åbenbart en fejl, et eller andet sted!?
Avatar billede dennism Nybegynder
07. august 2002 - 13:02 #10
Ja... Det var der fejlen var!
Men hvorfor skriver de et ".h" i bogen, når det ikke virker?

Laver du ik lige et svar?
Avatar billede chries Nybegynder
07. august 2002 - 13:07 #11
det kommer sikkert an på compiler pakken, det med .h. (kan også være det er en bug)

det virker fint med begge dele i visual c++.
Avatar billede dennism Nybegynder
07. august 2002 - 13:09 #12
oki...

Nu har jeg så læst længere frem i bogen...

Jeg har skrevet disse linier:

#include <iostream>

void main(void)
    {
        cout << "Det er meget nemt at programmere C++!";
        coun << endl << "Og det er også sjovt!";
        cin.get();
    }

Men det giver følgende fejlmeddelser:

  D:\cpp\nemt.cpp  [Warning] In function `int main(...)':
6 D:\cpp\nemt.cpp  `coun' undeclared (first use this function)
                  (Each undeclared identifier is reported only once
                  for each function it appears in.)
Avatar billede dennism Nybegynder
07. august 2002 - 13:10 #13
Er det min kompiler det er galt med igen?

Hvis ja, kan du anbefale en anden gratis kompiler så?
Avatar billede chries Nybegynder
07. august 2002 - 13:14 #14
tryk fejl:
coun << endl
->
cout << endl
Avatar billede dennism Nybegynder
07. august 2002 - 13:17 #15
LOL...

Men ifølge bogen kan man godt bruge Å...
Hvorfor vises der et mærkeligt tegn når jeg forsøger at køre mit program, som indeholder et Å?
Avatar billede chries Nybegynder
07. august 2002 - 13:19 #16
du skal ikke regne med Å virker i en konsol. kommer an på tegnsættet den anvender.

hvis du kører w2k, kan du prøve at starte en prompt op, skrive:
chcp 850
minapp.exe

minapp = dit program
Avatar billede chries Nybegynder
07. august 2002 - 13:21 #17
glem det med chcp, virker ikke :-) har lige slev prøvet det
Avatar billede chries Nybegynder
07. august 2002 - 13:29 #18
det virker hvis du tager værdien for Å i ascii tabellen (165 / 0x8F)

#include <iostream.h>

void main(void)
    {
        cout << "\x08F\Det er nemt at programmere C++!" << endl;
    }

sidste \ fordi efterfølgende er mellem A-F / 0-9
Avatar billede chries Nybegynder
07. august 2002 - 13:29 #19
Avatar billede dennism Nybegynder
07. august 2002 - 14:24 #20
Gider du lige forklare igen!?

Hvordan laver jeg å?
Avatar billede chries Nybegynder
07. august 2002 - 14:25 #21
for at ud skrive "får"

cout << "F\x08Fr";
Avatar billede dennism Nybegynder
07. august 2002 - 14:41 #22
Det er et stort Å... Hvordan laver man så et lille å?
Avatar billede chries Nybegynder
07. august 2002 - 14:42 #23
x86

se i tabelen :-)
Avatar billede dennism Nybegynder
07. august 2002 - 15:21 #24
Kan ikke få det til at virke...

Hvordan skal denne se ud hvis det skal være et lille å:
cout << "F\x08Fr";
Avatar billede nak-m Nybegynder
07. august 2002 - 15:24 #25
#include <iostream>

int main()
{
  cout << "Det er nemt at programmere C++!";
  cout << endl << "Og det er ogs\x86 sjovt!";
  return 0;
}

dette dur! :)
Avatar billede nak-m Nybegynder
07. august 2002 - 15:26 #26
æ = \x91
ø = \x9B
å = \x86
Æ = \x92
Ø = \x9D
Å = \x8F

sådan kan du skrive tegnene!
Avatar billede nak-m Nybegynder
07. august 2002 - 15:48 #27
forresten du burde ikke læse Kris Jamsa's C++ bog...den er forældet og dårlig! Det er f.eks. ikke lovligt at skrive void main(void) - det hedder int main() - det andet der er nærmere C!
Avatar billede dennism Nybegynder
07. august 2002 - 15:50 #28
Lovligt!?
Er det det rigtige ord?

Jeg skal altså skrive:
int main(void)

!?
Avatar billede chries Nybegynder
07. august 2002 - 15:56 #29
ansi standarden siger vist:
int main(int argc, char* argv[])
{
    return 0;
}

men de langt fleste compiler tager "void main( void )" fint.
(nogle giver en warning om det er imod standarden
Avatar billede nak-m Nybegynder
07. august 2002 - 16:06 #30
ja ANSI/ISO standarden siger:

int main()
{
  return 0;
}

det der int argc, char *argv[] behøves ikke!
Avatar billede nak-m Nybegynder
07. august 2002 - 16:09 #31
#include <iostream>
using namespace std;

int main()
{
  cout << "Det er nemt at programmere C++!";
  cout << endl << "Og det er ogs\x86 sjovt!";
  return 0;
}

denne er den mest korrekte :)
Avatar billede dennism Nybegynder
07. august 2002 - 16:10 #32
Hvad gør: "return 0;"?
Avatar billede nak-m Nybegynder
07. august 2002 - 16:13 #33
man kan faktisk selv vælge om man vil bruge

int main(int argc, char* argv[]) { /* ... */ }

eller

int main() { /* ... */ }

men til dit program kan du bare bruge den korte version som jeg har vist dig da der ikke er nogen grund til andet! :)
Avatar billede nak-m Nybegynder
07. august 2002 - 16:21 #34
når programmet støder på return hopper den ud af funktionen! (i dette tilfælde main() hvilket lukker programmet.)

return er faktisk i dette tilfælde ikke nødvendigt da den alligevel automatisk lukker så snart den har kørt hele funktionen igennem!

(jeg er ikke så god til at forklare ting :))
Avatar billede chries Nybegynder
07. august 2002 - 16:21 #35
den returner værdien, der er dit programs exit code ( en værdi man kan tjecke på efter din app er afsluttet) kan bruges til .bat filer osv.
Avatar billede simon.ulsnes Nybegynder
10. august 2002 - 14:15 #36
Eks. på bat fil:

@echo off
dinapp.exe
if errorlevel 0 goto success
goto end

:success
echo "Programmet afsluttede fint..."

:end

// Simon
Avatar billede soepro Nybegynder
13. august 2002 - 12:12 #37
En funktion som har en anden returntype end void, skal *SKAL* afslutte et eller andet sted med return ??? - det gælder også main().

Grunden til at de nationale tegn (æ, ø og å) ser sjove ud, er helt sikkert at din compiler kører under Windows (dvs. tegnsæt ISO9600) mens programmet kører i en DOS-boks (dvs. tegnsæt ASCII, codepage 850 eller 865)

Hvis du skal have dem til at se korrekt ud under DOS-vinduet, er der ingen vej udenom ovenstående 'hex' værdier - med mindre du finder en editor der også kører i en DOS boks.

Jeg har lavet et lille tekst fil vha. copy con <filnavn> fra et DOS-prompt, som jeg bare åbner i min editor og laver copy/paste fra når jeg skal bruge de nationale karakterer:

Lille ae : æ
Lille oe : ø
Lille aa : å
osv.
Ctrl+Z

Filen vil så, når den åbnes i et Windows program se sådan her ud:

Lille ae : ‘
Lille oe : ›
Lille aa : †
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester