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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2011, 17:40   #1
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

да,я уже первый код переделала сама,везде min и imin поменяла на max и imax и знак < на >
и вышло,теперь в ране идёт не 123456 а 654321

а как переделать второй?

да,я уже первый код переделала сама,везде min и imin поменяла на max и imax и знак < на >
и вышло,теперь в ране идёт не 123456 а 654321

а как переделать второй?

ответ почему то написан сверху и дважды...

Последний раз редактировалось Stilet; 15.03.2011 в 08:15.
Novenkaja вне форума Ответить с цитированием
Старый 14.03.2011, 17:49   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

меняем
Код:
for i:=g-1 downto 1 do
     for j:=1 to i do
      if x[j]>x[j+1] then menat(x[j],x[j+1])
на
Код:
for i:=g-1 downto 1 do
     for j:=1 to i do
      if x[j]<x[j+1] then menat(x[j],x[j+1])
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 14.03.2011, 20:20   #3
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
Вопрос В Паскале составить программу в уменьшающей последовательности через массив

Добрый вечер. Нужна помощь в изменении трёх кодов. Каждый код решается через свой метрод упорядочевания. Один через Burbuļa, другой через Naiva и третий через Hoara. Условие задания одно и тоже. Эти коды решались в увеличивающейся последовательности,а надо переделать в уменьшаемую.
Я коды буду вводить постепенно, так как за раз ввести все 3 не могу,+ последний код самый длинный...

Составить программу,которая реализирует метод упорядочевания Naivo.

Код:
program  karto;
uses crt;
const n=6;
type mas=array[1..n] of integer;
var i,j,min,imin:integer;
     x:mas;
begin
    for i:=1 to n do begin
                             write('vvedite x[i]');
                              readln (x[i]);
                         end;
         for j:=1 to n-1 do
         begin
              min:=x[i];
              imin:=j;
              for i:=j to n do
                 if x[i]<min then begin 
                                              min:=x[i];
                                              imin:=i
                                      end;
                x[imin]:=x[j];
                x[j]:=min
         end;
   for i:=1 to n do write (x[i], ' ',);
   readln;
end.
ПС: сейчас ещё 2 кода напишу


Код:
program  karto;
uses crt;
const n=6;
type mas=array[1..n] of integer;
var sk:integer;
     x:mas;
procedure vvod(var x:mas,g:integer);
var i:integer;
begin
  for i:=1 to g do
        begin
        write('vvedite x[' ,i, '] : ');
        readln(x[i]);
        end
end;
procedure vvivod(var x:mas,g:integer);
var i:integer;
begin
   for i:=1 to g do write (x[i], ' ')
end;
procedure burbuli(var x:mas,g:integer);
var i,j:integer;
   procedure menat(var a,b:integer);
   var c:integer;
   begin
     c:=a;
     a:=b;
     b:=c;
   end;
begin
  for i:=g-1 downto 1 do
     for j:=1 to i do
      if x[j]>x[j+1] then izmenit(x[j],x[j+1])
end;
begin
   write('vvedite sk:');
   readln(sk);
   vvod(x,sk);
   burbulis(x,sk);
   vvivod(x,sk);
    readln
end.

Последний раз редактировалось Novenkaja; 14.03.2011 в 21:00.
Novenkaja вне форума Ответить с цитированием
Старый 14.03.2011, 20:47   #4
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Ну так меняй знак при сравнении элементов и будет у тебя сортировка по убыванию.
Код:
 if x[i]>min then 
 begin
   min:=x[i];
   imin:=i
 end;
И вот это
Код:
 
 min:=x[i];
 Imin:=j
поменяй на
Код:
  
min:=x[j];
Imin:=j
ты перепутала индексы
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681

Последний раз редактировалось GetMax; 14.03.2011 в 20:52.
GetMax вне форума Ответить с цитированием
Старый 14.03.2011, 22:00   #5
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

Цитата:
Сообщение от GetMax Посмотреть сообщение
меняем
Код:
for i:=g-1 downto 1 do
     for j:=1 to i do
      if x[j]>x[j+1] then menat(x[j],x[j+1])
на
Код:
for i:=g-1 downto 1 do
     for j:=1 to i do
      if x[j]<x[j+1] then menat(x[j],x[j+1])


а где изменение хоть какое то???
я пока вижу,что меняем это на другое,написано тоже самое....
только знак меняется в коде и всё???
Novenkaja вне форума Ответить с цитированием
Старый 14.03.2011, 22:25   #6
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

последний код

Код:
program  karto;
uses crt;
const n=6;
type mas=array[1..n] of integer;
var sk:integer;
     x:mas;
procedure vvod(var x:mas,g:integer);
var i:integer;
begin
  for i:=1 to g do
        begin
        write('vvedite x[' ,i, '] : ');
        readln(x[i]);
        end
end;
procedure vvivod(var x:mas,g:integer);
var i:integer;
begin
   for i:=1 to g do write (x[i], ' ' )
