|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Delphi, массивы, запись и чтение из файла
Привет всем, помогите пожалуйста дописать программу, не первый день уже воюю с кодом и башка совсем уже не варит.
Собственно условие задания: "В файле input.pas задана матрица n x m (где n - кол-во строк, m - кол-во столбцов). В файл output.pas записать номера строк и сумму значений тех строк матрицы, где нет отрицательных элементов; записать ноль, если в строке есть отрицательные элементы." Вот мой код, он компилится, программа запускается, но считает неправильно. Если найдете в чем проблема, напишите пожалуйста правильно: Код:
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. |
#2
|
||||
|
||||
Опять олимпиадные задачки. Прибил бы тех кто эту шизу придумывает.
|
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Bargest (13.06.2012)
|
#3
|
|||
|
|||
Хах, согласен. Но это не олимпиадные задачки, а одно из заданий на экзамене по основам алгоритмизации и языкам программирования
|
#4
|
||||
|
||||
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
|||
|
|||
Первый курс факультета "бизнес-информатика" лол
Так мне поможет кто нибудь дописать? А то сдавать то надо |
#6
|
||||
|
||||
Поправь, если ошибаюсь
Код:
FOR I:=0 TO m-1 DO |
#7
|
|||
|
|||
Да не, вроде для строк...
|
#8
|
|||
|
|||
брейкпоинтами надо отлаживать, или можно разбить код на функции
|
#9
|
|||
|
|||
Если знаете как, то напишите пожалуйста, я уже не в состоянии...
|
#10
|
|||
|
|||
я знаю так: писать сразу маленькими функциями, каждую из которых легко проверить
если переписывать желания нет, то должно быть желание изучить что такое breakpoints или даже можно накидать везде в коде writeln-ов чтобы понять что там происходит |
#11
|
|||
|
|||
1. Если тебе размерность данных уже известна, зачем ты читаешь до конца файла? Читай нормально, соответсвенно, если не удалось считать - то данные неправильные и можно просто "упасть".
2. Не увидел отдельного цикла по строкам. Он "спрятан" во внешнем цикле. 3. Лучше оформить чтение и расчет отдельными блоками, так будет проще понимать и отлаживать. 4. Если не ошибаюсь, то после SEEKEOLN(F) надо еще считать сам конец строки (см http://docwiki.embarcadero.com/CodeS...kEoln_(Delphi)) |