主题:[紧急]求助一道题目
dusj4605
[专家分:0] 发布于 2006-09-08 10:07:00
职工工作量统计------采用随机函数产生职工的工号和他所完成产品个数的数据信息,对同一职工多次完成的产品个数进行累计,按照职工完成产品数量的名次,该名次每位职工完成的产品数量,同一名次的职工人数,和他们的职工号格式输出统计结果。例如:
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个回复)
沙发
jq2008 [专家分:0] 发布于 2006-09-08 16:41:00
还是菜鸟。看不懂
不过还要顶下先。。。
板凳
chenyinjing [专家分:150] 发布于 2006-09-15 15:17:00
是链表啊
你先看看<数据结构>,就会了!
对于随机数的产生,你看看库函数!!11
3 楼
andows [专家分:310] 发布于 2006-09-17 15:54:00
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 楼
大鹏鸟1海阔天空 [专家分:890] 发布于 2006-10-08 16:20:00
///////////////////////////////////////////////////////
// 搂主 一个急字,我尝试着,结果弄出个结果了,
// 按照楼主的表格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();
}
我来回复