end;
procedure intsak (sv,bv:integer);
var i,j:integer;
     wag:-1..1;
     lv:boolean;
begin
  if sv<bv then
    begin
      i:=sv;
      j:=bv;
      wag:=-1;
      lv:=true;
    repeat
        if lv=(mas[i]>mas[j]) then
            begin
                 izmenit (i,j);
                 izmenit (mas[i],mas[j]);
                 wag:=-wag;
                 lv:=not lv
           end;
        j:=j+wag 
    until j=i;
    intsak(sv,i-1);
    intsak(i+1,bv)
   end
end;

begin
    write('vvesti sk:');
    readln(sk);
    vvod(x,sk);
    intsak(1,sk);
    vvivod(x,sk);
    readln;
end.
в этом коде есть ещё и ошибка,недан тип переменной mainit....

кто может исправить код для начала,а потом его изменить на нужное условие???

я ввела посдений код в программу,а он у меня его не компилирует
во-первых он говоритчто mainit не задан
во-вторых-не нравятся обе строки где есть mainit,пишет что illegal expression///
syntax error,";" expected,but "<" found....
я написала mainit в var -integer

а что не нравиться в строках,я не знаю...
сперва надо это изменить,а потом из возрастающей переделать в убывающую

ребят,мне изменённый (исправленный) третий код нужен к завтрешнему дню.
первая задача-сделать его так,чтобы компилировал(для этого mainit(переводится как изменить) надо доделать)
вторая задача-код идёт в увеличивающейся последовательности,а надо изменить в уменьшающуюся.

буду всем благодарна,а на сегодня всем говорю до свидания)))
я пошла спасть....

Последний раз редактировалось Stilet; 15.03.2011 в 11:25.
Novenkaja вне форума Ответить с цитированием
Старый 15.03.2011, 10:33   #7
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Вот третья задача
Код:
const n=6;
type mas=array[1..n] of integer;
var sk:integer;
     x:mas;
procedure vvod(var x:mas;g:integer);
var i:integer;
begin
  for i:=1 to g do
        begin
        write('vvedite x[' ,i, '] : ');
        readln(x[i]);
        end
end;
procedure vvivod(var x:mas;g:integer);
var i:integer;
begin
   for i:=1 to g do write (x[i], ' ' )
end;
procedure Izmenit(var a,b:integer); //процедура скопирована из 2-ой задачи
var
  c:integer;
begin
  c:=a;
  a:=b;
  b:=c;
End;
procedure intsak (sv,bv:integer);
var i,j:integer;
     wag:-1..1;
     lv:boolean;
begin
  if sv<bv then
    begin
      i:=sv;
      j:=bv;
      wag:=-1;
      lv:=true;
    repeat
        if lv=(x[i]<x[j]) then
            begin
                 izmenit (i,j);
                 izmenit (X[i],X[j]);
                 wag:=-wag;
                 lv:=not lv
           end;
        j:=j+wag
    until j=i;
    intsak(sv,i-1);
    intsak(i+1,bv)
   end
end;
begin
    write('vvesti sk:');
    readln(sk);
    vvod(x,sk);
    intsak(1,sk);
    vvivod(x,sk);
    readln
End.
Вот вторая
Код:
const n=6;
type mas=array[1..n] of integer;
var sk:integer;
     x:mas;
procedure vvod(var x:mas;g:integer);
var i:integer;
begin
  for i:=1 to g do
        begin
        write('vvedite x[' ,i, '] : ');
        readln(x[i]);
        end
end;
procedure vvivod(var x:mas;g:integer);
var i:integer;
begin
   for i:=1 to g do write (x[i], ' ')
end;
procedure burbuli(var x:mas;g:integer);
var i,j:integer;
   procedure menat(var a,b:integer);
   var c:integer;
   begin
     c:=a;
     a:=b;
     b:=c;
   end;
begin
  for i:=g-1 downto 1 do
     for j:=1 to i do
      if x[j]<x[j+1] then menat(x[j],x[j+1])
end;
begin
   write('vvedite sk:');
   readln(sk);
   vvod(x,sk);
   burbuli(x,sk);
   vvivod(x,sk);
    readln
End.
В этой задаче надо просто знак поменять, ну и исправить названия процедур. У тебя нет процедур Izmenit и Burbulis. Им соответствуют процедуры Menat и Burbuli.
P. S. Я так и не нашел ни в одной программе тип/переменную mainit. Не знаю где уж ты ее отыскала
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 15.03.2011, 17:08   #8
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

спасибо,я их нигде не отыскивала,я периписала код преподователя,который он написал в конспектах,видимо сам его код был не даделан и он хотел,чтобы мы это сделали за него....
Novenkaja вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу в VBA через EXCEl Apsalon Microsoft Office Excel 4 22.12.2010 15:26
составить программу в паскале) amitistka Помощь студентам 1 01.02.2010 22:28
составить программу на паскале Alex61 Помощь студентам 3 10.06.2009 10:43
Помогите составить программу через Delphi Рина8807 Помощь студентам 1 01.10.2007 19:59