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

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

Gizmo364 16.03.2011 23:06

Массивы
 
Помогите решить задачу по Массивам.

Написать программу размещения элементов заданного вектора в обратном порядке (без использования дополнительного массива).

P.S. задача по паскалю.

Vladimir_S 17.03.2011 09:47

Цитата:

Сообщение от Gizmo364 (Сообщение 486882)
Помогите решить задачу по Массивам.

Написать программу размещения элементов заданного вектора в обратном порядке (без использования дополнительного массива).

P.S. задача по паскалю.

Легко:
Код:

Const
 N=16;
VAR
 A:Array[0..N] of Byte;
 i,d:Byte;

BEGIN
 Randomize;
 For i:=0 to N do
  begin
  A[i]:=Random(100);
  Write(A[i]:4);
  end;
 Writeln;
 Writeln;
 For i:=0 to (N div 2) do
  begin
  d:=A[i];
  A[i]:=A[N-i];
  A[N-i]:=d;
  end;
 For i:=0 to N do
  Write(A[i]:4);
 Writeln;
 ReadLn;
END.


Gizmo364 31.03.2011 18:46

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

Vladimir_S 31.03.2011 20:27

Цитата:

Сообщение от Gizmo364 (Сообщение 495527)
не могли бы ли вы мне пояснить, как работает данная программа...?

Да просто попарно меняет местами члены массива: первый - с последним, второй - с предпоследним и т.д. до середины.

Gizmo364 31.03.2011 20:59

большое спасибо)

Gizmo364 07.04.2011 22:49

а не подскажете еще, как сделать "ввод размерности вектора?"

kreol 07.04.2011 23:30

никак. только через ассемблер в паскале нету динамических массивов

Gizmo364 07.04.2011 23:34

показал преподу данную программу и он меня спросил - "Почему нет ввода размерности вектора?"

kreol 08.04.2011 00:19

вот что нашел
Попробуйте создавать их динамически, в куче - Heap (GetMem, FreeMem). Работать с ними нужно через указатели.
или
Цитата:

ype TIntMassiv = array of Integer;
var intMassiv: TIntMassiv; здесь создан новый тип TIntMassiv, это динамический массив, его размер не известен, и переменная данного типа intMassiv. Размер динамического массива неизвестен, но для работы с таким массивом размер надо установить. Устанавливают размер динамического массива в Паскаль с помощью функции SetLength
SetLength(intMassiv, 2);
здесь установлен размер два для массива intMassiv. Отсчет индексов динамического массива в Паскале всегда ведут с нуля.
хотя последнее скорее всего не правильное.
еще скачайте книгу
В.В. Фаронов. Turbo Pascal в подлиннике. Наиболее полное руководство

Vladimir_S 08.04.2011 09:32

Цитата:

Сообщение от kreol (Сообщение 499942)
никак. только через ассемблер в паскале нету динамических массивов

Здрасьте пожалуйста приехали! Нету, стало быть? И указателей нету? И с каких это пор? И что же тогда в нем есть?
А вот и вариант программы, использующий как раз то, чего в Паскале якобы нет:
Код:

TYPE
 T=Array[0..1] of Byte;
VAR
 A:^T;
 d:^Byte;
 i,N:Byte;

BEGIN
 {$R-}
 Write('N= ');
 ReadLn(N);
 GetMem(A, SizeOf(Byte)*(N+1));
 Randomize;
 For i:=0 to N do
  begin
  A^[i]:=Random(100);
  Write(A^[i]:4);
  end;
 Writeln;
 Writeln;
 New(d);
 For i:=0 to (N div 2) do
  begin
  d^:=A^[i];
  A^[i]:=A^[N-i];
  A^[N-i]:=d^;
  end;
 Dispose(d);
 For i:=0 to N do
  Write(A^[i]:4);
 Writeln;
 FreeMem(A, SizeOf(Byte)*(N+1));
 ReadLn;
END.



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

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