Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 09.06.2010, 23:42   #1 (permalink)
Arsis
Новичок
 
Регистрация: 09.06.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Unhappy Паскаль. Сортировка массивов

Помогите пожалуйста в решении задачи: Сформировать массив случайных чисел из 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.
Arsis вне форума   Ответить с цитированием

Старый 09.06.2010, 23:42
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Вот вам темы, которые имеют что то схожее с вашей темой

Сортировка по алфавиту
Турбо Паскаль или Фри Паскаль. Задание по теме Типизированный файл

Старый 10.06.2010, 00:22   #2 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

Вот уж не думаю, что это ваша наработка.. Какой смысл тут использовать модуль Граф? Все решается гораздо проще - задаем массив; запускаем цикл по его элементам, ищем положительные: в случае обнаружения такого меняем его местами с одним из первых, заканчиваем цикл, и выводим результат. Все, никакой графики, модулей и файлов
MrSTEP вне форума   Ответить с цитированием
Старый 10.06.2010, 08:36   #3 (permalink)
Arsis
Новичок
 
Регистрация: 09.06.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Да, наработка не совсем мая, это просто напросто делалось по примеру. Граф, мне надо вывести график на экран. Вот вы говорите все гораздо проще в решении, напишите если не сложно как это выглядит.
Arsis вне форума   Ответить с цитированием
Старый 10.06.2010, 11:59   #4 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

так зачем график, объясните?
MrSTEP вне форума   Ответить с цитированием
Старый 10.06.2010, 16:09   #5 (permalink)
Arsis
Новичок
 
Регистрация: 09.06.2010
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Чтобы графическую картинку получить. Нужна она, требуют ее, докучи
Arsis вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 11.06.2010, 01:33   #6 (permalink)
MrSTEP
一步一步地会到目的
 
Аватар для MrSTEP
 
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
По умолчанию

"Графическую картинку" чего, объясните толком наконец!
MrSTEP вне форума   Ответить с цитированием
Старый 11.06.2010, 09:37   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от MrSTEP Посмотреть сообщение
"Графическую картинку" чего, объясните толком наконец!
Ох, да по-моему просто чтобы была диаграмма - сначала все столбики вверх от горизонтальной (Y=0) оси, потом все вниз. Я это так понял.
Vladimir_S вне форума   Ответить с цитированием
Старый 11.06.2010, 14:18   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 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.
Результат:
ddd01.jpg
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 20:49.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.