Wie weet hoe ik een array van 10000 getallen met 2 decimalen gemaakt krijg want double kan er maar 1000 hebben?
Het is trouwens voor borland c++ (DOS).
Het is trouwens voor borland c++ (DOS).
https://fgheysels.github.io/
1
| float afArray[10000]; |
https://fgheysels.github.io/
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
1
2
| double *pdArray; pdArray = (double*)malloc(10000); |
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Unit1 in 'Unit1.pas';
var
X: TDoubleArray;
I: Integer;
begin
X:=TDoubleArray.Create;
X.Add(4.4);
X.Add(8.9);
X.Add(44);
X.Add(1234);
for I:=0 to X.Count-1 do
Writeln(FloatToStr(X[I]));
X.Free;
Readln;
end. |
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
| unit Unit1;
interface
const
SIZEOF_DOUBLE=SizeOf(Double);
type
PDouble=^Double;
TDoubleArray=class
private
FBuffer: Pointer;
FCount: Integer;
function GetItem(Index: Integer): Double;
procedure SetItem(Index: Integer; const Value: Double);
public
constructor Create;
destructor Destroy; override;
function Add(const Value: Double): Integer;
procedure Delete(const Index: Integer);
property Count: Integer read FCount;
property Items[Index: Integer]: Double read GetItem write SetItem; default;
end;
implementation
{ TDoubleArray }
constructor TDoubleArray.Create;
begin
inherited Create;
FCount := 0;
end;
destructor TDoubleArray.Destroy;
begin
ReallocMem(FBuffer, 0);
inherited Destroy;
end;
function TDoubleArray.Add(const Value: Double): Integer;
begin
ReallocMem(FBuffer, (FCount+1)*SIZEOF_DOUBLE);
SetItem(FCount, Value);
inc(FCount);
Result:=FCount;
end;
procedure TDoubleArray.Delete(const Index: Integer);
var
I: Integer;
begin
for I:=Index+1 to FCount do
SetItem(I-1, GetItem(I));
ReallocMem(FBuffer, (FCount-1)*SIZEOF_DOUBLE);
dec(FCount);
end;
function TDoubleArray.GetItem(Index: Integer): Double;
var
P: PDouble;
begin
P:=FBuffer;
inc(P, Index*SIZEOF_DOUBLE);
Result:=P^;
end;
procedure TDoubleArray.SetItem(Index: Integer; const Value: Double);
var
P: PDouble;
begin
P:=FBuffer;
inc(P, Index*SIZEOF_DOUBLE);
P^:=Value;
end;
end. |
Verwijderd
Ach waarom makkelijk doen als het moeilijk kan?Op woensdag 22 mei 2002 14:45 schreef MrHuge het volgende:
Hmmm, zo maak je het wel erg ingewikkeld.
Zo te zien heeft hij alleen maar een fixed-size array nodig...
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
Helemaal gelijk, en de STL is voorbereid om onder DOS met arrays van meer dan 64K te werken ("Huge allocator"); alleen is de compiler waarschijnlijk te bejaard om dat te supporten.Op woensdag 22 mei 2002 15:05 schreef MrHuge het volgende:
Ok, maar om dit moeilijke dan weer een beetje makkelijker te makenhebben we dan weer de STL (Standard Template Library) met container-classes voor dit soort dynamische lijsten.
Voordeel hiervan is dat je het wiel geen 2x uit hoeft te vinden.
Bovenstaand een reactie van een luie programmeur
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
Reserveer je zo niet gewoon 10000 bytes met daarop een double pointer? Moet het niet zoiets zijn als:Op woensdag 22 mei 2002 14:06 schreef MrHuge het volgende:
Je kunt natuurlijk ook het volgende doen:
code:
1 2 double *pdArray; pdArray = (double*)malloc(10000);
Misschien dattie dit wel vreet...
1
2
| double *pdArray; pdArray = (double*)malloc(10000*sizeof(double)); |
For it is the doom of men that they forget... Huidige en vroegere hardware specs The Z80 is still alive!
XQses, kloptOp woensdag 22 mei 2002 16:22 schreef EXX het volgende:
Reserveer je zo niet gewoon 10000 bytes met daarop een double pointer? Moet het niet zoiets zijn als:
code:
1 2 double *pdArray; pdArray = (double*)malloc(10000*sizeof(double));
He who knows only his own side of the case knows little of that.
Bnet pindle#2913
Ja, maar de "Borland C++ (DOS)" compiler geeft aan dat de OP in de voltooid verleden tijd programmeert.Op woensdag 22 mei 2002 16:31 schreef RickN het volgende:
Mja, maar de topic starter is wel met C++ bezig en dus gebruik je tegenwoordig gewoon:
double array[] = new double[10000]
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
Het feit dat iemand met BC3.1 (DOS) programmeert zegt nog niks over het wel/niet gebruiken van C++. Met BC3.1 kun je prima C++ programmeren...Op woensdag 22 mei 2002 18:24 schreef MSalters het volgende:
Ja, maar de "Borland C++ (DOS)" compiler geeft aan dat de OP in de voltooid verleden tijd programmeert.
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Dat zou ik vreemd vinden, als ze les zouden geven uit een boek specifiek voor bepaalde compiler/omgeving.Gomez12:
Plus over Bc3.1 zijn er goedkopere boeken.
Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz
Klopt, maar het is in het geval van school toch beter om in een windows-based IDE te werken, omdat dat in 90%-99% van de SW-bedrijven gebruikt wordt. BC3.1 op school is dus niet echt een representatieve situatie voor het 'echte' werk.Op donderdag 23 mei 2002 09:24 schreef drm het volgende:
Tja ik wil niet vervelend zijn, maar de IDE van Borland roeleert boven allen. Helemaal voor de DOS omgeving. just mho, ofcourse
https://fgheysels.github.io/