Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2014, 16:58   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,432
По умолчанию

Код:
p1 := 1;
p2 := N;
for k := 1 to (N - j + i + 1) div 2 do
begin
  if p1 = i then
    p1 := j;
  if p2 = j then
    p2 := i;
  //обмен p1-го и p2-го элементов
  inc(p1);
  dec(p2);
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 22.04.2014 в 17:01.
BDA на форуме Ответить с цитированием
Старый 22.04.2014, 17:33   #12
ioan34
Пользователь
 
Регистрация: 21.04.2014
Сообщений: 11
По умолчанию

Program ABC;
const
Nmax=100;
type
vector=array[1..Nmax] of Integer;
var
a:vector;
i,n,max,imax,min,imin,k1,k2,temp:in teger;
begin
write('N=');
readln(n);
for i:=1 to n do
begin
write('A[',i,']=');
readln(a[i]);
end;
for i:=1 to n do
write(a[i]:5);
writeln;
max:=a[1];
imax:=1;
min:=a[1];
imin:=1;
for i:=1 to n do
if a[i]>max then
begin
max:=a[i];
imax:=i;
end
else
if a[i]<min then
begin
min:=a[i];
imin:=i;
end;
writeln('max=',max,' min=',min);
if min<max then
begin
k1:=min;
k2:=max;
end
else
begin
k1:=max;
k2:=min;
end;
writeln('k1=',k1,' k2=',k2);
for i:=1 to (k1 div 2) do
Begin
temp:=a[i];
a[i]:=a[k1-i+1];
a[k1-i+1]:=temp;
End;
for i:=1 to (n-((n-k2)div 2)) do
begin
temp:=a[i];
a[i]:=a[n-i+1];
a[N-i+1]:=temp;
End;
for i:=1 to n do
write(a[i]:5);
readln;
end.
у меня ни чего не получилось...не пойму в чем проблема...дело в том что я только начинаю изучать программирование, многие операторы не знаю...
ioan34 вне форума Ответить с цитированием
Старый 22.04.2014, 19:48   #13
AnryKZKZ
Пользователь
 
Регистрация: 15.04.2014
Сообщений: 62
По умолчанию

Попробуем разобраться. Сообщу попозже что удалось сделать. Паскаль под дос? или устроит на delphi 7??
AnryKZKZ вне форума Ответить с цитированием
Старый 22.04.2014, 20:05   #14
ioan34
Пользователь
 
Регистрация: 21.04.2014
Сообщений: 11
По умолчанию

честно не знаю...эта прога которую я написал не работает...я быстро набросал...
ioan34 вне форума Ответить с цитированием
Старый 22.04.2014, 20:52   #15
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,432
По умолчанию

Вы храните в max и min сами значения (максимальное и минимальное). А номера хранятся в imax и imin. Из-за этого в k1 и k2 хранятся не те значения. Первый цикл for i:=1 to (k1 div 2) do вполне успешно "переворачивает" элементы, лежащие в начале массива (не компилировал, но похоже на правду). А вот цикл for i:=1 to (n-((n-k2)div 2)) do "перевернет" непонятно что (по крайней мере, на первый взгляд, он не переворачивает элементы, лежащие в конце массива). Посмотрите код в 11 посте. Вам нужно просто правильно инициализировать i и j (границы) и дописать обмен двух элементов массива с известными индексами.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 22.04.2014, 21:36   #16
ioan34
Пользователь
 
Регистрация: 21.04.2014
Сообщений: 11
По умолчанию

да вот у меня проблема как мне взять только последний кусок массива так чтобы разбить его целочисленным делением на 2...должно получится число которое является серединой отрезка от k2 до N...я даже в голове не могу представить формулу такого вычисления...
ioan34 вне форума Ответить с цитированием
Старый 22.04.2014, 21:44   #17
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,432
По умолчанию

Тогда уточним задачу: нужно переставить обе части в обратном порядке, как единое целое, или две части, отдельно каждую?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 22.04.2014, 22:30   #18
ioan34
Пользователь
 
Регистрация: 21.04.2014
Сообщений: 11
По умолчанию

вот тут то и проблема...я пробовал переставить отдельно...первая часть получалась, вторая ни в какую...задание в первом сообщении...я так понимаю там надо поменять как целое...
ioan34 вне форума Ответить с цитированием
Старый 22.04.2014, 22:39   #19
ioan34
Пользователь
 
Регистрация: 21.04.2014
Сообщений: 11
По умолчанию

Я бы назвал это задание взрывом мозга...учитывая что у меня препод перфекционистка в области программирования, то если код будет написан не так как она его задумывала, то это будет полный крах и психологическая травма...
ioan34 вне форума Ответить с цитированием
Старый 22.04.2014, 23:02   #20
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,432
По умолчанию

Если как целое, то посмотрите еще раз код в 11 сообщении. Там ведь всё просто - перебираем индексы с конца и с начала. Индексы "перескакивают" элементы, лежащие между заданными индексами. Задание нормальное Другое дело, как его будет оценивать преподаватель.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается написать код hello19 Visual C++ 1 04.08.2011 13:52
ПОМОГИ.те написать програму+мшинний код к ней Dzef Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.05.2010 10:08
Не получается написать код для File>Open fs444 C++ Builder 4 25.08.2009 09:26
Помогите написать функцию плиз.Не получается Clockgen Microsoft Office Excel 2 14.12.2008 22:01
Пробую написать свой сервис... =LeonZone= Win Api 4 30.09.2007 16:46