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


Закрытая тема
 
Опции темы Опции просмотра
Старый 16.03.2011, 23:06   #1 (permalink)
Gizmo364
Новичок
 
Регистрация: 16.03.2011
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Массивы

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

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

P.S. задача по паскалю.
Gizmo364 вне форума  

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

Наверняка вам будет полезна информация которая содержится в данных обсуждениях

Массивы
Массивы

Старый 17.03.2011, 09:47   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,359
Сказал(а) спасибо: 289
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

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

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

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.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме  
Старый 31.03.2011, 18:46   #3 (permalink)
Gizmo364
Новичок
 
Регистрация: 16.03.2011
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

не могли бы ли вы мне пояснить, как работает данная программа...?
Gizmo364 вне форума  
Старый 31.03.2011, 20:27   #4 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,359
Сказал(а) спасибо: 289
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от Gizmo364 Посмотреть сообщение
не могли бы ли вы мне пояснить, как работает данная программа...?
Да просто попарно меняет местами члены массива: первый - с последним, второй - с предпоследним и т.д. до середины.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме  
Старый 31.03.2011, 20:59   #5 (permalink)
Gizmo364
Новичок
 
Регистрация: 16.03.2011
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

большое спасибо)
Gizmo364 вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 07.04.2011, 22:49   #6 (permalink)
Gizmo364
Новичок
 
Регистрация: 16.03.2011
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а не подскажете еще, как сделать "ввод размерности вектора?"
Gizmo364 вне форума  
Старый 07.04.2011, 23:30   #7 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

никак. только через ассемблер в паскале нету динамических массивов
kreol вне форума  
Старый 07.04.2011, 23:34   #8 (permalink)
Gizmo364
Новичок
 
Регистрация: 16.03.2011
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

показал преподу данную программу и он меня спросил - "Почему нет ввода размерности вектора?"
Gizmo364 вне форума  
Старый 08.04.2011, 00:19   #9 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

вот что нашел
Попробуйте создавать их динамически, в куче - Heap (GetMem, FreeMem). Работать с ними нужно через указатели.
или
Цитата:
ype TIntMassiv = array of Integer;
var intMassiv: TIntMassiv; здесь создан новый тип TIntMassiv, это динамический массив, его размер не известен, и переменная данного типа intMassiv. Размер динамического массива неизвестен, но для работы с таким массивом размер надо установить. Устанавливают размер динамического массива в Паскаль с помощью функции SetLength
SetLength(intMassiv, 2);
здесь установлен размер два для массива intMassiv. Отсчет индексов динамического массива в Паскале всегда ведут с нуля.
хотя последнее скорее всего не правильное.
еще скачайте книгу
В.В. Фаронов. Turbo Pascal в подлиннике. Наиболее полное руководство
kreol вне форума  
Старый 08.04.2011, 09:32   #10 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,359
Сказал(а) спасибо: 289
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от kreol Посмотреть сообщение
никак. только через ассемблер в паскале нету динамических массивов
Здрасьте пожалуйста приехали! Нету, стало быть? И указателей нету? И с каких это пор? И что же тогда в нем есть?
А вот и вариант программы, использующий как раз то, чего в Паскале якобы нет:
Код:
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.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме  
Ads

Яндекс

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

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

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

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




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

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