Problem z konwersja typow

2011-10-18 15:33
0

Witam.

Fragment kodu ma za zadanie zliczac kolumnty tablicy i wybrac najwiekszy
A wiec dla
3 1
3 1
Powinien pokazac nam 6
Dla
3 4 6
1 3 8
2 9 1
powinien dac 16 czyli srodkowa kolumna
Moj kod wyglada tak, f to integer

   S[f] := 0;
    repeat
//    if S[f] > S[f] then
      for j:=0 to n-1 do
        for i:=0 to n-1 do
        begin
//         S[f]:=Trunc(S[f]);
          S[f] := A[i,j] + S[f];
          f := Cytatf+1;
        end;
      until S[f] > S[f]-1;

I dostaje blad

k.pas(182,26) Error: Incompatible types: got "Double" expected "SmallInt"
k.pas(199) Fatal: There were 1 errors compiling module, stopping
k.pas(0) Fatal: Compilation aborted

Ktos ma jakis pomysl ?

edytowany 1x, ostatnio: madmike, 2011-10-18 18:41
f to integer a pozostałe? - pelsta 2011-10-18 16:43

Pozostało 580 znaków

2011-10-18 16:19
0

k.pas(182,26)

Która to linijka?
Poza tym, istnieje taka funkcja, jak "Inc".


edytowany 1x, ostatnio: Patryk27, 2011-10-18 16:20

Pozostało 580 znaków

2011-10-18 16:44
0

Problemem bylo S : array of integer; zamiast S : array of double;, ale to nie do konca rozwiazalo problem, program sie kompiluje

Ale dostaje nastepujacy komunika

Program
c:...\k.exe
exited with
exitcode = 201

Kod wyglada tak

    repeat
//    if S[f] > S[f] then
      for j:=0 to n-1 do
        for i:=0 to n-1 do
        begin
   //     S[f]:=Trunc(S[f]);
          S[f] := A[i,j] + S[f];
          f := f+1;
        end;
      until S[f] > S[f]-1; 

Chcialem napisac to troche inaczej

 for i := 0 to n - 1 do
  begin
    for j := 0 to n - 1 do write(A[i][j]:10:2,' ');
    writeln;
  end;
    writeln;
    max := 0;
    for i := 0 to n-1 do
    begin
    if max > max-1 then
        S[i] :=  A[i,j] + S[i];
    end; 

Ale dostaje ten sam komunikat.
W konsoli wypisuje

Runtime error 201 at $00402358
$00402358
$0040A671

edytowany 1x, ostatnio: bercow, 2011-10-18 16:45

Pozostało 580 znaków

2011-10-18 16:49
0

Jak ustawiasz rozmiar tablicy dynamicznej?


Pozostało 580 znaków

2011-10-18 17:32
0

Faktycznie, nie zdeklarowalem rozmiaru tablicy S, i program "zadzialal" to znaczy mam ten objaw ktory na poczatku, czyli zlicza kolumne 2
Dla wartosci
12 4
12 4
podaje: 4, a powina byc suma, czyli 8, a naprawde powino byc 24, bo pierwsza kolumna jest wieksza

         SetLength(S,n);
  for i := 0 to n - 1 do
  begin
    for j := 0 to n - 1 do write(A[i][j]:10:2,' ');
    writeln;
  end;
    writeln;
    max := 0;
    for i := 0 to n-1 do
    begin
    if max > max-1 then
        S[i] :=  A[i,j] + S[i];
    end;
        writeln (S[i]:10:2); 

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0