Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сумма квадратов элементов динамического массива (Pascal)

30K
20 ноября 2007 года
ork-001
7 / / 20.11.2007
Помогите пожалуйста составить программу для определения параметров линейного динамического массива. Предусмотреть ввод элементов массива из вещественного файла, количество компонент которого определить с помощью функции FileSize, вывод массива экран. Определить сумму квадратов всех элементов массива.

Заранее большое спасибо!!!
30K
21 ноября 2007 года
ork-001
7 / / 20.11.2007
Забыл указать, что на Pascal-е(((
241
21 ноября 2007 года
Sanila_san
1.6K / / 07.06.2005
Цитата: ork-001
Помогите пожалуйста составить программу для определения параметров линейного динамического массива. Предусмотреть ввод элементов массива из вещественного файла, количество компонент которого определить с помощью функции FileSize, вывод массива экран. Определить сумму квадратов всех элементов массива.

Заранее большое спасибо!!!

Что именно непонятно? В Паскале нет динамического массива, значит, его надо написать ручками. Для линейного массива вполне подойдёт двусвязный список из элементов типа "запись". Красивее всего создать объект (класс), в нём реализовать структуру данных и методы работы с этой структурой. Можно написать модуль в качестве хранилища методов работы с двусвязным списком. Например, тот же ввод на экран. В определении суммы квадратов элементов массива нет никакой сложности - в цикле пробежать по всему списку до конца, для каждого элемента посчитать квадрат и сложить.

Тут, правда, есть тонкость. Если вещественный файл - это набор четырёхбайтных последовательностей, каждая из которых инетрпретируется как число типа real, сумма будет иметь неточное значение. Если же в списке будут храниться целочисленные значения, то очень быстро может наступить выход за границы типа.

241
21 ноября 2007 года
Sanila_san
1.6K / / 07.06.2005
Я специально не стал писать код до того, как его напишет автор темы. Очень плохо, когда всё делают за тебя - это пустая трата времени. ork-001, код в студию. :)
30K
21 ноября 2007 года
ork-001
7 / / 20.11.2007
Код:
Uses CRT;
 Const FName='number';
 Type
     TMas = array  [1..1]  of Real;
 Var M: ^TMas;
     F:  file of Real;
     N,i: Integer;
     PMem: Pointer;
Procedure DataIn;
Begin {$I-} Assign(F, FName); Reset(F);
 If IOResult = 0 then begin
    N:=FileSize(F);
    GetMem(M,SizeOf(Real)*N);
    For i:=1 to N do Read(F, M^);
    Close(F);
 end else begin Randomize;
    N:=Random(100)+10;
    GetMem(M,SizeOf(Real)*N);
    ReWrite(F);
    For i:=1 to N do begin
       M^:=Random(100);
       Write(F, M^);
    end;
    Close(F);
 end;
End;


А дальше не знаю((((

[COLOR="Red"]Правила раздела Студентам прочитай и следуй им.Название темы должно отражать суть задачи,код надо оформлять при помощи тегов.[/COLOR]модератор.
30K
21 ноября 2007 года
ork-001
7 / / 20.11.2007
Цитата: ork-001
Uses CRT;
Const FName='number';
Type
TMas = array [1..1] of Real;
Var M: ^TMas;
F: file of Real;
N,i: Integer;
PMem: Pointer;
Procedure DataIn;
Begin {$I-} Assign(F, FName); Reset(F);
If IOResult = 0 then begin
N:=FileSize(F);
GetMem(M,SizeOf(Real)*N);
For i:=1 to N do Read(F, M^);
Close(F);
end else begin Randomize;
N:=Random(100)+10;
GetMem(M,SizeOf(Real)*N);
ReWrite(F);
For i:=1 to N do begin
M^:=Random(100);
Write(F, M^);
end;
Close(F);
end;
End;

А дальше не знаю((((



Procedure DataOut
Begin
For i:=1 to N do begin
Write(M^:8:2);
end;
end;

Как дальше описать функцию???

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог