[C++] Vage output bij code

Pagina: 1
Acties:

  • Wasp
  • Registratie: Maart 2001
  • Laatst online: 22:11
Ik heb bij de onderstaande code een hele vage output met Borland C++.

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream.h>

void main()
{
int aantalpcs;

// Kosten site-licentie
const win98se = 4000;
const win2000 = 6000;
const winxp   = 8000;
// Kosten per werkstation per jaar
const kpj98se = 200;
const kpj2000 = 100;
double kpjxp = 66.6;
double tk98se,tk2000,tkxp;
int tellertje = 1;

cout << "Aantal PC's TKW98 TKW2K TKWXP" << endl;
for (tellertje = 1; tellertje <= 10; tellertje++)
  {
  cout << tellertje * 10 << " " << win98se + kpj98se * tellertje << "  ";
  cout << win2000 + kpj2000 * tellertje + " " << winxp + kpjxp * tellertje << endl;

  }
cin.get();
cin.get();
}


Ik krijg op mijn PC de volgende output:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Aantal PC's TKW98 TKW2K TKWXP
10 4200  rce busy8066.6
20 4400  8133.2
30 4600  É<U@8199.8
40 4800  ,*** &*
#0 * 
ɶ_@8266.4
50 5000  0 * 
ɶ_@8333
60 5200  ɶ_@8399.6
70 5400   8466.2
80 5600  8532.8
90 5800  8599.4
100 6000  8666


Ik snap er helemaal niets van. Waar haalt hij ineens rce busy vandaan? :?
Kan iemand deze code misschien compileren in een andere compiler, waar hij misschien wel werkt? Ik heb het al op 2 PC's geprobeerd met Borland C++ 5.02. Of ligt het misschien aan mijn code? (Lijkt me stug ;))

.modbreak: die [code=c++] tag is er niet voor niets ;)

[ Voor 11% gewijzigd door .oisyn op 22-01-2003 11:31 ]

Ryzen 9 5900X, MSI Tomahawk MAX, 32GB RAM, Nvidia RTX 4070 Ti | Mijn livesets


  • RetepV
  • Registratie: Juli 2001
  • Laatst online: 05-06 15:39

RetepV

ALLES valt te repareren

code:
1
2
3
cout << tellertje * 10 << " " << win98se + kpj98se * tellertje << "  "; 
cout << win2000 + kpj2000 * tellertje + " " << winxp + kpjxp * tellertje << endl;
                                     ^^^


Nou werk ik nooit met cin/cout hoor, maar moet die + niet een << zijn?

[ Voor 27% gewijzigd door RetepV op 22-01-2003 10:56 ]

Macbook Pro


Verwijderd

hmm, ik probeer et in ms c++ en krijg error met compilen:
fatal error C1010: unexpected end of file while looking for precompiled header directive

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:42
Ik denk dat het hier aan ligt:
code:
1
cout << win2000 + kpj * tellertje + " " << ...


Je wilt een " " optellen bij tellertje, en dat zal niet lukken. Vervang dat + teken eens door <<

edit:

wat zijn we weer snel vandaag.... :+

[ Voor 15% gewijzigd door whoami op 22-01-2003 10:57 ]

https://fgheysels.github.io/


  • RetepV
  • Registratie: Juli 2001
  • Laatst online: 05-06 15:39

RetepV

ALLES valt te repareren

Verwijderd schreef op 22 januari 2003 @ 10:55:
hmm, ik probeer et in ms c++ en krijg error met compilen:
fatal error C1010: unexpected end of file while looking for precompiled header directive
Moet je #include "stdafx.h" doen. Of 'precompiled headers' bij je project settings uitzetten :).

Macbook Pro


  • Wasp
  • Registratie: Maart 2001
  • Laatst online: 22:11
RetepV schreef op 22 January 2003 @ 10:54:
code:
1
2
3
cout << tellertje * 10 << " " << win98se + kpj98se * tellertje << "  "; 
cout << win2000 + kpj2000 * tellertje + " " << winxp + kpjxp * tellertje << endl;
                                     ^^^


Nou werk ik nooit met cin/cout hoor, maar moet die + niet een << zijn?
Haha, idd. Stomme fout van me. De code werkt nu! Bedankt!

