• XSS.stack #1 – первый литературный журнал от юзеров форума

Pascal

ZERO-Q

CD-диск
Пользователь
Регистрация
28.06.2006
Сообщения
11
Реакции
0
привет всем!
В этом году я закончил изучение Borlond Pascal 7.0, но одну тему не успели разобрать Массивы. Пожалуйстап помогите объяснить эту тему, чтобы дальше не напрягаться!
Заранее спасибо!
 
Работа со строками - это тоже самое что и массивы!!!
Строка - это и есть массив... обращаться к элемунту массива так же как и к символу в строке
string := 'vasek';
temp := string[1];

отсюда следует что в переменной temp лежит буква 'A'
так же и массивы будь-то текст, числа, или ещё какие данные...

P.S. Но лутше БИБЛИЮ ДЕЛФИ почитать!!! :thumbsup:
 
Помню наизусть определение из школьной тетрадки:

Массив - упорядоченная совокупность однотипных данных.

объявление(например, массив символов с индексами от 1 до 100)
Код:
a : array [1..100] of char;

обращение к элементу массива (взятие символа из элемента массива № i)
Код:
 . . .
var i : integer;
     c:char;

begin
c:=a[i];

. . .

Вот практически все что обычно требуется (больше щас лень писать). Посмотри еще в гугле про многомерные массивы, в частности двумерный массив и фсякие фишки с его элементами.
 
объявление(например, массив символов с индексами от 1 до 100)
или
Код:
Type <имя_типа> = array[1..100] of byte;
Var <var_name>:<имя_типа>
:D
 
в паскаль 7 нету Tlist тока array и там вроде все просто как обьявление идет уже написали... если массив многомерный то пираметры идут через запятую
Код:
a : array [1..100,1..100,1..100] of char;
вызов тоже через запятую..
Код:
var i : integer;
      j : integer;
     k : integer
    c:char;

begin
c:=a[i,j,k];
да максимальный размер массива 64к
 
ой прям даже слишком мало... даже скольнибудь что то большое нельзя в память загрузить.. приходилось загружать частично из файла.. но само описание и тд и тп в массивах далеко не самое интересное...там такие задачки есть закачаешся.. тока искать долго да и лень... =)
 
в Паскале нет Tlist
Добавлено в [time]1151566558[/time]
мне хотелось бы узнать что делают массивы. И если не сложно приведите пример простой программы, чтобы я смог ее разобрать.
 
ну... к примеру поиск максимального элемента в двумерном массиве проше некуда...
Код:
Program Sort;
uses Crt;
const
n=20;
m=20;
var i,j,max:integer;
    a:array[1..n,1..m] of integer;
Begin;
ClrScr;
Randomize;
 For i:=1 to n do Begin
  For j:=1 to m do Begin
   a[i,j]:=random(99)-50; (*запоняем массив случайными числами от -49 до 50 *)
  End;
 End;
max:=a[1,1];(*это чтобы дать начальное значение*)
 For i:=1 to n do Begin
  For j:=1 to m do Begin
   Write(a[i,j]:3);
   If a[i,j]>max then max:=a[i,j]; (*Выводим массив на экран и ишем максимальный элемент*)
  End;
  writeln;
 End;
Writeln;
Writeln(max);
(*Выводим максимальный элемент*)
Readln;
End.
 
Понятие массивов

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

Для того, чтобы Вы лучше поняли, я приведу простой пример. Давайте представим работу такой программы, как нахождение среднего арифметического среди 100 чисел. Что нам понадобиться для написания такой программы? Конечно, сами числа. Для хранения 100 чисел мы должны использовать 100 переменных. Описать их можно, скажем, следующим образом:

var

n1,n2,n3,n4,n5,

n6,n7, ..., n100: Integer;

Это будет выглядеть крайне громоздко, не так ли? Вот здесь и возникает понятие массивов. Массив - это на самом деле одна переменная, но она содержит в себе большое количество отдельных элементов, того типа, который определит программист, и столько, сколько он захочет. (При этом размер массива несколько ограничен). Что это означает? Что заведя переменную-массив мы как бы создаем цепочку переменных. После чего мы можем обратиться к любому элементу этой цепочки: прочитать его, изменить, сделать с ним все, что можно сделать с обычной переменной.

Помните строку? Я имею в виду тип String, который позволяет обратиться к любому символу своему символу:

S: String; S[2] := 'a';

Так вот, String - это и есть своего рода массив. Массив из переменных типа Char. Посмотрите, мы заводим всего одну переменную, после чего можем обратиться к любому ее символу, изменить его, прочитать и т.д. (Однако предупрежу, String - это все же не массив. Просто этот тип очень подходит для примера).

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

