|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.11.2009, 11:40 | #1 |
Регистрация: 05.11.2009
Сообщений: 5
|
помогите сделать лабораторную паскаль ABC
1 лаба.
Пояснения к работе. Массивы, положение элементов в которых описывается двумя индексами, называются двумерными. Их можно представить в виде прямоугольной таблицы или матрицы. Номер элемента состоит из двух чисел — номера строки, в которой находится элемент, и номера столбца. Описание массива: Способ 1. В Паскале двумерный массив можно описать как одномерный, элементами которого являются одномерные массивы. Например: Const n=2; т=3; Type odarray=Array [1..m] Of <тип элементов>; dvarray = Array [ 1. n] Of odarray; Var v: odarray; a: dvarray; Способ 2. Описание массива, исключив определение типа odmyarray в определении типа dvarray: Const n=2; m=З; Type dvarray = Array [1..n] Of Array [1.m] Of <тип элементов>; Var a: dvarray; Способ З, Указывая имя массива и диапазоны изменения индексов для каждой размерности массива: Const n =2; m=3; Type dvarray=Array [1..n,1..m] Of <тип элементов>; Var a: dvarray; Способ 4 Объявление массива в разделе описания переменных: Var a: Array [1..n.1..m] Of <тип элементов>; Рассмотренные выше методы решения задач обработки одномерных массивов могут применяться для обработки двумерных массивов. Поскольку положение элемента в двумерном массиве описывается двумя индексами, программы большинства матричных задач строятся на основе вложенных циклов. Обычно внешний цикл работает по строкам матрицы, то есть с его помощью выбирается требуемая строка матрицы, а внутренний цикл — по столбцам матрицы, то есть здесь выбирается нужный элемент из выбранной уже строки. Для задания значений элементам массива могут быть использованы операторы присваивания и операторы ввода данных. Пример: Создать и распечатать двумерный массив 5×6. Пусть элементы задаются генератором случайных чисел. Program pr_1; Const n= 5; m=6; Type darray = Array [l..n,l..m] Of Integer; Var A: darray; Procedure init (Var x: darray); {процедура заполнения массива} Var i, j: Integer; Begin For i:=1 To n Do For j:=1 To m Do x[i,j]:=-25+Random (51); End; Procedure Print(x: darray); { процедура вывода массива на экран } Var i,j: Integer; Begin For i:=1 To n Do Begin {вывод i-ой строки массива} For j:=l To m Do Write(x[i,j]:5); Writeln; {переход на начало следующей строки} End; End; Begin {основная программа} Randomize; Init(A); Print(A); Readln; End. Задание: 1. Составьте программу заполнения и распечатки двумерного массива - значения элементов надо вводить с клавиатуры. Найдите сумму элементов каждого столбца. 2. Создайте двумерный массив, содержащий целые числа из диапазона от -10 до +10. Последний отрицательный элемент каждого столбца замените нулем. 3. Заполнить массив размером 6×6 следующим образом: 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 56 1 5 15 35 70 126 1 6 21 56 126 252 2 лаба. Пояснения к работе Для того, чтобы удалить строку с номером k, необходимо: 1. Сдвинуть все строки, начиная с данной, на одну вверх. 2. Последнюю строку "обнулить", то есть всем элементам последней строки присвоить значение 0. Procedure Delete(k : Integer ;Var x: darray); { процедура удаления } Var i, j: Integer; Begin For i:=k To n-1 Do For j:=1 To n Do X[i,j]:=x[i+1,j]; For j:=1 To n Do x[n,j]:=0; End; Для того, чтобы вставить строку после строки с номером k, необходимо: 1. Первые k строк оставить без изменения. 2. Все строки после k-ой сдвинуть на одну назад, это лучше начать с последней строки и идти до (k+1)-oй. 3. Элементам строки k+1 присвоить заданное значение. 4. Кроме того, необходимо изменить размерность массива. Так как мы вставляем строку, то число строк будет на одну больше. Procedure Insert(k: Integer; Var x: darray); {процедура вставки} Var i, j: Integer; Begin For i:=n downTo k+1 Do For j:=1 To n Do x[i+1,j]:=x[i,j]; {элементу столбца j присваиваем элемент этого же столбца, но из предыдущей строки} For j:=1 To n Do X[k+1,j]:=0; End; Для того, чтобы поменять местами столбцы с номерами k1 и k2, необходимо: 1. Значения элементов столбца k1 записать в одномерный массив A размерностью равной числу строк исходного двумерного массива. 2. Всем элементам столбца k1 присвоить значение соответствующих элементов столбца k2. 3. Всем элементам столбца k2 присвоить значение соответствующих элементов одномерного массива А. Procedure Swap(k1, k2: Integer; Var x: darray); {процедура перестановки} Var i: Integer; A: oarray; Begin For i:=1 To n Do Begin a[i]:= x[i,k1]; x[i,k1]:=x[i,k2]; x[i,k2]:=a[i]; End; End; Задание: 1. Создайте двумерный массив. Переставьте вторую и предпоследнюю строки. 2. Создайте двумерный массив, содержащий целые числа. Удалите максимальный элемент в каждой строке (если их несколько, то только один). 3. Дан двумерный массив. Вставить в него строку из заданной последовательности чисел перед строкой с номером s. |
05.11.2009, 11:51 | #2 |
пропагандирую жизЪ
Форумчанин
Регистрация: 19.03.2007
Сообщений: 950
|
вы сами себе уже написали подсказки, за вас что еще и разжевать нужно?
Посторонним В.
|
05.11.2009, 12:07 | #3 |
Регистрация: 05.11.2009
Сообщений: 5
|
мне нужен листинг программ каждой задачки, я сам плохо разбираюсь в этом. помогите, очень нужно.
Последний раз редактировалось a44; 05.11.2009 в 13:58. |
05.11.2009, 14:06 | #4 |
Форумчанин
Регистрация: 30.03.2008
Сообщений: 392
|
подсказки не автор писал а препод!
автор вопроса по видимому совершенно не знает Паскаль!
Программирование - это великое искусство... Такое же как например и живопись!
|
05.11.2009, 14:38 | #5 |
Регистрация: 05.11.2009
Сообщений: 5
|
напишите кто нить программу каждой задачи , пожалуйста.
|
05.11.2009, 14:50 | #6 |
пропагандирую жизЪ
Форумчанин
Регистрация: 19.03.2007
Сообщений: 950
|
сами что-то делали? показывайте результат работы.
Не хотите делать сами? Сделаю за деньги: icq=572491135
Посторонним В.
|
05.11.2009, 15:01 | #7 |
Регистрация: 05.11.2009
Сообщений: 5
|
Задание:
1.Составьте программу заполнения и распечатки одномерного массива из 5 элементов - значения элементов надо вводить с клавиатуры. Затем найдите сумму элементов, больших данного числа А (А вводить с клавиатуры). 2.Создайте и распечатайте одномерный массив целых чисел из диапазона от -10 до +5, используя генератор случайных чисел. Найдите сумму положительных элементов массива. 3.Создайте одномерный массив, содержащий как положительные, так и отрицательные элементы. Все отрицательные элементы массива замените единицей. Распечатайте измененный массив. 1 пример: Program pr_1; Const n=5; Type OA = Array [1..n] Of Integer; Var A: OA; s: Integer; {s - сумма всех элементов массива} Procedure Init(Var m: OA); Var i: Integer; Begin Writeln('введите ',n, 'чисел'); For i:=1 To n Do Readln(m[i]); End; Procedure Print (m: OA); {процедура вывода элементов массива на экран} Var i: integer; Begin For i:=1 To n Do {вывод массива } Write(m[I]:3); {вывод i-го элемента} Writeln; End; Function Summa(m: OA): Integer; Var i, sum: Integer; Begin sum:=0; For i:=1 To n Do sum := sum + m[i]; summa:=sum; End; Begin Init(A); Print(A); s:=Summa(A); {вызов функции нахождения суммы элементов массива} Writeln('ux сумма равна ',s); {вывод результата на экран} Readln; End. 2 пример: Program pr_1; Var a: Array [1..5] Of Integer; s: Integer; i: Integer; Begin randomize; S:=0; for i:=1 to 5 do begin a[i]:=-10+random (16); Writeln('a[',i,']=',a[i]); if a[i]>0 then s:=s+a[i]; End; Writeln('сумма положительных элементов массива равна ',s); Readln; End. 3 пример: Program pr_1; Var a: Array [1..10] Of real; i: Integer; Begin Writeln('введите элементы массива'); for i:=1 to 10 do begin write('a[',i,']=') ; readln(a[i]); if a[i]<0 then a[i]:=1; writeln('a[',i,']=',a[i]); End; Readln; End. |
05.11.2009, 15:08 | #8 |
пропагандирую жизЪ
Форумчанин
Регистрация: 19.03.2007
Сообщений: 950
|
что у вас не получается?
Посторонним В.
|
05.11.2009, 15:10 | #9 |
Регистрация: 05.11.2009
Сообщений: 5
|
мне нужно сделать задания в 1 и 2 лабе
|
05.11.2009, 15:15 | #10 |
пропагандирую жизЪ
Форумчанин
Регистрация: 19.03.2007
Сообщений: 950
|
понимаете, вам никто не будет помогать кроме как за деньги, до тех пор, пока вы сами не покажете что вы пытались это решить.
Посторонним В.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите лабораторную сделать | BRIGADIR | Помощь студентам | 19 | 20.10.2008 08:31 |