Паскаль, файлы
Вложений: 2
Посмотрите пожалуйста верно ли написана программа для таких вот заданий: Задание №1
Создать типизированный файл целых чисел. Записать в него с консоли последовательность целых чисел, конец последовательности (терминатор) – ноль, который не записывается в файл. Определить первое по порядку отрицательное и последнее положительное числа и их позиции в файле (нумерация данных в файле начинается с нуля). Предусмотреть случай, когда таких чисел в файле нет. Оставить в файле только числа, находящиеся между ними. Program Variant_8; var n, i, x, y: integer; a:array[0..20] of integer; begin WriteLn('Laboratornaya rabota #8_1'); WriteLn('Variant #8'); WriteLn('IS-12-2'); WriteLn('Hamchuk Evgeniy'); WriteLn; writeln('Input of numbers, the end input - 0'); assign(output, 'C:\users\STEAM\output.txt'); rewrite(output); n := -1; x := -1; y := -1; while(true) do begin read(i); if i = 0 then break; write(i, ' '); n := n + 1; end; close(output); assign(input, 'C:\users\STEAM\output.txt’); reset(input); for i := 0 to n do begin read(a[i]); if (a[i] < 0) and (x < 0) then x := i; if a[i] > 0 then y := i; end; close(input); assign(output, 'C:\users\STEAM\output.txt’); rewrite(output); if x = -1 then writeln('There are no negative numbers') else if y = -1 then writeln(' There are no positive numbers') else for i := x + 1 to y - 1 do write(a[i], ' '); end. Задание №2 Создать текстовый файл, в который построчно записать прямоугольный массив massivnm, заполненный целыми случайными числами в диапазоне от v_min до v_max. Размеры массива n и m задать константами. Границы диапазона v_min и v_max задать с консоли. Вывести на экран строку с минимальной суммой элементов и столбец с максимальной суммой элементов. При чтении из файла считать размеры массива неизвестными. Определить их при чтении файла. Program Variant_8; var n, m, i, j, v_min, v_max, min, max: integer; s : array [1..20] of integer; a:array[1..20, 1..20] of integer; begin WriteLn('Laboratornaya rabota #8_2'); WriteLn('Variant #8'); WriteLn('IS-12-2'); WriteLn('Hamchuk Evgeniy'); WriteLn; writeln('Inter v_min и v_max'); readln(v_min, v_max); assign(output, 'C:\users\STEAM\output.txt'); rewrite(output); writeln('4 5'); for i := 1 to 4 do begin for j := 1 to 5 do write(random(v_max - v_min+1)+ v_min, ' '); writeln; end; close(output); assign(input, 'C:\users\STEAM\output.txt'); reset(input); readln(n, m); min := 1; max := 1; for i := 1 to n do begin s[i] := 0; for j := 1 to m do begin read(a[i, j]); s[i] := s[i] + a[i, j]; end; if s[i] < s[min] then min := i; end; close(input); for j := 1 to m do begin s[j] := 0; for i := 1 to n do s[j] := s[j] + a[i, j]; if s[j] > s[max] then max := j; end; assign(output, 'C:\users\STEAM\answer.txt'); rewrite(output); writeln('Stroka s min summoy elementov - ', min); writeln('Stolbec s max summoy elementov - ', max); close(output); end. |
Буду очень благодарен если поможете исправить ошибки, если они есть.
|
Цитата:
И еще вопрос: какой у Вас Паскаль? Потому что с файлами input, output, создаваемыми по умолчанию, я встречался только в ископаемом ANSI-Паскале и полагал, что подобная чушь давно и прочно забыта. Просветите, пожалуйста. |
Я делаю через Pascal ABC.net, исправьте пожалуйста как время будет, потому что я не могу понять как там сделать.
|
Цитата:
|
Я просто пока новичок в программировании, а нам толком ничего не объясняют. Я над этой работой долго думал и уже ничего в голову не приходит.
|
Цитата:
|
Хорошо. Заранее спасибо.
|
Посмотрите вариант первой задачи. Я сделал без массива, но с двумя файлами. Имена файлов и пути поправьте, как Вам надо. И не удивляйтесь, если, открыв в текстовом редакторе созданные программой файлы, Вы вместо чисел увидите непонятный набор символов. Так и должно быть, это свойство типизированных файлов. В отличие от текстовых.
Код:
Program Variant_8; |
Вложений: 1
Владимир, у меня вылетает такая вот ошибка. И в файле написана только одна строка. Так и должно быть или что то не так?
|
Часовой пояс GMT +4, время: 02:48. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.