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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2011, 15:26   #1
pashqa
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 37
По умолчанию Работа с массивами

Здравствуйте!
Помогите, пожалуйста решить такую задачу на Паскале с помощью Repeat/Until:
В одномерном массиве, состоящем из N целочисленных элементов, вычислить:
1. Минимальный по модулю элемент массива.
2. Сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
3.Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине - элементы, стоявшие в нечетных позициях.
P.S. Я знаю,вы не любите халявщиков,я в Паскале очень слаб...поэтому прошу помощи у вас.
pashqa вне форума Ответить с цитированием
Старый 25.04.2011, 16:13   #2
j2ko
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 25
По умолчанию

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

Последний раз редактировалось j2ko; 25.04.2011 в 16:25.
j2ko вне форума Ответить с цитированием
Старый 25.04.2011, 18:09   #3
pashqa
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 37
По умолчанию

Цитата:
Сообщение от j2ko Посмотреть сообщение
мда ностальгия за первим курсом)))
начну решать когда буду уверен в том что она тебе ещо нужна,
нехочу попусту тратить время, поетому напиши.
был бы очень признателен,если бы помогли решить...
pashqa вне форума Ответить с цитированием
Старый 25.04.2011, 18:18   #4
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
http://www.google.com/search?hl=ru&s...&aqi=&aql=&oq=
До свидания
P.S. Минус Вам добавить?
OlegVE вне форума Ответить с цитированием
Старый 25.04.2011, 19:09   #5
pashqa
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 37
По умолчанию

Цитата:
Сообщение от OlegVE Посмотреть сообщение
Здравствуйте
http://www.google.com/search?hl=ru&s...&aqi=&aql=&oq=
До свидания
P.S. Минус Вам добавить?
я видел то сообщение,но мне требуется чуть подругому,там решено без репит антил,я бы переделал ту,но у меня навыков мало,понимаю паскаль слабо...так что извините
pashqa вне форума Ответить с цитированием
Старый 26.04.2011, 00:35   #6
j2ko
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 25
По умолчанию 1)

Код:
program z21;
const N=5;
var 
  O : array [1..N] of integer;
  i : word;
  min:word;
begin
  writeln('Enter ',N,' elements  of array:');
  writeln;
  for i:=1 to N do
    read(O[i]);
  writeln('Minimal by ansolute value element is:');
  min:=abs(O[1]);
  i:=2;
  repeat 
     if(min>abs(O[i])) then
          min:=abs(O[i]);
     i:=i+1;
  until i>N;
  writeln('  ',min);
  readln;
end.
j2ko вне форума Ответить с цитированием
Старый 26.04.2011, 00:36   #7
j2ko
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 25
По умолчанию 2)

Код:
program z22;
const N=5;
var 
  O : array [1..N] of integer;
  i : word;
  sum:word;
begin
  writeln('Enter ',N,' elements  of array:');
  writeln;
  for i:=1 to N do
    read(O[i]);
  writeln('Sum element by absolute value after zero is:');
  sum:=0;
  i:=0;
  repeat 
     i:=i+1;
  until ((O[i])=0) or (i=N);

  if(i<N)then
  repeat 
     i:=i+1;
     sum:=sum+abs(O[i]); 
  until i=N;
  writeln('  ',sum);
  readln;
end.
j2ko вне форума Ответить с цитированием
Старый 26.04.2011, 00:36   #8
j2ko
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 25
По умолчанию 3)

Код:
program z23;
const N=10;
var 
  O : array [1..N] of integer;
  i : word;
  mid:word;
  tmp:word;
begin
  writeln('Enter ',N,' elements  of array:');
  for i:=1 to N do
    read(O[i]);
  writeln('Before replace:');
  for i:=1 to N-1 do 
     write(O[i],' ,');
     write(O[i+1]);  
     
  i:=1;
  mid := N div 2;
  repeat 
    if(i mod 2 <> 0) then
    begin
      {swap}
       tmp:=O[i];
       O[i]:=O[i+mid];
       O[i+mid]:=tmp      
    end;
    i:=i+1
  until i>mid;
  writeln;
  writeln('After replace :');
  for i:=1 to N-1 do 
     write(O[i],' ,');
     write(O[i+1]);
  readln;
end.
j2ko вне форума Ответить с цитированием
Старый 26.04.2011, 17:10   #9
j2ko
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 25
По умолчанию Полний микс етих заданий в одной с использиванием case

Код:
program z;
uses crt;
const N=5;
var
  O : array [1..N] of integer;
  i : word;
function GetMinimal:integer;
var
 min:word;
begin
  min:=abs(O[1]);
  i:=2;
  repeat 
     if(min>abs(O[i])) then
          min:=abs(O[i]);
     i:=i+1;
  until i>N;
  GetMinimal:=min;
end;


function SumAfterZero:longint;
var 
  sum:longint;
begin
  sum:=0;
  i:=0;
  repeat 
     i:=i+1;
  until ((O[i])=0) or (i=N);

  if(i<N)then
  repeat 
     i:=i+1;
     sum:=sum+abs(O[i]); 
  until i=N;
  SumAfterZero:=sum;
