• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Много-много задач на Паскале

  • Автор темы Автор темы melody
  • Дата начала Дата начала

melody

Ученик
Регистрация
20 Янв 2011
Сообщения
2
Реакции
0
Баллы
0
Много-много задач на Паскале

Пусть дан массив а1,…an.Требуется переставить а1,…an так, чтобы вначале в массиве шла группа элементов, больших того элемента, который в исходном массиве располагается на первом месте, затем – сам этот элемент, потом группа элементов, меньших или равных ему. Число сравнений и перемещений, каждое в отдельности, не должно превышать n-1.
 
2)Даны действительные числа а1, а2,…аn.Поменять местами наибольший и наименьший элементы
3)Даны действительные числа a1,…an,p,натуральное число k(k<=n).Упорядочить элементы массива А по убыванию. Удалить из a1,…an элемент с номером k (т.е. ak) и вставить элемент, равный р, так, чтобы не нарушилась упорядоченность.
4)Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов первой и последней строк.
5)Дана действительная квадратная матрица порядка n. Выяснить, верно ли, что наибольшее из значений элементов главной диагонали больше, чем наименьшее из значений элементов побочной диагонали.
 
4)Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов первой и последней строк.
Данная программа производит поиск максимального значения и выводит его на экран в экспоненциальной форме, анализ совпадающих значений не производится.
Код:
const n=5;
var matr: array[1..n,1..n] of real;
max: real;
i,j: integer;
begin
{Filling an  array}
for i:=1 to n do 
for j:=1 to n do begin
writeln('Enter the  current value of an array element');
readln(matr[i,j]); end;
{find  the  maximum element of the first and last row}
max:=matr[1,1];
for i:=1 to n do begin
if matr[1,i]>max then max:=matr[1,i];
if matr[n,i]>max then max:=matr[n,i];
end;
writeln('maximum  value  among  the  elements of the first and last row is ',max);
readln;
end.
 
2)Даны действительные числа а1, а2,…аn.Поменять местами наибольший и наименьший элементы
Данная программа анализирует введенные значения, ищет минимальный и максимальный элементы, меняет их местами и выводит получившийся массив на экран. Должен заметить, что в программе не реализован механизм поиска совпадающих минимальных и максимальных значений, а заменяются последние из найденных. Для реализации этого механизма следовало бы завести еще два массива для сохранения номеров максимальных и минимальных значений и анализировать массив для их заполнения повторно; для замены же нужно было бы менять значения в дополнительном цикле.
Код:
const n=10;
var a: array[1..n] of real;
min, max, lapse: real;
n_min, n_max, i: integer;
begin 
{Filling an  array}
for i:=1 to n do begin
writeln('Enter the  current value of an ',i,' array element'); 
readln(a[i]); end;
{Search for the maximum and minimum values of the elements in the  array  and their numbers}
n_min:=0; n_max:=0;
min:=a[1];
max:=a[1];
for i:=2 to n do begin
if a[i]<=min then begin n_min:=i; min:=a[n_min]; end;
if a[i]>=max then begin n_max:=i; max:=a[n_max]; end;
end;
lapse:=a[n_min]; 
a[n_min]:=a[n_max]; 
a[n_max]:=lapse; 
{output values of the elements on the screen}
for i:=1 to n do
writeln(a[i]);
readln;
end.
 
Пусть дан массив а1,…an.Требуется переставить а1,…an так, чтобы вначале в массиве шла группа элементов, больших того элемента, который в исходном массиве располагается на первом месте, затем – сам этот элемент, потом группа элементов, меньших или равных ему. Число сравнений и перемещений, каждое в отдельности, не должно превышать n-1.
Например, так:
Код:
CONST
 N=10;
VAR
 A,B,Num_L,Num_H:Array[1..N] of Byte;
 N_lo,N_hi:Byte;
 i:Integer;
BEGIN
 Randomize;
 For i:=1 to N do
  A[i]:=random(100);
 N_lo:=0;
 N_hi:=0;
 For i:=2 to N do
  if A[i]>A[1] then
   begin
    Inc(N_hi);
    Num_H[N_hi]:=i;
   end
  else
   begin
    Inc(N_lo);
    Num_L[N_lo]:=i;
   end;
 For i:=1 to N_hi do
  B[i]:=A[Num_H[i]];
 B[N_hi+1]:=A[1];
 For i:=1 to N_lo do
  B[N_hi+1+i]:=A[Num_L[i]];
 For i:=1 to N do
  Write(A[i]:4);
 Writeln;
 For i:=1 to N do
  Write(B[i]:4);
 Writeln;
 ReadLn;
END.
 
Назад
Сверху