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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2013, 19:15   #1
Роман5день55
Пользователь
 
Регистрация: 27.03.2013
Сообщений: 14
По умолчанию Файли.Зчитиваний даних с файла (Ошибка)

Код:
program Project1;
uses
  crt;
const MaxSize = 100;
infinity = 1000;
var Matrix:array[1..MaxSize,1..MaxSize] of integer;
color:array[1..MaxSize] of integer;
  Ribs:array[1..MaxSize] of record
    a,b:integer;
  end;
n,a,b,k,col,i,s,len:integer;
  procedure Init;
  var i,j,k,len,n,s:integer; f:text ;
    begin
      Assign(f,'INPUT.txt');
      Reset(f);
       Readln(f,n);
      for i:=1 to n do
      for j:=1 to n do
      readln(f,Matrix[i,j]);
      for i:= 1 to n do
      color[i]:= i;
      len:= 0;
    end;
  procedure Findmin(var a,b:integer);
 var min,i,j,len,n,s:integer;
    begin
      min := infinity;
      for i := 1 to n-1 do
      for j := i+1 to n do
      if(matrix[i,j]<min) and (color[i] <> color[j])
        then
        begin
          min:= Matrix[i,j];
          a:= i;
          b:= j;
        end;
    len := len + min;
    end;
  begin
    Init;
    for k:= 1 to n-1 do
      begin
        Findmin(a,b);
        Ribs[k].a:= a;
        Ribs[k].b:=b;
        col:= color[b];
      end;
    for i:=1 to n do
    if color[i] = col then
    begin
    color[i] := color[a];
    end;
for i:= 1 to n-1 do
writeln(ribs[i].a,ribs[i].b);
writeln(len);
readln;
end.

Последний раз редактировалось Stilet; 27.10.2013 в 19:49.
Роман5день55 вне форума Ответить с цитированием
Старый 27.10.2013, 19:47   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,378
По умолчанию

Это фрагмент Вашего кода:
Код HTML:
Ribs:array[1..MaxSize] of record
a,b:integer;
end;          {Этот end обязателен?}
n,a,b,k,col,i,s,len:integer;
procedure Init;
var i,j,k,len,n,s:integer; f:text ;
begin
Assign(f,'INPUT.txt');
Reset(f);
Readln(f,n); {n - переменная целого типа, а мы считываем символы}
...
Это так, на вскидку.
Возможно у Вас такой Паскаль, но ...

Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 27.10.2013, 19:50   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Какая ошибка?
Опять школьники текст съели?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.10.2013, 19:53   #4
Роман5день55
Пользователь
 
Регистрация: 27.03.2013
Сообщений: 14
По умолчанию

ну она не работает......я создал файл, ввел в него данние...но в програме не отображаетса
Роман5день55 вне форума Ответить с цитированием
Старый 28.10.2013, 14:14   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Роман, я исправил явные логические ошибки в вашем коде:
Код:
program Project1;
uses
  crt;
const MaxSize = 100;
  infinity = 1000;

type
  typeMatrix = array[1..MaxSize, 1..MaxSize] of integer;
  typeColorMatrix = array[1..MaxSize] of integer;


procedure Init(var n, len : integer; var Matr : typeMatrix; var colorMatr : typeColorMatrix );
var i, j : integer; f: text;
begin
  Assign(f, 'INPUT.txt');
  Reset(f);
  Readln(f, n);
  for i := 1 to n do
    for j := 1 to n do
      readln(f, Matr[i, j]);
  Close(f);
  for i := 1 to n do
    colorMatr[i] := i;
  len := 0;
end;

procedure Findmin(var Matr : typeMatrix; var colorMatr : typeColorMatrix; n : integer; var a, b, len: integer);
var min, i, j : integer;
begin
  min := infinity;
  for i := 1 to n - 1 do
    for j := i + 1 to n do
      if (matr[i, j] < min) and (colorMatr[i] <> colorMatr[j])
        then
      begin
        min := Matr[i, j];
        a := i;
        b := j;
      end;
  len := len + min;
end;

var
  Matrix: typeMatrix;
  color: typeColorMatrix;
  Ribs: array[1..MaxSize] of record
    a, b: integer;
  end;
  n, a, b, k, col, i, len: integer;

begin
  Init(n, len, Matrix, color);
  for k := 1 to n - 1 do
  begin
    Findmin(Matrix, color, n, a, b, len);
    Ribs[k].a := a;
    Ribs[k].b := b;
    col := color[b];
  end;
  for i := 1 to n do
    if color[i] = col then
    begin
      color[i] := color[a];
    end;
  for i := 1 to n - 1 do
    writeln('for i=',i,' a=',ribs[i].a,' b=', ribs[i].b);
  writeln('len=',len);
  readln;
end.
но, ВНИМАНИЕ!!
Алгоритм выполнения (который, похоже, с косяками), я не исправлял!
Вы забыли написать, какую задачу Вы решаете. Соответственно, угадать по коду, что Вам надо, у меня не получилось.

Успехов!

p.s. да. по поводу вашего файла. Судя по вашему коду он должен иметь такую структуру:
сначала число (-> n ) - размер квадратной матрицы.
затем в отдельных строчках N^2 (N в квадрате) строк, какждое число - один элемент матрицы.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение даних с файла xml amator_roma Visual C++ 11 06.06.2011 14:39
ФАЙЛИ STALKER7538 Паскаль, Turbo Pascal, PascalABC.NET 0 10.10.2010 23:07
Файли ) ALABAMA Паскаль, Turbo Pascal, PascalABC.NET 3 05.06.2010 11:24
Файли ALABAMA Паскаль, Turbo Pascal, PascalABC.NET 6 04.06.2010 05:37
ФАЙЛИ misha25525 Помощь студентам 3 16.04.2010 20:08