回 帖 发 新 帖 刷新版面

主题:[紧急]求助一道题目

   职工工作量统计------采用随机函数产生职工的工号和他所完成产品个数的数据信息,对同一职工多次完成的产品个数进行累计,按照职工完成产品数量的名次,该名次每位职工完成的产品数量,同一名次的职工人数,和他们的职工号格式输出统计结果。例如:
Order   quantity    count    number
1        375        3         10    20    21
4        250        2          3    5
6        200        1          9
7        150        2         11    14
…        …        …        …
采用链表结构存储有关信息,链表中的每个表元对应于一位职工。在数据采集的同时,形成一个有序链表(按完成的产品数量各工号排序)。当一个职工有新的数据输入,在累计他的完成数量是会改变原来链表的有序性,为此应对链表进行删除、查找和插入等操作。

回复列表 (共4个回复)

沙发

还是菜鸟。看不懂
不过还要顶下先。。。

板凳

是链表啊
你先看看<数据结构>,就会了!
对于随机数的产生,你看看库函数!!11

3 楼

1)
函数rand()产生的是 0 到 RAND_MAX (RAND_MAX在<stdlib.h>;中定义)之间的随机数。要产生 [LOW, HIGH] 范围内的随机数,一种较好的方法是:
[code]
  LOW + int( rand() / (RAND_MAX + 1.0) * (HIGH - LOW + 1) )
[/code]
2)
typedfy strct DATE
{int Order;
int quantity;
int count;
int number;
struct DATA * link; 
}stuff;
3 )...

4 楼

///////////////////////////////////////////////////////
// 搂主 一个急字,我尝试着,结果弄出个结果了,
// 按照楼主的表格quantity不知道范围,我为了测试的方便性
// 把范围设定为0到5之间,因为这些数字都是随机产生的
// 范围太大的话,多个职工有相同的产量时程序的正确性不好测试。
/////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
using namespace std;

struct node
{
private:
   // data member
   int   id;
   int    total;
   // matheds
public:
   node*  next;
   node( int id_in, int total_in, node* next_in=NULL)
   {
       id=id_in;
       total=total_in;
       next=next_in;
   }
   int getId()
   {
       return id;
   }
   int getTotal()
   {
      return total;
   }

};
class list
{
private:
    // data member
    int   count;                // the number of  the elements
    node*  head;
    // matheds
public:
    list()
    {
        count=0;
        head=NULL;
    }
    ~list()
    {
        delete head;
    }
    void addElement(node* node_in)
    {
        node* temp1=head;
        if(head==NULL)
        {
            head=node_in;
            return;
        }
        if(node_in->getTotal() > temp1->getTotal () || node_in->getTotal() == temp1->getTotal ())
        {
            node_in->next=head;
            head=node_in;
            count++;
            return;
        }
        while(temp1!=NULL)
        {
            if(node_in->getTotal()< temp1->getTotal()
                && temp1->next==NULL 
                || node_in->getTotal()== temp1->getTotal() 
                && temp1->next==NULL )
            {
                temp1->next=node_in;
                count++;
                return;
            }
            else  if(node_in->getTotal()< temp1->getTotal() && node_in->getTotal()>temp1->next->getTotal()
                     || node_in->getTotal() <=temp1->getTotal() && node_in->getTotal()>temp1->next->getTotal()
                     || node_in->getTotal() <temp1->getTotal() && node_in->getTotal()>=temp1->next->getTotal())
            {
                node_in->next=temp1->next;
                temp1->next=node_in;
                count++;
                return;
            }
            temp1=temp1->next;
        }
    }
void print()  const
    {
        cout<<"========================================================="<<endl;
        cout<<"Order"<<"\t"<<"quantity"<<"\t"<<"count"<<"\t"<<"ID number"<<endl;
        node* temp=head;
        int order_in=1;
        int quantity_in=0;
        int *number_in=new int[count];
        while(temp!=NULL)
        {

            quantity_in=temp->getTotal();
            number_in[0]=temp->getId();
            for( int count_in=1; temp->next!=NULL && temp->getTotal()==temp->next->getTotal();  count_in++ )
            {
                 number_in[count_in]=temp->next->getId();
                 temp=temp->next;
            }
            cout<<order_in<<"\t "<<quantity_in<<"\t"<<"\t "<<count_in<<"\t ";
            order_in=order_in+count_in;
            for(int i=0; i<count_in; i++)
                cout<<number_in[i]<<" ";
            cout<<endl;
            temp=temp->next;
        }
        cout<<"========================================================"<<endl;
        delete []number_in;
    }
};
void main()
{
    list onelist;
    for(int i=0; i<20; i++)
    {
        int    ids=rand()%100;
        int totals=rand()%5;
        node* temp= new node(ids, totals);
        onelist.addElement(temp);
    }
    onelist.print();
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册