Ryzen 9 5900X, MSI Tomahawk MAX, 32GB RAM, Nvidia RTX 4070 Ti | Mijn livesets


Verwijderd

dan krijg ik dit:

code:
1
2
3
4
e:\program files\microsoft visual studio\myprojects\jim\jim.cpp(16) : warning C4101: 'tk2000' : unreferenced local variable
e:\program files\microsoft visual studio\myprojects\jim\jim.cpp(6) : warning C4101: 'aantalpcs' : unreferenced local variable
e:\program files\microsoft visual studio\myprojects\jim\jim.cpp(16) : warning C4101: 'tkxp' : unreferenced local variable
e:\program files\microsoft visual studio\myprojects\jim\jim.cpp(16) : warning C4101: 'tk98se' : unreferenced local variable

  • RetepV
  • Registratie: Juli 2001
  • Laatst online: 05-06 15:39

RetepV

ALLES valt te repareren

whoami schreef op 22 januari 2003 @ 10:56:
edit:

wat zijn we weer snel vandaag.... :+
Geeft niet, het was correct, dus is het goed :).

Maar dit soort dingen zijn de reden dat ik geen cin/cout gebruik (voor zo ver mogelijk). Het is allemaal wel leuk, die automatische conversies naar het juiste type (operator overloading) maar als je iets verkeerd doet slikt je compiler het gewoon en gaat vrolijk precies het verkeede doen. En dan wordt je niet geholpen, maar juist in je rug gestoken door je compiler :).

Zo te zien aan de output gaat de compiler die string converteren naar een getal, telt dat op bij de rest en maakt dan van het resultaat een pointer ofzo, want het is ongeinitialiseerd geheugen wat er in de output zit.

Operator overloading sucks, blij dat ze dat in Java eruit hebben gelaten.

Macbook Pro


  • RetepV
  • Registratie: Juli 2001
  • Laatst online: 05-06 15:39

RetepV

ALLES valt te repareren

Verwijderd schreef op 22 January 2003 @ 11:03:
dan krijg ik dit:

code:
1
2
3
4
e:\program files\microsoft visual studio\myprojects\jim\jim.cpp(16) : warning C4101: 'tk2000' : unreferenced local variable
e:\program files\microsoft visual studio\myprojects\jim\jim.cpp(6) : warning C4101: 'aantalpcs' : unreferenced local variable
e:\program files\microsoft visual studio\myprojects\jim\jim.cpp(16) : warning C4101: 'tkxp' : unreferenced local variable
e:\program files\microsoft visual studio\myprojects\jim\jim.cpp(16) : warning C4101: 'tk98se' : unreferenced local variable
Maar dat klopt toch? Die variabelen worden toch niet gebruikt?

Warnings zijn gewoon waarschuwingen (het woord zegt het zelf al :)). Er *zou* iets verkeerds kunnen zijn. Als je een warning hebt moet je zelf even kijken of je iets fout hebt gedaan, en als dat niet zo is gewoon de warning negeren of er voor zorgen dat hij niet meer voorkomt.

De compiler vertelt je dat je ze wel hebt gedefinieerd, maar dat ze op dit moment niet gebruikt worden. Als je ze in de toekomst ook niet gebruikt gaan worden, kun je de definitie van die variabelen uit je source weggooien.

[ Voor 34% gewijzigd door RetepV op 22-01-2003 11:13 ]

Macbook Pro


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
RetepV schreef op 22 January 2003 @ 11:07:
[...]
Zo te zien aan de output gaat de compiler die string converteren naar een getal, telt dat op bij de rest en maakt dan van het resultaat een pointer ofzo, want het is ongeinitialiseerd geheugen wat er in de output zit.

Operator overloading sucks, blij dat ze dat in Java eruit hebben gelaten.
Bijna goed.
Die string IS een pointer (C legacy); en bij pointers mag je dus gewoon integers optellen. Dit is niet eens onredelijk:
code:
1
2
3
4
5
6
7
char letter ( int i ) // 1-26 -> a-z, portable
{
  if ( unsigned(i) > 26 ) // range check
    return '?';
  else
    return "?abcdefghijklmnopqrstuvwxyz" [i]; 
}

In tegenstelling tot return ('a'+i); werkt dit ook op IBMs.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1