русс | укр

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

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

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

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


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

Задания для самостоятельной работы


Дата добавления: 2015-07-23; просмотров: 1510; Нарушение авторских прав


Пример 1. Составить программу, позволяющую в одномерном массиве, состоящем из N вещественных элементов, вычислить сумму положительных элементов.

Решение. При написании процедур ввода и вывода следует обратить внимание, что элементы – вещественные числа, поэтому необходимо позаботиться о верной обработке дробной части. Вычисление суммы оформим в виде функции с одним аргументом - массивом. Локальными переменными функции будут индексная переменная i и дополнительная переменная s для хранения текущей суммы элементов. В начале тела функции обязательно обнуление s. Каждый элемент массива сравним с нулем, и, если значение положительно, добавим его к искомой сумме s. В конце функции запишем значение переменной s в результирующую переменную.

program massiv_1;

const N=10;

type mas=array [1..N] of Real;

 

procedure Vvodmas(var A:mas);

var i:Integer;

begin

for i:=1 to N do A[i]:=-50+Random(101)+random;

end;

 

procedure Vivodmas(A:mas);

var i:Integer;

begin

for i:=1 to N do Write(A[i]:8:2);

Writeln

end;

 

function Summa(A:mas):real;

var i: Integer; s:real;

begin

s:=0;

for i:=1 to N do if A[i]>0 then s:=s+A[i];

Summa:=s;

end;

 

var A: mas;

begin

Randomize; Vvodmas(A);

Writeln('Исходный массив:'); Vivodmas(A);

Writeln('Ответ: ', Summa(A):0:2);

Readln

end.

Пример 2. В двумерном массиве, состоящем из целочисленных элементов, в каждом столбце поменять местами наибольший по модулю и последний не принадлежащий интервалу (a, b) элементы массива.

Решение. Преобразования необходимо провести в каждом столбце массива, поэтому параметр внешнего цикла в процедуре обработки - номер столбца j, а вложенного – номер строки i.

Для перестановки двух элементов в столбце массива необходимо найти номера их строк n1 и n2, а затем поменять местами значения элементов с использованием промежуточной переменной p.



Чтобы найти наибольший по модулю элемент столбца, введем дополнительную переменную max, которая будет хранить максимальное по модулю значение в текущем столбце массива на данный момент. (Можно решить задачу без использования переменной max. Подумайте, как это сделать.)

Программа должна корректно работать с любыми входными данными, а значит и в тех случаях, когда некоторые или даже все столбцы массива содержат только элементы из интервала (a, b), и обмен значений в некоторых столбцах или во всем массиве не нужен.

const n=10; m=7;

type mas=array [1..n,1..m] of Integer;

 

procedure Vvodmas(var D:mas);

var i,j:Integer;

begin

for i:=1 to n do

for j:=1 to m do

D[i,j]:=-50+Random(101);

end;

 

procedure Vivodmas(D:mas);

var i,j:Integer;

begin

for i:=1 to n do

begin

for j:=1 to m do Write(D[i,j]:4);

Writeln;

end;

end;

 

procedure Obmen(a,b: real; var D:mas);

var i,j,p,n1,n2,max: Integer;

begin

for j:=1 to m do

begin

n1:=1; max:=abs(D[1,j]);{считаем первый элемент столбца наибольшим по модулю}

for i:=2 to n do

if abs(D[i,j])>max then {обнаружен больший элемент}

begin n1:=i; max:=abs(D[i,j]) end;

 

i:=n; {перебираем элементы столбца, начиная с последнего}

while (i>=1)and (D[i,j]>a)and(D[i,j]<b) do i:=i-1;

n2:=i;

if n2<>0 then {если элемент, не принадлежащий интервалу (a,b), был найден}

begin

p:=D[n1,j]; D[n1,j]:=D[n2,j]; D[n2,j]:=p; {обмен значений}

end;

end;

end;

 

var D: mas; a,b:Real;

begin

Randomize; Vvodmas(D);

Writeln('Исходный массив:'); Vivodmas(D);

Write('Введите через пробел концы интервала (a,b): '); Readln(a,b);

Obmen(a,b,D);

Writeln('Ответ:'); Vivodmas(D);

Readln

end.

 

Варианты заданий

Задание 1. Составить программу, позволяющую в одномерном массиве, состоящем из N вещественных элементов, вычислить:

a) сумму модулей отрицательных элементов массива;

b) количество элементов массива, не принадлежащих интервалу (a, b);

c) наименьший из элементов массива, принадлежащих отрезку [a, b];

d) количество элементов массива, равных первому элементу;

Задание 2. В двумерном массиве, состоящем из целочисленных элементов, поменять местами:

a) в каждом столбце наибольший по модулю и последний положительный элементы;

b) в каждом столбце первый и последний отрицательные элементы;

c) в каждой строке наибольший и наименьший элементы;

d) в каждом столбце первый принадлежащий отрезку [a, b] и первый отрицательный элементы;



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


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


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

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

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


 


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

 
 

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

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