end;
procedure  Replase;
var
 mid:word;
 tmp:integer;
begin
 i:=1;
  mid := N div 2;
  repeat
    if(i mod 2 <> 0) then
    begin
      {swap}
       tmp:=O[i];
       O[i]:=O[i+mid];
       O[i+mid]:=tmp      
    end;
    i:=i+1
  until i>mid;
end;
procedure PrintArray;
var 
 i:word;
begin
 for i:=1 to N-1 do
     write(O[i],',');
     writeln(O[N]);
end;
begin
  writeln('Enter ',N,' elements  of array:');
  writeln;
  for i:=1 to N do
    read(O[i]);
  while true do
  begin
  clrscr;
  writeln('Array:');
  PrintArray;
  writeln('Commands:');
  writeln(' 1)Get minimal by absolute value');
  writeln(' 2)Get sum alements after zero');
  writeln(' 3)Replace array elements');
  writeln(' 4)Change array');
  writeln(' 5)exit');
  write('Choose:');
  readln(i);
  if (i<1) or (i>6) then
  begin
        writeln('Error!Command with such number does not exist');
        writeln('Try one more');
  end
  else
     case i of
      1:begin
            writeln('Minimal by ansolute value element is:');
            writeln('  ',GetMinimal);
         end;
      2:begin
            writeln('Sum element by absolute value after zero is:');
            writeln('  ',SumAfterZero);
        end;
      3:begin
            writeln('The sequence of elements change');
            writeln('Before:');
            PrintArray;
            Replase;
            writeln('After');
            PrintArray;
        end;
      4:begin
          writeln('Enter ',N,' elements  of array:');
          writeln;
          for i:=1 to N do
              read(O[i]);
        end;
      5:exit;
    end;
    writeln('Press any key ...');
    readln;

  end;
end.
j2ko вне форума Ответить с цитированием
Старый 27.05.2011, 00:52   #10
pashqa
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 37
По умолчанию

Цитата:
Сообщение от j2ko Посмотреть сообщение
Код:
program z;
uses crt;
const N=5;
var
  O : array [1..N] of integer;
  i : word;
function GetMinimal:integer;
var
 min:word;
begin
  min:=abs(O[1]);
  i:=2;
  repeat 
     if(min>abs(O[i])) then
          min:=abs(O[i]);
     i:=i+1;
  until i>N;
  GetMinimal:=min;
end;


function SumAfterZero:longint;
var 
  sum:longint;
begin
  sum:=0;
  i:=0;
  repeat 
     i:=i+1;
  until ((O[i])=0) or (i=N);

  if(i<N)then
  repeat 
     i:=i+1;
     sum:=sum+abs(O[i]); 
  until i=N;
  SumAfterZero:=sum;
end;
procedure  Replase;
var
 mid:word;
 tmp:integer;
begin
 i:=1;
  mid := N div 2;
  repeat
    if(i mod 2 <> 0) then
    begin
      {swap}
       tmp:=O[i];
       O[i]:=O[i+mid];
       O[i+mid]:=tmp      
    end;
    i:=i+1
  until i>mid;
end;
procedure PrintArray;
var 
 i:word;
begin
 for i:=1 to N-1 do
     write(O[i],',');
     writeln(O[N]);
end;
begin
  writeln('Enter ',N,' elements  of array:');
  writeln;
  for i:=1 to N do
    read(O[i]);
  while true do
  begin
  clrscr;
  writeln('Array:');
  PrintArray;
  writeln('Commands:');
  writeln(' 1)Get minimal by absolute value');
  writeln(' 2)Get sum alements after zero');
  writeln(' 3)Replace array elements');
  writeln(' 4)Change array');
  writeln(' 5)exit');
  write('Choose:');
  readln(i);
  if (i<1) or (i>6) then
  begin
        writeln('Error!Command with such number does not exist');
        writeln('Try one more');
  end
  else
     case i of
      1:begin
            writeln('Minimal by ansolute value element is:');
            writeln('  ',GetMinimal);
         end;
      2:begin
            writeln('Sum element by absolute value after zero is:');
            writeln('  ',SumAfterZero);
        end;
      3:begin
            writeln('The sequence of elements change');
            writeln('Before:');
            PrintArray;
            Replase;
            writeln('After');
            PrintArray;
        end;
      4:begin
          writeln('Enter ',N,' elements  of array:');
          writeln;
          for i:=1 to N do
              read(O[i]);
        end;
      5:exit;
    end;
    writeln('Press any key ...');
    readln;

  end;
end.
был бы очень благодарен если бы без процедур и функций...только через choise и repeat/until или через Case
pashqa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами (С++) q3storm Помощь студентам 7 26.04.2011 09:46
Работа с массивами madishka Помощь студентам 2 17.12.2010 21:45
работа с массивами CHOSEN1 Помощь студентам 1 08.12.2010 20:14
Работа с массивами Ovt Помощь студентам 0 03.12.2010 18:59