Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Массивы на Паскале (http://www.tehnari.ru/f41/t86354/)

Vikki 13.03.2013 21:58

Массивы на Паскале
 
Помогите пожалуйста с массивами на паскале, хотя бы пару задач.
1. В заданном одномерном массиве С выяснить, какое число встречается раньше - положительное или отрицательное и его индекс.
2. Составить программу, отыскивающую среди пар элементов (1 и 2, 3 и 4, 5 и 6, и т.д.) одномерного массива М те, разность между элементами которых есть величина, наибольшая для данного массива.
3. В одномерном массиве удалить те элементы, для которых a[i]>=i
4. Вставить элемент С перед всеми нечетными элементами, стоящими на четных местах.
5. Найти наименьший элемент матрицы. Записать нули в строку и столбец, в которых он находится.
6. Дана матрица целых чисел размером 4х5. Напечатайте индексы всех ее седловых точек. (Седловой точкой называется элемент, который является наименьшим в своей строке и наибольшим в своем столбце или наоборот).
7. Удалить все строки и столбцы, на пересечении которых стоят отрицательные элементы.

interacia 14.03.2013 15:16

1) Задание
Код:

program Array1;
var
i:integer; // счетчик в цикле
N:integer; // размер массива
C: array [1..10] of integer;
begin
// ввод данных
writeln('Введите N (N<=10)');
 readln(N);
 writeln('Введите элементы массива');
 for i:=1 to N do begin read(C[i]); end; // формирование массива

 for i:=1 to N do begin
 if C[i]>0 then begin writeln('положительное число встечается раньше индекс элемента = ',i); break; end;
 if C[i]<0 then begin writeln('отрицательное число встечается раньше индекс элемента = ',i); break; end;
 end;
end.

Пример:

----------------------------------------
Введите N (N<=10)
5
Введите элементы массива
0 0 0 0 -9 2
отрицательное число встечается раньше индекс элемента = 5
----------------------------------------

Vladimir_S 14.03.2013 15:36

Цитата:

Сообщение от Vikki (Сообщение 880598)
3. В одномерном массиве удалить те элементы, для которых a[i]>=i

Код:

Const
 Nmax=20;
Var
 a,b:Array[1..Nmax] of Integer;
 N,M,i:Integer;
Begin
 Write('Number of elements (<20) = ');
 Readln(N);
 M:=0;
 Randomize;
 Writeln('Old:');
 For i:=1 to N do
  begin
  a[i]:=Random(N);
  write(a[i]:4);
  if a[i]<i then
    begin
    Inc(M);
    b[M]:=a[i];
    end;
  end;
 Writeln;
 Writeln('New:');
 For i:=1 to M do write(b[i]:4);
 Readln
End.


interacia 14.03.2013 16:02

2)
Код:

program Array1;
var
i:integer; // счетчик в цикле
N:integer; // размер массива
M: array [1..10] of integer;
Max:integer;
begin
// ввод данных
writeln('Введите N (N<=10)');
 readln(N);
 writeln('Введите элементы массива');
 for i:=1 to N do begin read(M[i]); end; // формирование массива
Max:=1;
 for i:=1 to N div 2 do begin
if abs(M[i*2]-M[i*2-1])>abs(M[Max*2]-M[Max*2-1]) then Max:=i;
 end;
 Writeln('Номера пары элементов между которыми разница наибольшая =',Max*2,' ',Max*2-1);
end.

Пример:
__________________________________________________ _____
Введите N (N<=10)
8
Введите элементы массива
1 2 3 -9 4 6 0 5
Номера пары элементов между которыми разница наибольшая =4 3
__________________________________________________ _____

interacia 14.03.2013 16:48

4)
Код:

program Array1;
var
i,j:integer; // счетчик в цикле
NewN,C,N:integer; // размер массива
M: array [1..10] of integer;
NewM: array [1..20] of integer;

begin
// ввод данных
writeln('Введите C ');
 readln(C);
writeln('Введите N (N<=10)');
 readln(N);
 writeln('Введите элементы массива');
 for i:=1 to N do begin read(M[i]); end; // формирование массива
i:=1;
j:=1;
NewN:=N;
for  i:=1 to N do    begin
if (odd(M[i]))and(not odd(i)) then
 begin
 inc(NewN); // увеличиваем массив
 NewM[j]:=C; // вставляем значение
 inc(j);
 end;
NewM[j]:=M[i]; // вставляем значение
inc(j);
 end;
 Writeln('Новый массив =');
for i:=1 to NewN do begin write(NewM[i],' '); end; // формирование массива

end.

