1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Задача на поиск ключа в файле и дальнейшую мини-сортировку, Немного не пашет, точнее не меняет местами в сортировках Help
В общем вот решил я такую задачку, которая: просит нас ввести ключ, потом ищет этот ключ в массиве(которой задавался рандомом), далее просит выбрать сортировку этого массива. 1 Сортировка заключается в том, чтобы то введенное число(то бишь ключ) поменять с первым местами,а вторая поменять ключ с предыдущим, и у меня не пашут обе,народ гляньте в процедуру чего там не так, а то я запарился...
program laba1; const N=20; var M:array[1..N+1] of integer; y1,y2,y3,x,x1,x2,z,i,kluch,rez:integer; ch:char;
function search(kluch:integer):integer; begin M[N+1]:=kluch; i:=1; while M[i]<>kluch do i:=i+1; if i=N+1 then search:=0 else search:=i end;
procedure Vivod; begin for i:=1 to N do write(M[i],' '); writeln(' '); end;
procedure Algoritm(al:byte); var temp,item:integer; begin case al of 1: begin Temp:=M[item]; for i:=Item downto 2 do M[I]:=M[I-1]; M[1]:=Temp; end; 2: begin if Item<>1 then begin Temp:=M[Item]; M[Item]:=M[item-1]; M[Item-1]:=Temp; end; end; end; end;
begin Randomize; for i:=1 to N do M[i]:=random(100); writeln('Massiv:'); Vivod; rez:=0; while rez=0 do begin writeln('Vvedite kluch poiska'); readln(kluch); z:=search(kluch); while z=0 do begin writeln('Kluch v massive ne nayden, poprubuyte vvesti ewe raz'); writeln('Vvedite kluch poiska'); readln(kluch); z:=search(kluch); end; begin ch:=' '; writeln('Esli vi xotite vipolnit sortirovku metodom puzirka, to nazmite 1,'+ ' a esli metodom priamogo dostupa-2'); while (ch<>'1') and (ch<>'2') do Readln(ch); case ch of '1':algoritm(1); '2':algoritm(2); end; end; Writeln('Rezultat:'); Vivod; ch:=' '; Writeln('Xotite ewe? (y/n)'); while (ch<>'y') and (ch<>'n') do readln(ch); case ch of 'n':exit; 'y':rez:=0; end; end; end.