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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2012, 03:36   #1
Olga1991_1
Пользователь
 
Регистрация: 12.04.2012
Сообщений: 15
По умолчанию нужна сортировка на выбор пользователя,отображение диаграммами

Код:
program qww;
uses graph,crt;
var
a :array [1..100] of real;
s :array [1..200] of string;
f:text;
i:integer;
k1,z1,kk,k,len,kod,z,d,m,yy,xxx1:integer;
gg:real;
temp,vv,ff,zagl:string;
begin
i:=1;
assign(f,'2.dat');

reset(f);
while not eof(f) do begin

readln(f,s[i]);
len:=length(s[i]);
val(copy(s[i],pos('-',s[i])+1,len-pos('-',s[i])), a[i],kod);
i:=i+1;
end;
close(f);
i:=i-2;

for z:=1 to i do
begin
for k:=1 to i do
begin
if(a[k]>a[k+1]) then
begin
gg:=a[k];
a[k]:=a[k+1];
a[k+1]:=gg;
vv:=s[k];
s[k]:=s[k+1];
s[k+1]:=vv;


end;
end;
end;

d:=detect;
InitGraph(d,m,'');
zagl:='PDK po6ochoi rpynu ta napy';
outtextxy(240,20,zagl);

line(150,0,150,480);
line(0,400,640,400);
yy:=370;
for k:=1 to 10 do
begin
line(135,yy,155,yy);
str(k,ff);
outtextxy(126,yy,ff);
yy:=yy-34;
end;
xxx1:=155;
for k:=1 to i+1 do
begin
setfillstyle(k,k);
bar(xxx1,400-round(a[k]*34),xxx1+40,400);
str(k,ff);
outtextxy(xxx1+30,400,ff);
xxx1:=xxx1+50;
end;
xxx1:=30;
for k:=1 to i+1 do
begin
str(k,ff);
setcolor(k);
outtextxy(10,xxx1,ff);
outtextxy(30,xxx1,s[k]);
xxx1:=xxx1+35;
end;


readln;

writeln;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 12.04.2012 в 10:30.
Olga1991_1 вне форума Ответить с цитированием
Старый 12.04.2012, 03:37   #2
Olga1991_1
Пользователь
 
Регистрация: 12.04.2012
Сообщений: 15
По умолчанию

NO2 - 9
HNO3 - 2
C6H6 - 5
C6H5OH - 0.3
CH2O - 0.5
11111 - 10
H2SO4- 1
содержимое файла
Olga1991_1 вне форума Ответить с цитированием
Старый 12.04.2012, 07:30   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Оля, а скажи в паре слов чуть подробнее, с чем именно у тебя затык, пожалуйста..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 12.04.2012, 17:24   #4
Olga1991_1
Пользователь
 
Регистрация: 12.04.2012
Сообщений: 15
По умолчанию

При запуске программы,пользователь должен самостоятельно выбрать какая будет сортировка, 1:по возрастанию, 2:убыванию ,3: без сортировки
сама программа работает правильно, не хватает именно части с выбором сортировки
Olga1991_1 вне форума Ответить с цитированием
Старый 12.04.2012, 19:12   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
sorting:byte;
...
begin
writeln('Input type of sorting (1 - increasing; 2 - decreasing; 3 -nothing):');
readln(sorting);
case sorting of
1:;//сортировка по возрастанию
2:;//сортировка по убыванию
3:;//вывод, или то, что нужно делать при отсутствии сортировки
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 12.04.2012, 23:19   #6
Olga1991_1
Пользователь
 
Регистрация: 12.04.2012
Сообщений: 15
По умолчанию

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

Последний раз редактировалось Olga1991_1; 12.04.2012 в 23:32.
Olga1991_1 вне форума Ответить с цитированием
Старый 13.04.2012, 02:41   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Использовал заготовку меню, созданную моим другом.
Вы бы написали, что в вашей программе только сортировка по возрастанию есть (а то я там пытался найти и другие сортировки)
Код:
uses
  graph, crt;

const
  def_bk_color = 0;             {default background color}
  def_color = 15;               {color of element}
  choice_color = 4;             {color of chosen element}
  drv_path = 'c:\pascal\bgi';   {driver path}

type
  elem = record
    a: real;
    s: string;
  end;

var
  e: integer;
  a1: array[1..10] of string; 
  n: byte;
  break_flag: boolean; 
  
  a: array [1..100] of elem;
  f: text;
  i: integer;
  k1, z1, kk, k, len, kod, z, d, m, yy, xxx1: integer;
  gg: elem;
  temp, zagl, ff: string;

