Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Delphi, массивы, запись и чтение из файла


Автор: Reaper052 13.6.2012, 18:21
Привет всем, помогите пожалуйста дописать программу, не первый день уже воюю с кодом и башка совсем уже не варит.

Собственно условие задания: "В файле input.pas задана матрица n x m (где n - кол-во строк, m - кол-во столбцов). В файл output.pas записать номера строк и сумму значений тех строк матрицы, где нет отрицательных элементов; записать ноль, если в строке есть отрицательные элементы."

Вот что у меня получилось, но мне говорят что в корне неверно написано... я честно говоря уже не могу придумать что-то еще, а сдавать уже через 10 часов. В общем напишите пожалуйста правильно, если можете.
Код
PROGRAM exam2;
{$APPTYPE CONSOLE}
  
uses
  SysUtils;
 
VAR
  n,m: Integer;
  I,J,K,Sum,Arr :Integer;
  F,F1:TEXT;
BEGIN
  ASSIGNFile(F,'input.PAS');
  RESET(F); //Открываем исходный файл для чтения
  
  ASSIGNFile(F1,'output.PAS'); //И выходной для записи
  REWRITE(F1); 
  
  READLN(F,n,m); //Считаем размерность матрицы - первая строка
  
  J:=0;
  WHILE ((NOT EOF(F)) AND (J<n)) DO //До конца файла EOF или количества строк массива
  BEGIN
    Sum:=0;
    FOR I:=0 TO m-1 DO
    BEGIN
      Read(F,K); //Читаем элемент строки массива
      //Проверим на отрицательный элемент и накопим сумму
      IF K>=0 Then INC(Sum,K) Else
      BEGIN
        Sum:=0;
        SEEKEOLN(F); //Пропускаем до конца строки
        BREAK;
      END;
    END;
    //Выведем номер строки и сумму
    WRITELN(F1,J,' ',Sum);
    INC(J); //Считаем количество строк
  END;
  
 
  //Закрыли оба файла...
  CloseFile(F); 
  CloseFile(F1); 
END.

Автор: iff 13.6.2012, 18:42
Цитата(Reaper052 @  13.6.2012,  18:21 Найти цитируемый пост)
SEEKEOLN(F); //Пропускаем до конца строки

SEEKEOLN не пропускает до конца строки, а возвражает true, если достигнут конец строки.

Автор: northener 14.6.2012, 00:28
Цитата(iff @  13.6.2012,  18:42 Найти цитируемый пост)
SEEKEOLN не пропускает до конца строки, а возвражает true, если достигнут конец строки.

Хороший ответ на "Помогите написать программу на экзамен".  smile
Имеете опыт преподавания?

Автор: iff 14.6.2012, 21:31
Я бы убрал SEEKEOLN(F) вообще, а после end в 34-ой строке поставил readln(f).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)