double-variabeln vergleichen <- gelösst

Für Fragen von Einsteigern und Programmieranfängern...
Stephanie H.
Beiträge: 91
Registriert: Sa 6. Feb 2010, 15:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

double-variabeln vergleichen <- gelösst

Beitrag von Stephanie H. »

Hallo
Ich hab ein Problem mit den double-variabeln
also ich schreib ein konsolenprogramm und das ist mein quellcode:
also ich möchte die längste Strecke herausfinden

Code: Alles auswählen

MaxAbstand:= 0.000001;   
            for i:=0 to Zeilenanzahl do begin  
            for e:=0 to Zeilenanzahl do begin
            if i <> e then begin
            Abstand:=Abstaende[i,e];
            if  Abstand > MaxAbstand then    //also mein problem liegt hier
            begin
            MaxAbstand:=Abstaende[i,e];
            Startpunkt:=i;    
            Endpunkt:= e;      
            end;
            end;
            end;
            end;
und da schreibt das programm immer das hier:

An unhandled exception occurred at $00401F77 :
EInvalidOp : Invalid floating point operation
$00401F77 main, line 210 of project.lpr

An unhandled exception occurred at $00409772 :
EInvalidPointer : Invalid pointer operation
$00409772
$004070A5
$00407110
$004085C6
$004024A8 P$PROJECT_finalize_implicit, of project.lpr
$004089C4
$004082E9

also zeile 210 ist das hier : if Abstand > MaxAbstand then

also wäre nett wenn ihr mir helfen würdet ;)
Zuletzt geändert von Stephanie H. am Fr 14. Mai 2010, 15:02, insgesamt 1-mal geändert.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: double-variabeln vergeleichen

Beitrag von pluto »

Schau mal in deinem anderen Thread nach: Du gibst den Spalten keine Länge. Vermutlich ist das der Fehler auch hier.
MFG
Michael Springwald

Stephanie H.
Beiträge: 91
Registriert: Sa 6. Feb 2010, 15:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: double-variabeln vergeleichen

Beitrag von Stephanie H. »

also eigentlich ist da immer noch eine fehlermeldung von dieser zeile
aber sie hat sich verkürzt und zwar so:

An unhandled exception occurred at $00401F51 :
EInvalidOp : Invalid floating point operation
$00401F51 main, line 210 of project.lpr

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: double-variabeln vergeleichen

Beitrag von pluto »

Nur mal um einen Fehler Auszuschließen:
Teste mal, wass Passiert, wenn du denn Array zugrieff nicht machst. Z.B. Abstand mit 0 Installisiern und MaxAbstand ebenfalls.
Wenn dann kein Fehler auftritt, ist was mit deinem Array nicht inordnung.
MFG
Michael Springwald

Stephanie H.
Beiträge: 91
Registriert: Sa 6. Feb 2010, 15:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: double-variabeln vergeleichen

Beitrag von Stephanie H. »

also er macht nur hier ein Fehler:
SetLength(Abstaende, Zeilenanzahl, Zeilenanzahl);
also als meldung steht da das hier: project.lpr(109,55) Error: Type mismatch
aber solche fehler meldet er eher indirkt wenn ich das Programm mit Lazarus starte da makiert er immer etwas
und wenn ich das exe-Programm starte schreibt er da irgendwas und schließt sich...

Stephanie H.
Beiträge: 91
Registriert: Sa 6. Feb 2010, 15:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: double-variabeln vergeleichen

Beitrag von Stephanie H. »

also wenn ich die tabelle im variabelbereich so definiere :
Abstaende : array of array[0..9999] of double;
zeigt der das an...
da steht dann immer illegal qualifier

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: double-variabeln vergeleichen

Beitrag von pluto »

Mach das mal so wie ich es dir beim Letzten Beitrag gezeigt hatte.... mit array[0...Max,0...Max) of Double
Wobei Max deine Anzahl ist. Damit erstellst du einen 2D Array.
MFG
Michael Springwald

Stephanie H.
Beiträge: 91
Registriert: Sa 6. Feb 2010, 15:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: double-variabeln vergeleichen

Beitrag von Stephanie H. »

da kommen voll viele Fehlermeldungen :O
das ich das nicht vergleichen kann und so...
project.lpr(122,22) Error: Incompatible types: got "Constant String" expected "Array[0..9999] Of Double"
-> Abstaende[a,e]:= 0; //das mit den initialisieren der Tabelle

project.lpr(201,46) Error: Incompatible types: got "Double" expected "Array[0..9999] Of Double"
-> Abstaende[a,i] := Ergebnis; //da teile ich dem feld einen wert zu ergebnis ist auch double

project.lpr(218,31) Error: Incompatible types: got "Array[0..9999] Of Double" expected "Double"
-> if i <> e then begin //keine ahnung was das mit der Tabelle zu tun hat

project.lpr(221,34) Error: Incompatible types: got "Array[0..9999] Of Double" expected "Double"
-> MaxAbstand:=Abstaende[i,e];

project.lpr(247,46) Error: Operator is not overloaded
-> if Abstaende[VorigerPunkt,zeile] < kurz then begin