procedure redraw(z: shortint);
begin
  for i := 1 to n do 
  begin
    
    if(i = z) then setcolor(choice_color); 
    
    outtextxy( 
        round(getmaxx / 2) - round(textwidth(a1[i]) / 2),
        round(getmaxy / 2) + textheight(a1[i]) * (i - (round(n / 2) + 1)),
        a1[i]
    );
    
    if(i = z) then setcolor(def_color);
  end; 
end;

function call_menu: shortint;
var
  z: shortint; 
  c: char; 
begin
  z := 1; 
  repeat
    redraw(z); 
    c := readkey; 
    
    case c of
      #72: dec(z); 
      #80: inc(z); 
      #27: break_flag := true; 
    end; 
    
    if(z < 1) then z := n; 
    if(z > n) then z := 1; 
    
  until c = #13; 
  call_menu := z; 
end;

procedure exec_handler(z1: shortint);
begin
  cleardevice; 
  
  i := 1;
  
  reset(f);
  while not eof(f) do 
  begin  
    readln(f, a[i].s);
    len := length(a[i].s);
    val(copy(a[i].s, pos('-', a[i].s) + 1, len - pos('-', a[i].s)), a[i].a, kod);
    i := i + 1;
  end;
  close(f);
  i := i - 2;
  
  case z1 of
    1:
      for z := 1 to i do
      begin
        for k := 1 to i do
        begin
          if(a [k].a > a[k + 1].a) then
          begin
            gg := a[k];
            a[k] := a[k + 1];
            a[k + 1] := gg;
          end;
        end;
      end;
    2:
      for z := 1 to i do
      begin
        for k := 1 to i do
        begin
          if(a [k].a < a[k + 1].a) then
          begin
            gg := a[k];
            a[k] := a[k + 1];
            a[k + 1] := gg;
          end;
        end;
      end;
    4:
      begin
        break_flag := true;
        exit;
      end;
  end;
  
  zagl := 'PDK po6ochoi rpynu ta napy';
  outtextxy(240, 20, zagl);
  
  line(150, 0, 150, 480);
  line(0, 400, 640, 400);
  yy := 370;
  for k := 1 to 10 do
  begin
    line(135, yy, 155, yy);
    str(k, ff);
    outtextxy(126, yy, ff);
    yy := yy - 34;
  end;
  xxx1 := 155;
  for k := 1 to i + 1 do
  begin
    setfillstyle(k, k);
    bar(xxx1, 400 - round(a[k].a * 34), xxx1 + 40, 400);
    str(k, ff);
    outtextxy(xxx1 + 30, 400, ff);
    xxx1 := xxx1 + 50;
  end;
  xxx1 := 30;
  for k := 1 to i + 1 do
  begin
    str(k, ff);
    setcolor(k);
    outtextxy(10, xxx1, ff);
    outtextxy(30, xxx1, a[k].s);
    xxx1 := xxx1 + 35;
  end;
  
  readln;
  
  cleardevice;
end;

begin
  
  d := detect; 
  m := 2; 
  assign(f, '2.dat');
  
  n := 4; 
  a1[1] := 'Increasing'; 
  a1[2] := 'Decreasing'; 
  a1[3] := 'Nothing'; 
  a1[4] := 'Exit'; 
  
  initgraph(d, m, drv_path); 
  break_flag := false; 
  
  e := graphresult; 
  
  if e <> grok then begin
    writeln(grapherrormsg(e)); 
    readln; 
    halt(1); 
  end; 
  
  repeat
    exec_handler(call_menu); 
  until break_flag; 
  
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 13.04.2012 в 10:00.
BDA вне форума Ответить с цитированием
Старый 13.04.2012, 09:43   #8
Olga1991_1
Пользователь
 
Регистрация: 12.04.2012
Сообщений: 15
По умолчанию

Спасибо большое, очень помогли)
Olga1991_1 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна программа по допуску пользователя в сеть (лвс) Shlyam Фриланс 5 07.04.2011 04:24
Проблемы с диаграммами в Excel2007 yursanch Microsoft Office Excel 6 02.02.2011 16:47
массивы..а5 они,сортировка/отображение ayPinki JavaScript, Ajax 2 04.12.2010 13:34
Отображение информации в зависимости от прав пользователя bush007 PHP 7 11.12.2009 11:05
Работа с диаграммами Devourer12345 Microsoft Office Excel 4 05.08.2008 14:50