Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 13.03.2013, 21:58   #1 (permalink)
Vikki
Новичок
 
Регистрация: 02.12.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Массивы на Паскале

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

Старый 13.03.2013, 21:58
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Данные темы содержат похожую информацию

Задача на Паскале Массивы
Массивы в Си
Помогите с задачей в паскале на одномерные массивы
Матрицы и массивы в паскале
Массивы

Старый 14.03.2013, 15:16   #2 (permalink)
interacia
Member
 
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
По умолчанию

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
----------------------------------------
interacia вне форума   Ответить с цитированием
Старый 14.03.2013, 15:36   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Vikki Посмотреть сообщение
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.03.2013, 16:02   #4 (permalink)
interacia
Member
 
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
По умолчанию

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   #5 (permalink)
interacia
Member
 
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
По умолчанию

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 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 14.03.2013, 17:18   #6 (permalink)
interacia
Member
 
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
По умолчанию

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.
interacia вне форума   Ответить с цитированием
Старый 14.03.2013, 17:30   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Vikki Посмотреть сообщение
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.03.2013, 18:40   #8 (permalink)
interacia
Member
 
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
По умолчанию

Код:
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
__________________________________________________ ___________
Чем меньше массив тем чаще появляются искомые элементы.
interacia вне форума   Ответить с цитированием
Старый 15.03.2013, 01:23   #9 (permalink)
Vikki
Новичок
 
Регистрация: 02.12.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое за помощь!
Vikki вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.