Массивы в Паскале. Одномерные массивы

Предположим, что программа работает с большим количеством однотипных данных. Скажем около ста разных целых чисел нужно обработать, выполнив над ними те или иные вычисления. Как вы себе представляете 100 переменных в программе? И для каждой переменной нужно написать одно и тоже выражение вычисления значения? Это очень неэффективно.

Есть более простое решение. Это использование такой структуры (типа) данных как массив. Массив представляет собой последовательность ячеек памяти, в которых хранятся однотипные данные. При этом существует всего одно имя переменной связанной с массивом, а обращение к конкретной ячейке происходит по ее индексу (номеру) в массиве.

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

Итак, массив – это именованная группа однотипных данных, хранящихся в последовательных ячейках памяти. Каждая ячейка содержит элемент массива. Элементы нумеруются по порядку, но необязательно начиная с единицы (хотя в языке программирования Pascal чаще всего именно с нее). Порядковый номер элемента массива называется индексом этого элемента.

Помним, все элементы определенного массива имеют один и тот же тип. У разных массивов типы данных могут различаться. Например, один массив может состоять из чисел типа integer, а другой – из чисел типа real.

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

Если индекс массива может приобретать все допустимые значения определенного перечислимого типа, то при описании массива возможно задание имени типа вместо границ изменения индекса. При этом границами индекса будут первое и последнее значения в описании типа индекса. Границы изменения индексов могут задаваться с помощью ранее объявленных констант. Рекомендуется предварительно объявлять тип массива в разделе описания типов.

Массив можно создать несколькими способами.

const n = 200;
type
	months = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec);
	years = 1900..2100;
	people = array[years] of longint;
var
	growth: array[months] of real;
	hum: people;
	notes: array[1..n] of string;

Обращение к определенному элементу массива осуществляется путем указания имени переменной массива и в квадратных скобках индекса элемента.

Простой массив является одномерным. Он представляет собой линейную структуру.

var ch: array [1..11] of char;
    h: char;
    i: integer;
 
begin
    for i := 1 to 11 do read (ch[i]);
 
    for i := 1 to 11 do write (ch[i]:3);
 
readln
end.

В примере выделяется область памяти под массив из 11 символов. Их индексы от 1 до 11. В процессе выполнения программы пользователь вводит 11 любых символов (например, ‘q’, ’w’, ’e’, ’2’, ’t’, ’9’, ’u’, ’I’, ’I’, ’o’, ’p’), которые записываются в ячейки массива. Текущее значение переменной i в цикле for используется в качестве индекса массива. Второй цикл for отвечает за вывод элементов массива на экран.

Функция sizeof, примененная к имени массива или имени массивного типа, возвращает количество байтов, отводимое под массив.

Задачи к данной теме

Комментарии

задачка (паскаль) если не сложно решите пожалуйста))

задайте с помощью генератора случайных чисел массив размерностью до 100 элементов в диапазоне от 1 до 100. присвойте всем нечетным членам значение, равное 100 и выведите массив.

Решите задачу

составьте программу генерирующую одномерный массив B(N) содержит те же элементы что и одномерный массив А но в котором отрицательные элементы предшествуют всем неотрицательных

Помогите сделать пожалуйста

составить алгоритм нахождения максимального значения из какого то промежутка например от 1 до 10

Пожалуйста помогите

Дан одномерный массив.Определить сколько отрицательных элементов находится после последнего минимального элемента.

массивы на java

Дан массив В(20) и С(30). Из этих массивов нужно получить
упорядоченный массив А(50). Массивы В(20) и С(30) заранее упорядочены
по возрастанию.

SoS

Помогите задачу в паскале написать: Дан массив из 10 эл-в. Составить программу, которая дает ответ на вопрос есть ли в массиве более одного эл-та равного минимальному. Ответ выводится в виде "Да" / "Нет".

Помогите пожалуйста.Надо написать программу на Паскале

Ввести массив В(n) вещественных чисел. Найти сумму отрицательных элементов массива и их количество. Подсчитать среднее арифметическое. Заменить им 1-ый, 3-ий, 5-ый и т.д. элементы. Массив распечатать.

Массивы, паскаль

как заполнить массив положит. и отриц числами, найти кол-во отриц. и посчитать их произведение, найти кол-во чётных и посчитать их сумму