Создание (описание) массивов

Итак, мы решили создать и использовать в своей программе массив из чисел. Для примера возьмем ту программу, которую я придумал в описании понятия массива: найти среднее арифметическое среди 100 чисел.

Массив - это переменная и как все переменные описывается в разделе var программы. Описание переменной - массива состоит из:

* Имени переменной;

* Служебного слова Array, означающего "массив";

* Описания размера массива (в нашем случае 100 чисел). Диапазон записывается в квадратных скобках - [ и ]. Внутри пишется сам диапазон, в виде двух чисел, разделенных двоeточием: начало..конец;

* · Задании типа для элементов массива (в нашем случае - целые числа, или Integer). Задание типа начинается со служебного слова of;

Вот пример описания массива на 100 чисел:

var

Mas: Array [1..100] of Integer;

Выпишите этот пример на бумагу. Он вам понадобиться в дальнейшем, так как с первого раза не все его запоминают.

Теперь в программе можно обратиться к любому элементу этого массива - от 1 до 100. Делается это посредством указания имени переменной с номером элемента в квадратных скобках. Вот примеры:

begin

Mas[1] := 100;

Readln(Mas[2]);

Write(Mas[4);

if Mas[100] < 18 then Halt;

Mas[50] := Mas[49] + Mas[1];

end.

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

Ну а теперь давайте всеже напишем нашу программу.

Program N1;
var
M: Array [1..100] of Integer;
A: Real;
I: Byte;
begin
Randomize;
For I := 1 to 100 do
M := Random(500);
For I := 1 to 100 do
A := A + M;
A := A / 100;
Write('Среднее арифметическое всех чисел массива: ', A);
end.

Теперь посмотрите, как я использую эту функцию в программе. Дело в том, что вводить с клавиатуры 100 чисел не так уж и приятно, верно? Вот я и заполняю массив случайными числами. Диапазон до 500 вполне здесь подходит, числа будут не очень большие, но и не очень маленькие. При этом я циклом изменяю значение массива и с помощью переменной I пробегаюсь по всем его элементам, заполняя их случайными числами.

Этот пример хорошо демонстрирует создание массива и доступ к его элементам.

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

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

Текст программы:

Program N2;
var
M: Array [1..10] of Integer;
Max: Integer;
I: Byte;
begin
Writeln('Введите 10 чисел: ');
For I := 1 to 10 do
begin
Write('N',i,': ');
Readln(M);
end;
Max := M[1];
For I := 1 to 10 do
if Max < M then Max := M;
Write('Максимальное число: ', Max);
Readln;
end.

Алгоритм работы этой программы очень и очень прост. Среди введенных чисел мы находим максимальное следующим образом:

* Сначала за максимальное принимается первое число;

* После оно сравнивается со всеми оставшимися числами, при этом:

o Если следующий элемент больше принятого за максимум (переменная Max), то оно принимается за максимум.

o После сравнения всех элементов в конце концов остается одно число, которое больше всех в массиве.

-------------------------------------------
Взято из статьи Дмитриева Эдуарда.
 
Простой пример нахождения уникальных элементов массива (как в php array_unique()). Работает с 2-мя файлами.
Код:
program uniq;
var f,g:text;
i,n,s,j:byte;
a,b,c:array[1..10] of byte;
d:array[1..1] of byte;
begin
assign(f,'f.txt');
rewrite(f);
randomize;
for i:=1 to 10 do begin
a[i]:=random(5);
write(f,a[i],' ');
end;
close(f);
reset(f);
i:=1;
while (EOln(f) <> TRUE) do begin
read(f,b[i]);
i:=i+1;
end;
close(f);
assign(g,'g.txt');
rewrite(g);
c[1]:=b[1];
n:=1;
for i:=1 to 10 do begin
s:=0;
for j:=1 to n do begin
if(c[j] = b[i]) then inc(s);
end;
if (s=0) then begin
inc(n);
c[n]:=b[i];
end;
end;
for i:=1 to n do write(g,c[i],' ');
close(g);
end.
end.
Например файл F содержит числа 1 2 2 1 1 0 1 3 4 2. Тогда файл G будет содержать 1 2 0 3 4.
В свое время писал другу для лабы в универ. Писалось на скорую руку(сессия его поджимала), так что не судите строго ;)
 
Только самообразование человека выгодно отличает его от братьев его меньших...

ZERO-Q

Советы это хорошо...Но лутше советоваться идеей, а вот реализацией простейших вещей.....Лутше почерпнуть из книжных источников!!!

:rtfm:
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх