Skocz do zawartości
Forum komputerowe PC Centre

JarekHP

Użytkownicy
  • Zawartość

    2
  • Rejestracja

  • Ostatnia wizyta

Zawartość dodana przez JarekHP

  1. ok, dzieki, program mi zadzialal temat zamkniety, pozdrawiam
  2. Witam. Mam problem z programem, który nie chce się poprawnie skompilować., wyskakuje błąd 'ERROR26: Type mismatch; Problemem są zapewne typy zmiennych zdeklarowanych na początku, o których nie mam większego pojęcia. {Temat: jacoby} Program JJJ; uses crt; {modul wejsciowy programu} type matrix =array[1..20,1..20] of extended; vector = array [1..20] of extended; var stopien, z:integer; macierz :matrix; wart :vector; rozw :vector; Plik :text; procedure Jacobi (n : integer; var a : matrix; var b : vector; mit : integer; eps : extended; var x : vector; var it,st : integer); {---------------------------------------------------------------------------} { } { The procedure Jacobi solves a system of linear equations by Jacobi's } { iteration method. } { Data: } { n - number of equations = number of unknowns, } { a - two-dimensional array containing elements of the matrix of the } { system (changed on exit), } { b - one-dimensional array containing free terms of the system } { changed on exit), } { mit - maximum number of iterations in Jacobi's method, } { eps - accuracy of the solution, } { x - an array containing an initial approximation to the solution } { (changed on exit). } { Results: } { x - an array containing the solution, } { it - number of iterations. } { Other parameters: } { st - a variable which within the procedure Jacobi is assigned the } { value of: } { 1, if n<1, } { 2, if the matrix of the system is singular, } { 3, if the desired accuracy of the solution is not achieved } { under mit iteration steps, } { 0, otherwise. } { Note: If st=1, then the elements of array x are not changed on } { exit. If st=2, then x[i]=0 on exit (i=1,2,...,n), and if } { st=3, then x contains the last approximation to the } { solution. } { Unlocal identifiers: } { vector - a type identifier of extended array [q1..qn], where q1<=1 and } { qn>=n, } { matrix - a type identifier of extended array [q1..qn,q1..qn], where } { q1<=1 and qn>=n. } { } {---------------------------------------------------------------------------} var i,ih,k,kh,khh,lz1,lz2 : integer; max,r : extended; cond : Boolean; x1 : vector; begin if n<1 then st:=1 else begin st:=0; cond:=true; for k:=1 to n do x1[k]:=0; repeat lz1:=0; khh:=0; for k:=1 to n do begin lz2:=0; if a[k,k]=0 then begin kh:=k; for i:=1 to n do if a[i,k]=0 then lz2:=lz2+1; if lz2>lz1 then begin lz1:=lz2; khh:=kh end end end; if khh=0 then cond:=false else begin max:=0; for i:=1 to n do begin r:=abs(a[i,khh]); if (r>max) and (x1[i]=0) then begin max:=r; ih:=i end end; if max=0 then begin st:=2; for i:=1 to n do x[i]:=0 end else begin for k:=1 to n do begin r:=a[khh,k]; a[khh,k]:=a[ih,k]; a[ih,k]:=r end; r:=b[khh]; b[khh]:=b[ih]; b[ih]:=r; x1[khh]:=1 end end until not cond or (st=2); if not cond then begin it:=0; repeat it:=it+1; if it>mit then begin st:=3; it:=it-1 end else begin for i:=1 to n do begin r:=b[i]; for k:=1 to n do if k<>i then r:=r-a[i,k]*x[k]; x1[i]:=r/a[i,i] end; max:=abs(x[1]-x1[1]); for i:=2 to n do begin r:=abs(x[i]-x1[i]); if r>max then max:=r end; if max<=eps then cond:=true; for i:=1 to n do x[i]:=x1[i] end until (st=3) or cond end end end; Procedure wejscie; {procedura wczytujaca dane z pliku tekstowego} var n1,n2 :integer; Begin assign (plik,'c:\wczytaj.txt');{wczytywanie danych z pliku wczytaj.txt} reset (plik); readln (plik,stopien); {wczytanie stopnia macierzy} for n1:=1 to stopien do for n2:=1 to stopien do read(plik,macierz[n1,n1]);{wczytanie macierzy} for n1:=1 to stopien do read (plik,wart[n1]); {wczytanie wektora} close(plik); {zamkniecie pliku} end; Procedure zapisz; {procedura zapisujaca wynik} var n1:integer; begin assign(plik,'c:\rozwiazanie.txt');{utworzenie pliku "rozwiazanie.txt" zawierajacego rozwiazanie} rewrite(plik); for n1:=1 to stopien do write(plik,rozw[n1]:10:5);{zapis rozwiazania w pliku} close(plik);{zamkniecie pliku} end; begin clrscr;{czyszczenie ekranu} wejscie; {procedura wejscie} jacobi(stopien,macierz,wart,rozw,z);{procedura} zapisz; {procedura zapisania} writeln('Plik z rozwiazaniem zapisany na dysku c:, nazwa rozwiaza.txt');{informacja odnosnie polozenia pliku z rozwiazaniem} repeat until keypressed; end. Proszę o pomoc, bo już mi głowa pęka. Pozdrawiam.
×
×
  • Dodaj nową pozycję...