Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2012, 18:53   #1
16milashka16
 
Регистрация: 14.12.2011
Сообщений: 9
Печаль чтение СЛАУ из файла

помогите пожалуйста прочитать систему линейных уравнений из файла.
Предположим, что в файле написана система вида:
x1+2x2+х3=4
2x1+x2=4
3х1-х3=-3
необходимо вывести на экран матрицу А:
1 2 1
2 1 0
3 0 -1
и вектор В:
4
4
-3
P.S. система может быть nxn
Заранее спасибо!
16milashka16 вне форума Ответить с цитированием
Старый 15.06.2012, 06:04   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от 16milashka16 Посмотреть сообщение
P.S. система может быть nxn
А какие ограничения на n? Мой код будет корректно работать только до 99.
Код:
// reading System of Linear Equations from a file
// by TinMan, programmersforum.ru

const
  m= 99;  // maximum rank
var
  f: text;
  a: array[1..m,1..m] of integer;
  b: array[1..m] of integer;
  s,t: string;
  i,j,k,n,p,v,c: integer;

function NextLine(var f: text; var s: string): boolean;
begin
  readln(f,s);
  NextLine:= s>''
end;

begin
  Assign(f,'SLE.txt');
  Reset(f);
  n:= 0;
  while NextLine(f,s) do begin
    inc(n);
    while Pos(' ',s)>0 do Delete(s,Pos(' ',s),1);
    s:= UpCase(s);
    for j:=1 to m do begin
      Str(j,t);
      p:= Pos('X'+t,s);
      if (p>0) and ((j>9) or not (s[p+2] in ['0'..'9'])) then begin
        k:= 1;
        repeat
          Val(Copy(s,p-k,k),v,c);
          if c=0 then a[n,j]:= v;
          inc(k)
        until (c>0) or (p=k);
        if (p=1) or not (s[p-1] in ['0'..'9']) then a[n,j]:= 1;
      end
    end;
    Val(Copy(s,Pos('=',s)+1,255),b[n],c)
  end;
  Close(f);
  for i:=1 to n do begin
    for j:=1 to n do write(a[i,j]:4);
    writeln
  end;
  for i:=1 to n do writeln(b[i]);
  readln
end.
Цитата:
Заранее спасибо!
Заранее-то легко сказать, а вот ПОТОМ почему-то всем становится жалко своего драгоценного спасиба для того, кто помог..

P.S.
да, и еще просьба к тебе: постарайся не писать русскую букву Х (ха) вместо латинской буквы X (икс). Твоя экономия нажатий стоила мне пары лишних минут на написание кода..
Предпочитаю на "ты".

Последний раз редактировалось TinMan; 15.06.2012 в 06:10.
TinMan вне форума Ответить с цитированием
Старый 15.06.2012, 11:15   #3
16milashka16
 
Регистрация: 14.12.2011
Сообщений: 9
По умолчанию

Спасибо огромное за помощь
только у меня проблема... на 24 строчке "s:= UpCase(s);" выдает ошибку: нельзя преобразовать тип string в char.
16milashka16 вне форума Ответить с цитированием
Старый 15.06.2012, 11:23   #4
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Вау!!! Пожалуйста!!!
Цитата:
Сообщение от 16milashka16 Посмотреть сообщение
только у меня проблема... на 24 строчке "s:= UpCase(s);" выдает ошибку: нельзя преобразовать тип string в char.
Ты какой компилятор используешь? TurboPascal что ли?
Лан, тогда замени эут строку на такую:
Код:
for i:=1 to Length(s) do s[i]:= UpCase(s[i]);
А вообще, переползай на FreePascal
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 15.06.2012, 11:27   #5
16milashka16
 
Регистрация: 14.12.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
Вау!!! Пожалуйста!!!

Ты какой компилятор используешь? TurboPascal что ли?
Лан, тогда замени эут строку на такую:
Код:
for i:=1 to Length(s) do s[i]:= UpCase(s[i]);
А вообще, переползай на FreePascal
хех)) нее, я на делфи в консоле))

о Господи))) всё работает))) огромное преогромное спасибо))
16milashka16 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из файла pinkiller Общие вопросы C/C++ 3 07.01.2012 07:48
Чтение из файла clasterit Паскаль, Turbo Pascal, PascalABC.NET 6 04.11.2011 17:46
Чтение из файла на си Mostwanted Общие вопросы C/C++ 2 29.05.2011 15:42
Чтение из файла virtuhay266 Помощь студентам 0 27.11.2010 23:27
Чтение из файла DimOn4Ik PHP 1 02.01.2010 22:41