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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2013, 12:21   #1
ANTON1994
Пользователь
 
Регистрация: 09.02.2013
Сообщений: 29
По умолчанию Дана база данных некоторого акционерного предприятия. Поля : ФИО Акционера, список акций(кол-во, стоимость каждого вида акций)Сост

Дана база данных некоторого акционерного предприятия. Поля : ФИО Акционера, список акций(кол-во, стоимость каждого вида акций)Составить программу позволяющую выводить :1) Все данные об акционерах
2)Держателей акций определённой стоимости
3) Список акционеров имеющих наибольшее кол-во акций ( написать с использованием процедур ввода и вывода( тоесть с подпрограммами).
ANTON1994 вне форума Ответить с цитированием
Старый 09.02.2013, 13:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Дана база
Давай базу )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.03.2013, 06:59   #3
ANTON1994
Пользователь
 
Регистрация: 09.02.2013
Сообщений: 29
По умолчанию

Код:
uses crt;
const vid: array[1..3] of integer = (100, 200, 300);

  n = 3;
type zap = record ;
    fio: string[10];
    rez: byte;
    kolvo: array[1..3] of integer;
    st: integer;
  end;
  mas = array[1..n] of zap;
var a: mas;

procedure vvod(var a: mas);
var i, j, fio, st, kolvo: byte;
begin
  for i := 1 to n do begin
    writeln('Введите данные', i, 'zap');
    with a[i] do begin
      write('Fio '); readln(fio);
      write('Введите количество акций первого вида '); readln(kolvo[1]);
      write('Введите количество акций второго вида '); readln(kolvo[2]);
      write('Введите количество акций третьего вида '); readln(kolvo[3]);
      st := 0;
      for j := 1 to 3 do
        st := st + vid[j] * kolvo[i];
    end; end; end;

procedure print(a: mas);
var i: byte;
begin
  for i := 1 to n do
    writeln(a[i].fio: 10, a[i].st: 5);
end;

procedure Max(a: mas);
var max: real; i: integer;
begin
  max := a[1].st;
  for i := 2 to n do
    if a[i].st > max then max := a[i].st;
  for i := 1 to n do
    if a[i].st = max then writeln(a[i].fio, a[i].st: 8);
  readln;
end;
begin clrscr;
  vvod(a);
  print(a);
  max(a);
  readln
end.
похожая программка, но здесь выводится 1) все данные об акционерах
2)держатели акций определённого вида
3) акционер с максимальной суммой
как сделать что бы выводил список акционеров с наибольшим количеством акций???




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

Последний раз редактировалось Serge_Bliznykov; 04.03.2013 в 08:16.
ANTON1994 вне форума Ответить с цитированием
Старый 04.03.2013, 08:21   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

кстати, в данном коде явная ошибка!
стоимость акций у владельца расчитывается неверно.
Цитата:
Код:
      st := 0;
      for j := 1 to 3 do
        st := st + vid[j] * kolvo[i];
должно быть: st + vid[j] * kolvo[j]

и ещё. стоимость у Вас в записи - целочисленное значение (это, на мой взгляд, спорно, я бы сделал вещественное, ну это ваше дело). А когда Вы ищете акционеров с максимальной стоимостью акций - Вы берёте переменную max вещественного типа. Это допустимо, не не аккуратно! Предпочительно, когда переменные ОДНОГО типа..


Цитата:
как сделать что бы выводил список акционеров с наибольшим количеством акций???
имеется в виду суммарное количество акций у одного акцонера? Или какого-то определённого вида? Или что?

А вообще-то, так используйте функцию max.
только переделайте чуток. Например, если нужно выдать всех акционеров, у которох наибольшее количество акций всех видов, то:
Код:
procedure Max(a: mas);
var MaxSumA: longint; i: integer;
begin
  MaxSumA := a[1].kolvo[1] + a[1].kolvo[2] + a[1].kolvo[3];
  for i := 2 to n do 
    if (a[i].kolvo[1] + a[i].kolvo[2] + a[i].kolvo[3] ) > MaxSumA 
       then MaxSumA := a[i].kolvo[1] + a[i].kolvo[2] + a[i].kolvo[3] ;
  for i := 1 to n do
    if (a[i].kolvo[1] + a[i].kolvo[2] + a[i].kolvo[3] ) = MaxSumA 
       then writeln(a[i].fio, a[i].st:8,' ', a[i].kolvo[1]:5, ' ' , a[i].kolvo[2]:5, ' ' , a[i].kolvo[3]:5);
  readln;
end;

Последний раз редактировалось Serge_Bliznykov; 04.03.2013 в 08:31.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.03.2013, 13:57   #5
ANTON1994
Пользователь
 
Регистрация: 09.02.2013
Сообщений: 29
По умолчанию

нужно вывести список акционеров имеющих наибольшее кол-во акций определённого вида... и всё таки как это сделать?? и можно полностью в программе?

Последний раз редактировалось ANTON1994; 04.03.2013 в 14:17.
ANTON1994 вне форума Ответить с цитированием
Старый 04.03.2013, 14:50   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, примерно так:

Код:
....

procedure MaximalnoAkciyPoTipu(a: mas; VidA : integer);
var MaxSumA: longint; i: integer;
begin
  MaxSumA := a[1].kolvo[VidA];
  for i := 2 to n do 
    if a[i].kolvo[VidA] > MaxSumA 
       then MaxSumA := a[i].kolvo[VidA];
  for i := 1 to n do
    if a[i].kolvo[VidA] = MaxSumA 
       then writeln(a[i].fio, a[i].st:8,' akciy tipa ',VidA,' : ', a[i].kolvo[VidA]:5, ' ' );
  readln;
end;

var Tip : integer;
begin 
  clrscr;
  vvod(a);
  print(a);
  repeat
    WriteLn;
    Write('Vvedite tip akciy (1..3): ');
    ReadLn(Tip);
    if (Tip<1) or (Tip>3) then WriteLn('Oshibka! Tip dolgen byt ot 1 do 3! Poprobyete eshe raz!');
  until (Tip>=1) and (Tip<=3);
  MaximalnoAkciyPoTipu( a, Tip );
  readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.03.2013, 15:55   #7
ANTON1994
Пользователь
 
Регистрация: 09.02.2013
Сообщений: 29
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проги для промо акций va_dick Фриланс 5 02.12.2012 13:48
Фильтр акций на амер фондовом рынке fagot1892 Фриланс 2 21.07.2012 20:09
Нужно сделать сканер акций fagot1892 Фриланс 3 02.01.2011 22:50
База данных ФИО alebed Microsoft Office Excel 13 31.08.2010 09:41
Дополнительная эмиссия акций ВТБ - номинальная стоимость акций: 0,01 рубля Alar Свободное общение 3 12.08.2009 09:28