|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
09.06.2010, 23:42 | #1 (permalink) |
Новичок
Регистрация: 09.06.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Паскаль. Сортировка массивов
program Lab; uses Crt,Graph; const B=0; N=10; M=130; var DriverVar,ModeVar,Ec:integer; var A,Ar:array[1..N] of integer; MaxA,Ma:real; D,I,J,H,Qr,Pr:integer; F:text; begin; Assign(F,'Lab.rez'); Rewrite(F); Clrscr; Randomize; Writeln(F,'Исходный массив'); for I:=1 to N do begin A[I]:= Random(M)-30; Write(F,A[I],' '); end; Writeln(F); for I:=2 to N do if Abs(A[I])>B then begin D:=A[I]; J:=I; repeat A[J]:=A[J-1]; J:=J-1; until J<=1; A[1]:=D; end; Writeln(F); Writeln(F,'Массив после перестановки элементов'); for H:=1 to N do Write(F,A[H],' '); Close(F); MaxA:=0; for I:=0 to N do begin if Abs(A[I])>MaxA then MaxA:=Abs(A[I]); end; DriverVar:=Detect; InitGraph(DriverVar,ModeVar,''); setlinestyle(0,0,3); setbkcolor(1); setcolor(8); Line(10,GetMaxY div 2,GetMaxX-10,GetMaxY div 2); Ma:=(GetMaxY div 2-40)/MaxA; for I:=1 to N do Ar[I]:=-Round(A[I]*Ma)+GetMaxY div 2; setcolor(2); for I:=1 to N do begin SetFillstyle(1,3); Bar(I*20,Ar[I],I*20+10,GetMaxY div 2); end; setlinestyle(3,0,1); setcolor(4); Readln; CloseGraph; end. |
09.06.2010, 23:42 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Вот вам темы, которые имеют что то схожее с вашей темой Сортировка по алфавиту Турбо Паскаль или Фри Паскаль. Задание по теме Типизированный файл |
10.06.2010, 00:22 | #2 (permalink) |
一步一步地会到目的
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
|
Вот уж не думаю, что это ваша наработка.. Какой смысл тут использовать модуль Граф? Все решается гораздо проще - задаем массив; запускаем цикл по его элементам, ищем положительные: в случае обнаружения такого меняем его местами с одним из первых, заканчиваем цикл, и выводим результат. Все, никакой графики, модулей и файлов
|
10.06.2010, 08:36 | #3 (permalink) |
Новичок
Регистрация: 09.06.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Да, наработка не совсем мая, это просто напросто делалось по примеру. Граф, мне надо вывести график на экран. Вот вы говорите все гораздо проще в решении, напишите если не сложно как это выглядит.
|
10.06.2010, 16:09 | #5 (permalink) |
Новичок
Регистрация: 09.06.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Чтобы графическую картинку получить. Нужна она, требуют ее, докучи
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
11.06.2010, 14:18 | #8 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну, в общем, сделал я вариант программки - разбирайтесь. Убрал лишнее, исправил ошибки, и вот:
Код:
program Lab; uses Crt,Graph; const N=10; var DriverVar,ModeVar,Width,Dummy:integer; A:array[1..N] of integer; I,X,Y:integer; b:boolean; S:String; begin; Clrscr; Randomize; Writeln('Initial array:'); for I:=1 to N do begin A[I]:= Random(130)-30; Write(A[I],' '); end; Writeln; Repeat b:=true; for I:=1 to N-1 do If (A[I]<=0) and (A[I+1]>0) then begin Dummy:=A[I]; A[I]:=A[I+1]; A[I+1]:=Dummy; b:=false; end; Until b; Writeln('Array after the element rearrangement:'); for I:=1 to N do Write(A[I],' '); WriteLn; WriteLn('Press "Enter" to continue...'); ReadLn; DriverVar:=Detect; InitGraph(DriverVar,ModeVar,''); ClearDevice; SetLineStyle(SolidLn,0,ThickWidth); setbkcolor(1); setcolor(14); Line(40,10+10*Round((GetMaxY-20)/13), GetMaxX,10+10*Round((GetMaxY-20)/13)); Line(40,10,40,10+13*Round((GetMaxY-20)/13)); SetTextStyle(DefaultFont, HorizDir, 1); SetTextJustify(RightText,CenterText); For i:=0 to 13 do begin STR((i-3)*10:4,S); Y:=10+(13-i)*ROUND((GetMaxY-20)/13); Line(40,Y,34,Y); OutTextXY(30,Y,S); end; Width:=((GetMaxX-40) div N)-10; For i:=1 to N do begin SetFillstyle(1,2); X:=40+(((GetMaxX-40) div N) div 2)+((GetMaxX-40) div N)*(i-1); Y:=10+10*ROUND((GetMaxY-20)/13)-ROUND((GetMaxY-20)/130*A[i]); Bar(X-(Width div 2),10+10*ROUND((GetMaxY-20)/13), X+(Width div 2),Y); end; ReadKey; CloseGraph; end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|