1 Востаннє редагувалося Torbins (19.03.2014 14:24:56)

Тема: Упорядкування одновимірного масиву

Доброго дня! Виникла проблема: препод по інформатиці задав задачу, але її вирішити не можу( Допоможіть вирішити,будь ласка.
УМОВА: Дано одновимірний масив С розмірністю N.
ТРЕБА: Переставити місцями перший і останній елемент масиву, якщо всі додатні елементи масиву знаходяться на парних позиціях і не перевишують задане число Р,інакше зробити знаки всіх елементів масиву від'ємними.


БУДЬ ЛАСКА,ДОПОМОЖІТЬ,БАГАТО ЧОГО ЗАЛЕЖИТЬ ВІД ЦЬОГО ЗАВДАННЯ

2 Востаннє редагувалося koala (18.03.2014 17:46:35)

Re: Упорядкування одновимірного масиву

hars14 написав:

Доброго дня! Виникла проблема: препод по інформатиці задав задачу, але її вирішити не можу(

Тут є два варіанти: або дійсно не можете - тоді показуйте, що можете і на чому виникла проблема; або навіть не намагалися відкрити підручник і розібратися - в цьому випадку ідіть на інший факультет, це - не ваше.

hars14 написав:

БУДЬ ЛАСКА,ДОПОМОЖІТЬ,БАГАТО ЧОГО ЗАЛЕЖИТЬ ВІД ЦЬОГО ЗАВДАННЯ

Як крайній варіант, оцініть, чого варте це "багато чого" і запропонуйте хоча б половину цього "багато чого" у відповідному розділі форуму.

Ну і правила почитайте у вільний від навчання час...

3

Re: Упорядкування одновимірного масиву

koala написав:
hars14 написав:

Доброго дня! Виникла проблема: препод по інформатиці задав задачу, але її вирішити не можу(

Тут є два варіанти: або дійсно не можете - тоді показуйте, що можете і на чому виникла проблема; або навіть не намагалися відкрити підручник і розібратися - в цьому випадку ідіть на інший факультет, це - не ваше.

hars14 написав:

БУДЬ ЛАСКА,ДОПОМОЖІТЬ,БАГАТО ЧОГО ЗАЛЕЖИТЬ ВІД ЦЬОГО ЗАВДАННЯ

Як крайній варіант, оцініть, чого варте це "багато чого" і запропонуйте хоча б половину цього "багато чого" у відповідному розділі форуму.

Розумієте,коли преподу 86 років, і він ненавиде студентів, і при цьому не ходе на лекції, то щось вивчити складно,тому і прошу допомогу тут

4

Re: Упорядкування одновимірного масиву

Я так розумію, це препод у вас з вересня місяця?

5

Re: Упорядкування одновимірного масиву

koala написав:

Я так розумію, це препод у вас з вересня місяця?

Так

6

Re: Упорядкування одновимірного масиву

Можете почитати тут: http://uk.wikibooks.org/wiki/Pascal - якщо проблема в преподі.

7

Re: Упорядкування одновимірного масиву

koala написав:

Можете почитати тут: http://uk.wikibooks.org/wiki/Pascal - якщо проблема в преподі.

Дякую,але було б добре щоб мені натякнули як робить

8

Re: Упорядкування одновимірного масиву

Здається так

program z1;
const n=10;
var a: array [1..n] of integer;
    buf,i,P:integer;
    f:byte;
begin
writeln('Введіть елементи масиву');
for i:=1 to n do
    begin
    write('a[',i,']=');
    readln(a[i]);
    end;
write('Введіть P: ');
readln(P);
f:=1;
for i:=1 to n do
    if f=1
       then
       if i mod 2 =0
          then if (a[i]>0) and (a[i]<P)
                  then f:=1
                  else f:=0
          else
       else break;
if f=1
   then begin
        buf:=a[1];
        a[1]:=a[n];
        a[n]:=buf;
        end
   else for i:=1 to n do
        a[i]:=-abs(a[i]);
for i:=1 to n do
    writeln(a[i]);
end.
Подякували: koala, hars14, 0xDADA11C73

9

Re: Упорядкування одновимірного масиву

studentKA написав:

Здається так

program z1;
const n=10;
var a: array [1..n] of integer;
    buf,i,P:integer;
    f:byte;
begin
writeln('Введіть елементи масиву');
for i:=1 to n do
    begin
    write('a[',i,']=');
    readln(a[i]);
    end;
write('Введіть P: ');
readln(P);
f:=1;
for i:=1 to n do
    if f=1
       then
       if i mod 2 =0
          then if (a[i]>0) and (a[i]<P)
                  then f:=1
                  else f:=0
          else
       else break;
if f=1
   then begin
        buf:=a[1];
        a[1]:=a[n];
        a[n]:=buf;
        end
   else for i:=1 to n do
        a[i]:=-abs(a[i]);
for i:=1 to n do
    writeln(a[i]);
end.

Вчора не було часу передивитись програму,глянув тільки чі працює, а сьогодні дивлюсь і виникло питання:

f:=1;
for i:=1 to n do
    if f=1
       then

для чого ми присвоюємо f значення 1?

10

Re: Упорядкування одновимірного масиву

Тому що імена змінним треба давати змістовні, тоді зайвих рухів стає менше, бо стає очевидним, що і де робиться.

11 Востаннє редагувалося studentKA (19.03.2014 22:14:32)

Re: Упорядкування одновимірного масиву

hars14 написав:

Вчора не було часу передивитись програму,глянув тільки чі працює, а сьогодні дивлюсь і виникло питання:

f:=1;
for i:=1 to n do
    if f=1
       then

для чого ми присвоюємо f значення 1?

Змінна f - це прапорець, який вказує на виконання умов 0<a(i)<P. Початково f=1, що дозволяє при першій перевірці умови піти по +, інакше переривається цикл. Коли умова виконується, то змінна f=1, якщо хоча б одна з них не виконується, то присвоюється значення 0, що перериває цикл.

Отже, при останній перевірці, коли f=1 (умова виконується), ми міняємо місцями перший та останній елемент масиву, та в іншому випадку робимо всі елементи масиву від'ємними.

if f=1
   then begin
        buf:=a[1];
        a[1]:=a[n];
        a[n]:=buf;
        end
   else for i:=1 to n do
        a[i]:=-abs(a[i]);
Подякували: hars141

12 Востаннє редагувалося koala (20.03.2014 14:15:57)

Re: Упорядкування одновимірного масиву

Для таких прапорців краще використовувати boolean з назвою, що описує ситуацію - наприклад, inRange. Порівняйте:

  inRange := true;
  i := 1;
  while inRange and ( i <= n) do begin
    if ( a[i] > 0 ) and ( ( a[i] > P ) or ( i mod 2 <> 0 ) ) then 
      inRange := false;
    inc( i );
  end;
  if inRange then begin
    buf  := a[1];
    a[1] := a[n];
    a[n] := buf;
  end
  else for i:=1 to n do
    if a[i] < 0 then a[i]:=-a[i];

(до речі, ще й умову виправив)

Подякували: studentKA, Torbins2

13

Re: Упорядкування одновимірного масиву

Ясно, дякую. І програма виходить набагато коротша)

14 Востаннє редагувалося koala (20.03.2014 05:27:51)

Re: Упорядкування одновимірного масиву

if ( a[i] > 0 ) and ( ( a[i] > P ) or ( i mod 2 <> 0 ) ) then 
      inRange := false;

можна переписати як

if a[i] > 0 then 
      inRange := ( a[i] <= P ) and ( i mod 2 = 0 );

але не певен, що так зрозуміліше початківцю.

15

Re: Упорядкування одновимірного масиву

studentKA
Довжина коду для професійного програміста стоїть десь на 7 - 10 місці в списку приорітетів. А на перших місцях завжди стоїть легкість читання та розуміння іншим програмістом. Слідом йдуть коректність, виконання умов ТЗ і таке інше.

16

Re: Упорядкування одновимірного масиву

Візьму на замітку)

17

Re: Упорядкування одновимірного масиву

Все ж таки виконання умов ТЗ - безумовно перше місце, без цього програма - не програма. А на другому - так, читаність.

18

Re: Упорядкування одновимірного масиву

Читабельність.

19

Re: Упорядкування одновимірного масиву

koala
Усе залежить від того, скільки житиме проект. Якщо проект планується років на п'ять і більше, то якість коду виходить на перше місце.

20

Re: Упорядкування одновимірного масиву

Якщо код не буде працювати за ТЗ, то 5 років він не проживе.
Ну, хіба це щось дуже специфічне - скажімо, державний підряд.