Пример:
__________________________________________________ ______
Введите C
0
Введите N (N<=10)
10
Введите элементы массива
1 3 5 7 9 11 13 15 17 19
Новый массив =
1 0 3 5 0 7 9 0 11 13 0 15 17 0 19
__________________________________________________ ______

interacia 14.03.2013 17:18

5)
Код:

program Matrix1;
var
j,i,M,N:integer;
a: array [1..10,1..10] of integer;
minI,minJ:integer;
begin
// Ввод данных
writeln('Введите числа M (M<=10) и N (N<=10)');
 read(N); readln(M);
// Решение
minI:=1;
minJ:=1;
 for i:=1 to N do begin
 for j:=1 to M do
 begin
 a[i,j]:=random(100); // заполнение матрицы случайными значениями
 if a[i,j]<a[mini,minj] then begin mini:=i; minj:=j; end;
 end;
 end;
writeln('Исходный массив');
 for i:=1 to N do begin
 writeln;
 for j:=1 to M do write(a[i,j]:3,' ');
 end;

// Ответ
 for j:=1 to M do a[mini,j]:=0;
 for i:=1 to N do a[i,minj]:=0;
writeln;
writeln('Ответ');
 for i:=1 to N do begin
 writeln;
 for j:=1 to M do write(a[i,j]:3,' ');
 end;
end.


Vladimir_S 14.03.2013 17:30

Цитата:

Сообщение от Vikki (Сообщение 880598)
7. Удалить все строки и столбцы, на пересечении которых стоят отрицательные элементы.

Код:

Type
 Num=Record
      X:Integer;
      Y:Integer;
    end;
Var
 M,N,i,j,p,Q:Integer;
 Cross:Array[1..128] of Num;
 A:Array[1..8,1..16] of Integer;
 B1,B2:boolean;
Begin
 M:=8;
 N:=16;
 Q:=0;
 Randomize;
 Writeln('Initial:');
 For i:=1 to M do
  begin
  For j:=1 to N do
    begin
    A[i,j]:=95-Random(100);
    write(a[i,j]:4);
    if A[i,j]<0 then
      begin
      Inc(Q);
      Cross[Q].X:=i;
      Cross[Q].Y:=j;
      end;
    end;
  Writeln;
  end;
 Writeln;
 Writeln('Transformed:');
 For i:=1 to M do
  begin
  B1:=True;
  for p:=1 to Q do
    if i=Cross[p].X then B1:=False;
  if B1 then
    for j:=1 to N do
    begin
      B2:=True;
      for p:=1 to Q do
      if j=Cross[p].Y then B2:=False;
      if B2 then write(A[i,j]:4);
    end;
  If B1 then Writeln;
  end;
 Readln
End.


interacia 14.03.2013 18:40

Код:

program Matrix1;
var
j,i,M,N:integer;
a: array [1..10,1..10] of integer;
II,III,Jmin,Jmax:integer;
min,max:integer;
begin
// Ввод данных
writeln('Введите числа M (M<=10) и N (N<=10)');
 read(N); readln(M);
// Решение
//minI:=1;
//minJ:=1;
 for i:=1 to N do begin
 for j:=1 to M do
 begin
 a[i,j]:=random(100); // заполнение матрицы случайными значениями
 end;
 end;
writeln('Исходный массив');
 for i:=1 to N do begin
 writeln;
 for j:=1 to M do write(a[i,j]:3,' ');
 end;
writeln;
writeln('Ответ');
////////////////////////////////////////////////////////////
for i:=1 to N do
begin
jmax:=1; jmin:=1;
 for j:=1 to M do
  begin
  if a[i,j]>a[i,jmin] then jmin:=j;
  if a[i,j]<a[i,jmax] then jmax:=j;
  end;
 for III:=1 to N do
  begin
  if a[i,jmin]>=a[iii,jmin] then break;
  end;
  if iii=N then writeln('Седловая точка ',a[i,jmin],' координаты строка = ',i,' столбец = ',jmin);
 for III:=1 to N do
  begin
  if a[i,jmax]<=a[iii,jmax] then break;
  end;
  if iii=N then writeln('Седловая точка ',a[i,jmax],' координаты строка = ',i,' столбец = ',jmax);
end;
end.

Пример:
__________________________________________________ ________
Введите числа M (M<=10) и N (N<=10)
4
4
Исходный массив

84 74 15 43
6 34 3 62
65 57 37 28
83 73 48 71
Ответ
Седловая точка 48 координаты строка = 4 столбец = 3
__________________________________________________ ___________
Чем меньше массив тем чаще появляются искомые элементы.

Vikki 15.03.2013 01:23

Спасибо большое за помощь!


Часовой пояс GMT +4, время: 16:46.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.