русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вывод массива


Дата добавления: 2014-11-28; просмотров: 1013; Нарушение авторских прав


 

Включает обычно вывод заголовка массива, возможно с указанием его длины, и затем вывод заполненных элементов массива в удобной для просмотра на экране (и при распечатке) форме. При выводе на дисплей можно ориентироваться на ширину экрана (80 позиций), при печати – на 60 (вдоль тетрадного листа), 76 (поперек тетрадного листа или при выводе на стандартный лист).

Обычно для распечатки результатов работы используют вывод в текстовый файл, который затем выводят на принтер, как и текст программы. Работа с файлами будет рассмотрена в 9 главе, здесь мы остановимся на моментах, связанных с форматным выводом массивов в виде таблиц.

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

Например, если числа целые и находятся в диапазоне от –999 до +999, формат должен быть не менее :5 (с учетом разделяющих пробелов). Если диапазон целых чисел неизвестен, следует рассчитывать на максимум. Для самых длинных целых чисел (–32768) он составит :7 и выводить удобно по 10 значений в строке.

Для вещественных чисел, если использовать экспоненциальную форму записи, достаточно оставлять три значащие цифры, что с учетом знака, точки и порядка числа составит :10 и дополнительный пробел, например, _–0.836Е-02, а выводить имеет смысл по пять чисел в строке.

Конечно, удобнее числа выводить в форме с фиксированной точкой (что можно делать, если порядки чисел известны и они не сильно отличаются от нулевого). Например, по формату :8:2 вывод идет с точностью до сотых.

При выводе в конце каждой строки следует давать команду Writeln для перехода на новую строку. Определить, что пора менять строку, можно по остатку от деления текущего номера элемента на количество значений в строке. Ниже приведен пример вывода на печать одномерного вещественного массива по "k" значений в строке:



 

. . .

Writeln(' Исходный массив из ',N,' элементов');

for i:=1 to N do

if i mod k = 0 then { если номер элемента

WriteLn(A4[i]:8:2) кратен "к", переходим на новую строку}

else

Write(A4[i]:8:2) { печать в текущей строке}

Writeln; {переход на новую строку в конце печати}

. . .

 

Вышесказанное относится к выводу одномерных массивов. Для двумерных массивов, количество чисел на строке дисплея определяется числом столбцов массива. Если число столбцов не позволяет разместить массив на экране целиком, его приходится распечатывать по несколько столбцов, организуя не двойной, а тройной цикл. Пример распечатки целочисленного двумерного массива представлен ниже:

 

. . .

Writeln(' Исходный массив из ',M,'x',N,' элементов');

for i:=1 to M do

begin

for j:=1 to N do

Write(A[i,j]:6); {печать текущей строки }

Writeln; {переход на новую строку экрана перед новой строкой массива}

end;

. . .

 

 

Примеры программ работы с массивами

 

Перестановка целочисленного массива из N элементов (N<=100) в обратном порядке.

Метод решения задачи предлагается следующим: Чтобы массив оказался записанным в обратном порядке, первый элемент (A[1]) надо поменять местами с последним (A[N]), второй (A[2]) – с предпоследним (A[n-1]) и т.д. (A[i],<à A[N+1-i]). Перестановку будем выполнять, используя рабочую переменную (R). Количество переставляемых пар – N div 2.

Таким образом, при условии заполнения массива из файла (подробно работа с файлами будет рассмотрена позже), программа будет выглядеть так:

Program Revers;

{ VGI, MIT }

Var Fin,Fout:text;

A : array[1..100] of integer;

i,N,R: integer;

BEGIN

Repeat

WriteLn(’Задайте длину массива’);

ReadLn(N);

if N>100 then

WriteLn(’Нельзя больше 100’);

Until N<=100;

Assign(Fin,’S:\kurs_1\_data\DatI.txt’);

Reset(Fin);

for i:=1 to N do

Read(Fin,A[i]);

Close(Fin);

Assign(Fout,’Revers.txt’);

ReWrite(Fout);

WriteLn(Fout,’Исходный массив’);

for i:=1 to N do

if i mod 10 = 0 then { печатаем по десять чисел в строке }

WriteLn(Fout,A[i]:7)

Else

Write(Fout,A[i]:7);

WriteLn(Fout);

for i:=1 to N div 2 do

Begin

R:=A[i];

A[i]:=A[N+1-i];

A{N+1-i]:=R;

end;

WriteLn(’Измененный массив’);

for i:=1 to N do

if i mod 10 = 0 then

WriteLn(Fout,A[i]:7)

Else

Write(Fout,A[i]:7);

WriteLn(Fout);

Close(Fout);

END.

 

Второй пример. Удаление строки с минимальным значением из двумерного вещественного массива размерами M x N элементов, где M и N не превосходят 7.

Алгоритм решения состоит из следующих частей:

1. Ввод числа строк

2. Ввод числа столбцов

3. открытие файла с числами и заполнение массива значениями

4. Открытие выходного файла и распечатка в него исходного массива

5. Поиск места, где расположен минимальный элемент массива

6. удаление строки с минимальным элементом. Удаление производится, путем переписывания на место удаляемой строки, строки, лежащей ниже (следующей). Затем, в строку, которую откопировали в вышележащую, переписывается следующая строка и т.д. Наконец, M-я строка копируется на (M-1)-е место.

7. количество строк исправленного массива уменьшается на 1.

8. Полученный массив распечатывается

 

Реализация алгоритма (с некоторыми пропусками) выглядит так:

Program DelLine;

{ VGI, MIT }

Var Fin,Fout:text;

A : array[1..7,1..7] of real;

i,j,N,M,imin,jmin: integer;

Amin : real;

BEGIN

Repeat

WriteLn(’Задайте число строк’);

ReadLn(N);

if N>7 then

WriteLn(’Нельзя больше 7’);

Until N<=7;

{ аналогично задается число столбцов N}

. . .

Assign(Fin,’S:\Kurs_1\_Data\DatF.txt’);

Reset(Fin);

for i:=1 to M do

for j:=1 to N do

Read(Fin,A[i,j)’

Close(fin);

Assign(Fout,’DelLine.txt’);

ReWrite(Fout);

WriteLn(Fout,’Исходный массив’);

for i:=1 to M do

Begin

for j:=1 to N do

Write(Fout, A[i,j]);

WriteLn(Fout);

end;

{ поиск места минимального элемента }

imin:=1;

jmin:=1; { сначала считаем минимальным 1-й элемент массива}

for i:=1 to M do

for j:=1 to N do

if A[i,j]<A[imin,jmin] then

Begin

imin:=i;

jmin:=j;

end;

{ Удаление строки с номером imin }

for i:=imin to M-1 do

for j:=1 to N do

A[i,j] := A{i+1,j];

M:=M-1;

{ печатаем измененный массив, также, как и исходный и закрываем

файл с протоколом}

. . .

Close(Fout);

END.

 

 



<== предыдущая лекция | следующая лекция ==>
Основные определения | Сортировки массива


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.669 сек.