Помогите пожалуйста с массивами

Я тут написал небольшой массив.

program massiv;
 
var
  MS: array[1..10] of integer;
  CH: array[1..10] of integer;
  NECH: array[1..10] of integer;
  x, y, z, : integer;
 
begin
  for x := 1 to 10 do
  begin
    readln(MS[x]);
  end;
  begin
    for x := 1 to 10 do
      if(MS[X] MOD 2 = 0) then 
      begin
        z := z + 1;
        CH[z] := MS[x];
      end;
    begin
      for x := 1 to 10 do
        if(MS[x] mod 2 = 1) then 
        begin
          y := y + 1;
          NECH[y] := MS[x];
        end;
    end;
  end;
  begin
    for z := 1 to 10 do
      writeln('ch[', z, ']=', CH[z]);
    for y := 1 to 10 do
      writeln('nech[', y, ']=', NECH[y]);
  end;
end.

Помогите мне сделать так, чтобы программа, при вводе чисел, ставила их в порядке возрастания.

массив, идея

сделай ещё одну переменную, сравнивая остаток от деления на 10 чисел со значением другой переменной. пиши, чтобы после каждой проверки оно заменяло последующее, тогда они будут в порядке возрастания

СООООООООС СРОЧНО!!!!!!!!!!

Помогите пожалуйста! Мне нужно написать одномерный массив, при вводе него 10 чисел, разделял их на четный и нечетный массивы, а также ставил их в порядке возрастания. ПОЖАЛУЙСТА!!!

Помогите пожалуйста

Вывести значение положительного элемента вектора d размерности 5 элементов с наибольшим значением индекса.

чётность элементов

надо задать с клавиатуры 2 массива,вывести их на экран и найти совпадающие чётные элементы.как их найти и соответственно вывести на экран,объясните?

Помогите пожалуйста (Google translate :) )

Написать программу, которая сжимает серии, massiv, членами которого являются единицами и нулями. При этом он много единиц или нулей подряд. Это формирует новый massiv.
например серия [0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1] -> [4,7,2,4] - массив начинается с 0, поэтому первое № 4 [1,1,1,0,0,0,0,0,0,0] -> [0,3,7] - серия начинается с 1, что означает, что есть нулевой 0 в начале

Решение здесь:

Решение здесь: http://pas1.ru/compression-array

Помогите пожалуйста срочно!!!!!!!!!!!

Заполнить массив [ q [ i, j] , i =1,3; j=1,3] целыми случайными числами, отобразить их в пользовательской форме, вычислить максимальный элемент массива и вывести результат (в той же форме).

Помогите пожалуйста

дан одномерный массив состоящий из 10 элементов, Пользователь вводит элементы массива. Вывести массив на экран в строку. Найти максимальный элемент массива. В паскале

Помогите с задачей

Дан целый вектор М(n), n<=12. Сформировать вектор А, элементы которого A[i] равны количеству цифр в десятичной записи элемента М[i].

Линейный массив

1) Заполнить линейный массив, элементы которого вычисляются по формуле a[i]=(5i!-d)/i!-1. Вычисление по формуле оформить процедурой1) Заполнить линейный массив, элементы которого вычисляются по формуле a[i]=(5i!-d)/i!-1. Вычисление по формуле оформить процедурой. Pascal

Программа вывода на экран

Написать программу вывода на экран чисел, если они чётные и индексы и ячеек чётные.

нужна помощь

Помогите пожалуйста.
создать массив содержащий не более чем 55 целых чисел из промежутка (–45;45). найти количество всех не положительных, четных элементов массива

Массивы

Расстановка 16 букв. В квадрате размером 4x4 клетки расставить 16 букв (четыре A, четыре B, четыре C, четыре D) так, чтобы в каждом горизонтальном и в каждом вертикальном ряду любая буква встречалась только один раз.

массивы

Помогите пожалуйста решить(( сама не справляюсь. Описать в программе массив, который заполняется случайными числами в промежутке т1-т2 (Промежуток задается преподавателем). Реализовать методом турнирной сортировки! Кто решит от меня небольшой бонус на мобильный счет телефона))

Массивы

Дан массив A(M). Из элементов массива A, больших 10, сформировать массив B

