Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачка с массивом и файлом
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
WiT
Есть задача:

Создать файл,содержащий массив целых чисел. Определить количество элементов массива.
Переменной L присвоить значение True ,если в массиве нечетное число элементов и значение
False в противном случае.

Нарисовал всё это так:


uses crt;

const n=13;

var f:text; i,kol:integer; s:real; l:boolean;
mas: array [1..n] of integer;
begin clrscr; randomize;
for i:=1 to n do begin
mas[i]:=random(25)-5; write(mas[i],' '); end;
for i:=1 to n do
kol:=kol+1; writeln;
writeln('chislo_elementov= ',kol);
if (kol mod 2)=0 then l:=false else l:=true;
writeln('L: ',l);
assign(f,'massiv1.txt'); rewrite(f);
for i:=1 to n do
write(f,mas[i],' '); writeln(f);
writeln(f,'chislo_elementov= ',kol);
writeln(f,'L: ',l); close(f);
readkey; end.


Т.е. число элементов задал сам,а надо чтобы при каждом запуске
число было четным или нечетным - менялось,как этого можно добиться? посоветуйте ,умные люди!!!
ибо конечное значение массива не удается задать переменной....
volvo
Цитата
Т.е. число элементов задал сам,а надо чтобы при каждом запуске число было четным или нечетным - менялось,как этого можно добиться?
Задание читай внимательнее: тебе надо создать файл, а не массив... Вот так и делаем:

var
f: FILE of integer; { <--- Исправлено !!! }
...
begin
randomize;
count := random(20) + 20;
assign(f, 'array.dat'); rewrite(f);

for i := 1 to count do begin
elem := random(25) - 5; write(f, elem);
end;
close(f);

{
ну вот, файл создан, теперь открывай его и считай,
сколько элементов в нем хранится
}
...
end.
Гость
Надо чтото в скобке после слова array написать в задании переменной- ошибку выдаёт
volvo
Ты где-то в моем коде видишь слово Array (в смысле, описание типа)? Я - не вижу... Показывай, что ты намудрил...

Update:
исправлено, там должен был быть File of integer... Остальные переменные доопредели сам...
Гость
Получилось вот что:

uses crt;
var i,kol,count,elem:integer; l:boolean;
f: file of integer;
begin clrscr; randomize;
count:=random(20)+10;
assign(f,'massiv1.txt'); rewrite(f);
for i:=1 to count do begin
elem:=random(25)-5; write(f,elem); write(elem,' '); end; close(f);
assign(f,'massiv1.txt'); reset(f);
for i:=1 to count do
kol:=kol+1; writeln;
writeln('chislo_elementov= ',kol);
if (kol mod 2)=0 then l:=false else l:=true;
writeln('L: ',l);
readkey; end.


Работает вродебы)))
Айра
for i:=1 to count do
kol:=kol+1;

Тогда проще вывести writeln('chislo_elementov= ',count); smile.gif

Ты должен считывать элементы из файла, пока он не закончится, и попутно считать, сколько их получилось..

окончание файла - eof(f)
WiT
Чуть не забыл,volvo - благодарю!!!)))
WiT
Айра, исправлю,но это всё мелочи , у меня нет задачи оптимизировать код)))
Айра
Здесь дело не в оптимизации.. Задача то на файлы, скорее всего в задании подразумевались запись в файл и чтение из него.. 1-е у тебя есть, а вместо второго ты схитрил))
Но вообще кто его знает.. я же не твой преподаватель и настаивать не буду))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.