project.lpr(249,46) Error: Operator is not overloaded
-> if Abstaende[VorigerPunkt,zeile] > MaxAbstand then begin

project.lpr(251,28) Error: Incompatible types: got "Array[0..9999] Of Double" expected "Double"
-> kurz:=Abstaende[VorigerPunkt,e];

project.lpr(285,42) Error: Operator is not overloaded
-> if Abstaende[i,a] < kurz then begin

project.lpr(287,39) Error: Incompatible types: got "Array[0..9999] Of Double" expected "Double"
-> kurz:=Abstaende[i,a];

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: double-variabeln vergeleichen

Beitrag von af0815 »

Frage:
a) sind die Überprüfungen jetzt eingeschalten (wie im anderen Thread vorgeschlagen) ?
b) Wie ist die Deklaration der Variablen bzw. Konstanten ?
c) Was für Maximalwerte können in den Variablen vorkommen, bzw. wie kommst du auch die Grenzen des Array ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Stephanie H.
Beiträge: 91
Registriert: Sa 6. Feb 2010, 15:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: double-variabeln vergleichen

Beitrag von Stephanie H. »

a) ja b) alles ist double c) so 5-7 stellige Zahlen glaub ich

aber ich hab die fehlermeldungen auf 4 stück reduziert und 3 davon sind eigentlich die gleiche
also das sind immer solche fehlermeldungen wenn ich einem Tabellenfeld von "Abstaende" einen Wert zuweise
oder einer anderen double-variabel einen wert von der tabelle zuweise...

Problem1:
project.lpr(198,46) Error: Incompatible types: got "Double" expected "Array[0..9999] Of Double"
->Abstaende[a,i] := Doublevariabel;

Problem2:
project.lpr(216,32) Error: Incompatible types: got "Array[0..9999] Of Double" expected "Double"
-> Doublevariabel := Abstaende[i,e];

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: double-variabeln vergleichen

Beitrag von pluto »

Zu Problem1: Sind e und i vom Typ Integer ?
MFG
Michael Springwald

Stephanie H.
Beiträge: 91
Registriert: Sa 6. Feb 2010, 15:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: double-variabeln vergleichen

Beitrag von Stephanie H. »

jep die bestimmmen ja welche zeile und welche spalte in der tabelle das ist...

Benutzeravatar
theo
Beiträge: 10865
Registriert: Mo 11. Sep 2006, 19:01

Re: double-variabeln vergleichen

Beitrag von theo »

Stephanie H. hat geschrieben:a) ja b) alles ist double c) so 5-7 stellige Zahlen glaub ich
Wie wär's wenn du wenigstens mal die Fragen sorgfältig beantworten würdest?
Es ist nicht alles "double", du hast ja arrays drin.

Zeig deine Variablendeklarationen wie af0815 es verlangt hat.
z.B.

Code: Alles auswählen

const max=50;
var mya:array[0..Max,0..Max] of Double;
begin
  mya[1,49]:=34.38;
  Writeln(FloatToStr(mya[1,49]));
end;


So könnte man wenigstens etwas dazu sagen.

Stephanie H.
Beiträge: 91
Registriert: Sa 6. Feb 2010, 15:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: double-variabeln vergleichen

Beitrag von Stephanie H. »

ok

Code: Alles auswählen

var
Ergebnis       : double;
Abstaende    : array of array[0..9999,0..9999] of double;
MaxAbstand  : double;
Abstand       : double;
 
{für die Zeile und Spalte der Tabelle}
i              : integer;
a              : integer;
e              : integer;
 
wie muss ich dieses array eigentlich intialisieren
also bei meinen anderen array hab ich das so gemacht...:
 
     SetLength(X, Zeilenanzahl);
     SetLength(Y, Zeilenanzahl);
     SetLength(verbunden, Zeilenanzahl);
     SetLength(Abstaende, Zeilenanzahl);   <- so geht das nicht: SetLength(Abstaende, Zeilenanzahl, Zeilenanzahl); 
da kommt immer das hier als fehlermeldung: project.lpr(109,54) Error: Wrong number of parameters specified for call to "SetLength"
 
 
     i:=0;
     REPEAT
     BEGIN
     X[i]:=0;
     Y[i]:=0;
     verbunden[i]:='NEIN';
     inc(i);
     END;
     UNTIL i = Zeilenanzahl;
Zuletzt geändert von Stephanie H. am Do 13. Mai 2010, 14:56, insgesamt 1-mal geändert.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: double-variabeln vergleichen

Beitrag von pluto »

wie muss ich dieses array eigentlich intialisieren
Das habe ich dir doch schon gesagt und Theo hat es dir noch mal gezeigt...

Code: Alles auswählen

SetLength(Abstaende, Zeilenanzahl); <- so geht das nicht: SetLength(Abstaende, Zeilenanzahl, Zeilenanzahl);
Das sind jedoch die Richtigen Parameter SetLength(Abstaende, Zeilenanzahl, Spaltezahl)

Edit01
Bitte setzte doch die richtigen-Code-Tags um deinen Quellcode, so wie ich und die anderen es gemacht haben...
MFG
Michael Springwald

Antworten