Вот, держи! :)

var
  mas_a, mas_b: array [1..100] of integer;
  kol_more, n, i, j: integer;
 
begin
  write('Размер = ');readln(n);
  write('Массив A = ');
  for i := 1 to n do read(mas_a[i]);
 
  j := 1;
 
  for i := 1 to n do
  begin
    if mas_a[i] > 10 then 
    begin
      mas_b[j] := mas_a[i];
      inc(kol_more); 
      inc(j);
    end;
  end;
  if kol_more = 0 then write('Массив B = пуст') else
  begin
    write('Массив B = ');
    for i := 1 to kol_more do write(mas_b[i], ' ');
  end;
 
end.

помогите решить, очень нужно

Написать программу с обработки одномерного числового массива. в массиве целых чисел определить минимальный нечетных элементов массива

помогите

вычислить и напечатать разность элементов массива 1 и 2, 3 и 4, 5 и 6

Целочисленный массив

Сформировать целочисленный массив из 15 элементов. элементы массива ввести как случайные числа в диапазоне от - 8 до 10. Отсортировать массив по возрастанию методом выбора и найти наибольшее значение разности между соседними элементами. Free Pascal. Помогите срочно

Помогите

Помогите решить!!
Перераспределите элементы массива D(21) методом "из середины" ("быстрый").
Пожалуйста!!!

Возможно, это не верное

Возможно, это не верное решение. Смотрю схему здесь: cyberforum.ru/turbo-pascal/thread1031258.html

Напишите потом правильно или неправильно решена задача.

const N = 21;
var
    arr: array[1..N] of byte;
    i, j, b: byte;
    f: integer;
begin
    for i:=1 to N do begin
        arr[i] := i;
        write(arr[i]:3);
    end; writeln;
 
    j := N div 2 + 1; // центральный элемент
    f := 1;
    for i:=1 to N-1 do begin
        b := arr[j];
        if f = 1 then begin
            arr[j] := arr[j-i]; 
            arr[j-i] := b;
            j := j - i;
            f := 0;
        end
        else begin
            arr[j] := arr[j+i]; 
            arr[j+i] := b;
            j := j + i;
            f := 1;
        end;
 
        for b:=1 to N do write(arr[b]:3);
        writeln;
 
    end;
end.

Задание, массивы

составить программу нахождения произведения четных элементов одномерного массива

1

const
  n = 20;
 
var
  m: array [1..n] of integer;
  i, p: longint;
 
begin
  for i := 1 to n do
  begin
    m[i] := random(10) + 1;
    write(m[i], ' ');
  end;
 
  p := 1; 
 
  for i := 1 to n do
  begin
    if not odd(i) then p := p*m[i];
  end;
 
  writeln;
  write('REZ=', p);
end.

помогите пожалуйста написать программу, массивы в паскале

Каждому отрицательному элементу массива А[2х3] присвоить значение 5. Каждый элемент массива вычисляется по формуле: А[i, j]=sin (15* (i+j)).

Program massiv2;Const n=2;

Program massiv2;
Const n=2; m=3;
Type Matrix=Array[1..n,1..m] of real;
Var A:Matrix;
 
Procedure Make(Var A: matrix);
  var i,j: integer;
  begin
  for i:=1 to n do
   for j:=1 to m do
    A[i,j]:=sin(15*(i+j));
 end;
 
Procedure Print(A:matrix);
 var i,j: integer;
  begin
  for i:=1 to n do 
  begin
   for j:=1 to m do
     write(A[i,j]:5:2);
   writeln;
   end;
 
Procedure Preobr(Var A: matrix);
  var i,j: integer;
  begin
  for i:=1 to n do
   for j:=1 to m do
    if  A[i,j]<0 then  A[i,j]:=5;
 end;
 
 
 
Begin 
   Make(A);
   writeln('Исходный массив:');
   Print(A);
   Preobr(A); 
   writeln('Преобразованный  массив:');
   Print(A);
 End.

const N = 2; M = 3; var

const N = 2; M = 3;
var
    mtx: array[1..N,1..M] of real;
    i,j: byte;
begin
    for i:=1 to N do begin
        for j:=1 to M do begin
            mtx[i,j] := sin(15*(i+j));
            if mtx[i,j] < 0 then
                mtx[i,j] := 5;
            write(mtx[i,j]:7:2);
        end;
        writeln;
    end;    
