str1ker
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Две задачи на паскале -- наполовину решенные Требуется помощь Код: uses crt; const n=5; var a:array[1..n,1..n+1] of real; i,j,t,i1,j1:integer; k:real; begin clrscr; randomize; for i:=1 to n do begin for j:=1 to n+1 do begin a[i,j]:=random(40)+1; write(a[i,j]:5:1); end; writeln; end; for t:=1 to n-1 do begin for i:=t+1 to n do begin k:=-1/a[i,t]*a[t,t]; for j:=t to n+1 do begin a[i,j]:=a[i,j]*k+a[t,t]; end; end; end; writeln; for i:=1 to n do begin for j:=1 to n+1 do begin write(a[i,j]:7:1); end; writeln; end; writeln; for t:=n downto 1 do begin for i:=n-1 downto 1 do begin k:=-1/a[i,t]*a[t,t]; {writeln(k);readln;} for j:=n downto t-n+i do begin { writeln(' I:',i,' J:',j,' A:',a[i,j]);readln; } a[i,j]:=a[i,j]*k+a[t,t]; { writeln(a[i,j]);readln; } end; for i2:=1 to n do begin for j2:=1 to n+1 do begin write(a[i2,j2]:7:1); end; writeln; end; readln end; end; writeln; for i:=1 to n do begin for j:=1 to n+1 do begin write(a[i,j]:7:1); end; writeln; end; readln; end. | В общим тут методом Гаусса решаем систему линейных уравнений. Матрицу a приводим к нулям выше и ниже главной диагонали. Ниже как приводить к нулям я сделал, а вот с верхним не могу разобраться. Гляньте plz (проверка на линейно зависимые столбцы не сделаны, так что может иногда выдавать деление на ноль) Задача 2: Дана последовательность из 10 символьных строк. Напечатать таблицу частоты встречаемости пар англ. букв в виде: a b c .. a 1 5 b 3 c .. То есть в тексте полседовательность aa встречается 1 раз, ab-пять раз, bc-3 раза и т.д Код: uses crt; var i,j,k:integer; s,s1:string; b,c:char; a:array['a'..'z','a'..'z'] of integer; int:integer; begin clrscr; for c:='a' to 'z' do for b:='a' to 'z' do begin a[c,b]:=0; s1:=s1+c; end; for k:=1 to 10 do begin write('String',k,':');readln(s); for i:=1 to length(s)-1 do begin if pos(s[i],s1)<>0 then a[s[i],s[i+1]]:=a[s[i],s[i+1]]+1 else end; end; clrscr; for b:='a' to 'b' do write(b:5); for c:='a' to 'f' do begin write(c); for b:='a' to 'f' do begin write(a[c,b]:5); end; writeln; end; readln; end. | Все работает, но вот траблы с выводом -- надо НЕ выводить пустые столбцы (максимально оптимизированно) |