Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2009, 11:40   #1
a44
 
Регистрация: 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.
a44 вне форума Ответить с цитированием
Старый 05.11.2009, 11:51   #2
NSvirus
пропагандирую жизЪ
Форумчанин
 
Аватар для NSvirus
 
Регистрация: 19.03.2007
Сообщений: 950
По умолчанию

вы сами себе уже написали подсказки, за вас что еще и разжевать нужно?
Посторонним В.
NSvirus вне форума Ответить с цитированием
Старый 05.11.2009, 12:07   #3
a44
 
Регистрация: 05.11.2009
Сообщений: 5
По умолчанию

мне нужен листинг программ каждой задачки, я сам плохо разбираюсь в этом. помогите, очень нужно.

Последний раз редактировалось a44; 05.11.2009 в 13:58.
a44 вне форума Ответить с цитированием
Старый 05.11.2009, 14:06   #4
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

подсказки не автор писал а препод!
автор вопроса по видимому совершенно не знает Паскаль!
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 05.11.2009, 14:38   #5
a44
 
Регистрация: 05.11.2009
Сообщений: 5
По умолчанию

напишите кто нить программу каждой задачи , пожалуйста.
a44 вне форума Ответить с цитированием
Старый 05.11.2009, 14:50   #6
NSvirus
пропагандирую жизЪ
Форумчанин
 
Аватар для NSvirus
 
Регистрация: 19.03.2007
Сообщений: 950
По умолчанию

сами что-то делали? показывайте результат работы.

Не хотите делать сами? Сделаю за деньги: icq=572491135
Посторонним В.
NSvirus вне форума Ответить с цитированием
Старый 05.11.2009, 15:01   #7
a44
 
Регистрация: 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.
a44 вне форума Ответить с цитированием
Старый 05.11.2009, 15:08   #8
NSvirus
пропагандирую жизЪ
Форумчанин
 
Аватар для NSvirus
 
Регистрация: 19.03.2007
Сообщений: 950
По умолчанию

что у вас не получается?
Посторонним В.
NSvirus вне форума Ответить с цитированием
Старый 05.11.2009, 15:10   #9
a44
 
Регистрация: 05.11.2009
Сообщений: 5
По умолчанию

мне нужно сделать задания в 1 и 2 лабе
a44 вне форума Ответить с цитированием
Старый 05.11.2009, 15:15   #10
NSvirus
пропагандирую жизЪ
Форумчанин
 
Аватар для NSvirus
 
Регистрация: 19.03.2007
Сообщений: 950
По умолчанию

понимаете, вам никто не будет помогать кроме как за деньги, до тех пор, пока вы сами не покажете что вы пытались это решить.
Посторонним В.
NSvirus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите лабораторную сделать BRIGADIR Помощь студентам 19 20.10.2008 08:31