end.

ЗАДАНИЕ 1Составить программу

ЗАДАНИЕ 1
Составить программу с использованием базовых алгоритмов для работы с одномерными массивами.
ВАРИАНТЫ ЗАДАНИЯ
сформулировать вещественный массив А1(45), элементами которого являются случайные числа. Найти самую длинную последовательность чисел, упорядоченную по возрастанию. Вывести на экран исходный массив и найденную последовательность. Для последовательностей одной длины вывести их все.

решение

Вывести заданный массив на

Вывести заданный массив на печать.
Входные данные: Выходные данные:

В первой строке входного потока задано натуральное число N - количество элементов целочисленного массива (N < 1000).
Во второй строке перечислены через пробел значения элементов массива Ai (-32000 < Ai < 32000)

Вывести в столбик значения всех элементов заданного массива в прямом порядке.
Пример входного файла (input.txt):

5
2 5 1 100 -930

Пример выходного файла (output.txt):

2
5
1
100
-930

Помогите решить задачу

Задан числовой массив А(m,n). Некоторый элемент этого массива назовем седловой точкой, пусть он является одновременно наименьшим в своей строке и наибольшим в своем столбце. Разработайте алгоритм, составьте программу по этому алгоритму, позволяющую напечатать номера строки и столбца какой-нибудь седловой точки, если она существует, и напечатать число 0, если такой точки нет.

Если матрица заполняется

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

Для вашей задачи матрицу лучше заполнять в ручную. В задаче, указанной выше, знак < в цикле с k поменять на >. Для вывода 0 когда элемент не найден, можно ввести переменную flag2 и присвоить ей false до всех циклов. Изменить в выводе:

    if flag = True then begin
        writeln('row:',i,' col:',min);
        flag2 := True;
    end;

После всех циклов: если flag2 = False вывести 0.

Помогите решить задачу с использованием функций

Вычеслить: 2-я задача http://s012.radikal.ru/i319/1411/cd/439e5873c75b.jpg

помогите решить!

создайте массив В из преобразованных по формуле cos(А[i]) элементов массива А.

Помогите пожалуйста решить задачу

Найдите максимальные элементы в каждом столбце матрицы (n, m) и выведите их в виде одномерного массива

Нужна помощь :)

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

Та же проблема, что и здесь.

Та же проблема, что и здесь.

Помогите пожалуйста)

Задача . вычислите используя рекурсию :
http://cs624720.vk.me/v624720566/bfc9/jeRicX5zDL0.jpg

Как понимаю, здесь рекурсия

Как понимаю, здесь рекурсия используется лишь для нахождения факториала, и в условии ошибка: если в первом случае > 5, то во втором должно быть <= 5.

var
    n: byte;
    y: longint;
function factorial(m: byte): longint;
begin
    if m = 1 then
        factorial := 1
    else
        factorial := m * factorial(m-1);
end;
begin
    readln(n);
    if n > 5 then
        y := (n+4) * (n+4)
    else 
        y := factorial(n);
    writeln(y);
end.

Помогите решишь Функцию)

http://cs624720.vk.me/v624720566/bfad/3zFCYIoKLzA.jpg

Нужна помощь...

Ввести одномерный массив А(n). если в массиве нет четных элементов, то заменить все положительные элементы на 0, иначе найти максимальный по модулю элемент массива и его номер.

const N = 10; var arr:

const N = 10;
var
    arr: array[1..N] of integer;
    i, id: byte;
    flag: boolean;
    max: integer;
begin
    for i:=1 to N do
        read(arr[i]);
 
    flag := True;
    for i:=1 to N do
        if not odd(arr[i]) then begin
            flag := False;
            break;
        end;
 
    if flag = True then begin
        for i:=1 to N do begin
            if arr[i] > 0 then
                arr[i] := 0;
            write(arr[i],' ');
        end;
        writeln;
    end
    else begin
        max := abs(arr[i]);
        id := 1;
        for i:=2 to N do
            if abs(arr[i]) > max then begin
                max := abs(arr[i]);
                id := i;
            end;
        writeln('arr[',id, ']=', max);
    end;
end.