1. Trang chủ
  2. » Công Nghệ Thông Tin

Code bài toán quản lí ,sắp sếp, tìm kiếm sử dụng queue trong c

13 551 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 59,8 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Code bài toán quản lí ,sắp sếp, tìm kiếm sử dụng Queue trong C khai bao queue 2 khoi tao hang doi rong 2 kiem tra hang doi queue rong 2 kiem tra hang doi day 3 them phan tu vao cuoi queue 3 viet ham nhap hang doi 3 viet ham tao input 4 lay mot phan tu ra khoi hang 4 viet ham output 5 loai bo phan tu dau ra khoi dau hang doi 5 tim kiem phan tu theo so k 6 tim kiem mon hoc co luong san pham >10 7 tim san pham co don gia max 7 tim san pham co so luong hang hoa nho nhat 8 bai toan sap xep cac san pham so luong giam dan 8 tinh tien 9 tinh trung binh so luong sp 9 Ham main 10

Trang 1

M c L cụ ụ

Code bài toán quản lí ,sắp sếp, tìm kiếm sử dụng Queue trong C

//khai bao queue 2

//khoi tao hang doi rong 2

// kiem tra hang doi queue rong 2

//kiem tra hang doi day 3

//them phan tu vao cuoi queue 3

//viet ham nhap hang doi 3

//viet ham tao input 4

//lay mot phan tu ra khoi hang 4

//viet ham output 5

// loai bo phan tu dau ra khoi dau hang doi 5

// tim kiem phan tu theo so k 6

//tim kiem mon hoc co luong san pham >10 7

//tim san pham co don gia max 7

//tim san pham co so luong hang hoa nho nhat 8

// bai toan sap xep cac san pham so luong giam dan 8

//tinh tien 9

// tinh trung binh so luong sp 9

//Ham main 10

Trang 2

#include<conio.h>

#define max 100

struct mypham{

int mamp,soluong,dongia,tongtien; char tenmp[20];

};

//khai bao queue

struct queue{

int head,tail,count;

mypham node[max];

};

//khoi tao hang doi rong

void init(queue &Q){

Q.head=0;

Q.tail=-1;

Q.count=0;

}

// kiem tra hang doi queue rong

int isEmpty(queue Q){

if(Q.count==0)

return 1;

return 0;

}

Trang 3

//kiem tra hang doi day

int isFull(queue Q){

if(Q.count==max)

return 1;

return 0;

}

//them phan tu vao cuoi queue

void push(queue &Q, mypham x) //them phan tu vao cuoi Queue {

if (isFull(Q)) printf("Hang doi day !");

else

{

Q.node[++Q.tail] = x; //tang Rear len va gan phan tu vao Q.count++; //tang so phan tu len

}

}

//viet ham nhap hang doi

void nhap(mypham &x){

printf("Moi ban nhap Ma san pham:");

scanf("%d",&x.mamp); fflush(stdin);

printf("Moi ban nhap ten san pham:");

gets(x.tenmp); fflush(stdin);

printf("Moi ban nhap so luong:");

scanf("%d",&x.soluong);

printf("Moi ban nhap don gia:");

Trang 4

x.dongia = a;

b = x.soluong*x.dongia;

x.tongtien = b;

}

//viet ham tao input

void input(queue &Q){

int i,n;

mypham x;

printf("nhap vao so san pham:"); scanf("%d",&n);

for(i=0;i<n;i++){

printf("\n%d:\n",i+1); nhap(x);

push(Q,x);

}

}

//lay mot phan tu ra khoi hang

int get(queue &Q){

mypham x;

if(isEmpty(Q))

printf("hang doi rong");

else

{

x=Q.node[Q.head];

Q.head++;

Trang 5

}

return 1;

}

//viet ham output

void output(queue Q){

printf("\n %5s%15s%10s%10s%10s","Ma hh","Ten hh","So luong","Don gia","Tong tien");

{

if (isEmpty(Q))

printf("\nHang doi rong !");

else

{

for (int i=Q.head; i<=Q.tail; i++)

{

printf("\n%5s%15s%10s%10s

%10s",Q.node[Q.head].mamp,Q.node[Q.head].tenmp,Q.node[Q.head].soluong,Q.n ode[Q.head].dongia,Q.node[Q.head].tongtien);

Q.head++;

printf("\n -\n");

}

}

}

}

// loai bo phan tu dau ra khoi dau hang doi

int pop(queue &Q) //Loai bo phan tu khoi dau hang doi

Trang 6

if (isEmpty(Q)) printf("Hang doi rong !");

else

{

for (int i=Q.head; i<Q.tail; i++){

Q.head=Q.head+1;

return 1;

}

Q.head ; // giam vi tri phan tu cuoi xuong

Q.count ;//giam so phan tu xuong

return 0; //tra ve phan tu lay ra

}

}

// tim kiem phan tu theo so k

int timkiem(queue &Q,int k){

for (int i=Q.head; i<=Q.tail; i++){

if(Q.node[i].mamp==k){

printf("\n%5s%15s%10s%10s

%10s",Q.node[Q.head].mamp,Q.node[Q.head].tenmp,Q.node[Q.head].soluong,Q.n ode[Q.head].dongia,Q.node[Q.head].tongtien);

} }

}

Trang 7

//tim kiem mon hoc co luong san pham >10

int timkiem1(queue &Q){

for (int i=Q.head; i<=Q.tail; i++){

if(Q.node[i].soluong>=10){

printf("\n%5s%15s%10s%10s

%10s",Q.node[Q.head].mamp,Q.node[Q.head].tenmp,Q.node[Q.head].soluong,Q.n ode[Q.head].dongia,Q.node[Q.head].tongtien);

} }

}

//tim san pham co don gia max

void timmax(queue &Q){

int MAX;

MAX=Q.node[Q.head].dongia;

for (int i=Q.head; i<=Q.tail; i++){

if(Q.node[i].dongia > MAX){

MAX=Q.node[i].dongia;

printf("\n%5s%15s%10s%10s

%10s",Q.node[Q.head].mamp,Q.node[Q.head].tenmp,Q.node[Q.head].soluong,Q.n ode[Q.head].dongia,Q.node[Q.head].tongtien);

}

}

}

Trang 8

//tim san pham co so luong hang hoa nho nhat

void timmin(queue &Q){

int MIN;

MIN=Q.node[Q.head].soluong;

for (int i=Q.head; i<=Q.tail; i++)

if(Q.node[i].soluong < MIN){

MIN=Q.node[i].soluong;

printf("\n%5s%15s%10s%10s

%10s",Q.node[Q.head].mamp,Q.node[Q.head].tenmp,Q.node[Q.head].soluong,Q.n ode[Q.head].dongia,Q.node[Q.head].tongtien);

} }

// bai toan sap xep cac san pham so luong giam dan

void sapxep(queue &Q){

int i,j;

mypham tg;

for(i=Q.head;i<=Q.tail-1;i++)

for(j=i+1;j<=Q.tail;j++)

if(Q.node[i].soluong < Q.node[j].soluong)

{

tg=Q.node[i]; Q.node[i] = Q.node[j]; Q.node[j]=tg;

}

}

Trang 9

//tinh tien

void tinhtong(queue &Q){

int i;

int tongtien=0;

for(i=Q.head;i<=Q.tail;i++){

tongtien=tongtien+Q.node[i].tongtien;

}

printf("Tong so luong cua tat ca cac sp la: %d",tongtien); }

// tinh trung binh so luong sp

void trungbinh(queue &Q){

int i;

int tong=0,dem=0;

for(i=Q.head;i<=Q.tail;i++){

tong=tong+Q.node[i].soluong;

dem=dem+1;

}

if(dem>0)

printf("\nSo luong trung binh cua cac san pham la: %0.2f", (float)tong/dem);

else

printf("khong co phan tu thoa man dieu kien tinh!");

}

Trang 10

//Ham main

int main(){

int chon;

mypham x;

queue Q;

init(Q);

input(Q);

output(Q);

do{

printf("\n* -MENU -*\n"); printf("\n0 Thoat");

printf("\n1 Xoa phan tu dau khoi hang doi");

printf("\n2 Them phan tu vao cuoi hang doi");

printf("\n3 Tim kiem phan tu voi ma msp k:");

printf("\n4 Tim kiem phan tu voi co luong sp >10"); printf("\n5 Hien sp co don gia MAX");

printf("\n6 Hien sp so luong gia MIN");

printf("\n7 Sap xep so luong giam dan theo so tiet"); printf("\n8 tinh tong ");

printf("\n9 Tinh TB so luong cua tat ca cac sp"); printf("\n Moi ban chon so: ");

scanf("%d",&chon);

switch(chon)

{

return 0;

Trang 11

break;

case 1:

printf("xoa phan tu dau khoi hang doi:\n");

pop(Q);

output(Q);

break;

case 2:

float a, b;

printf("Moi ban nhap Ma san pham:");

scanf("%d",&x.mamp); fflush(stdin);

printf("Moi ban nhap ten san pham:");

gets(x.tenmp); fflush(stdin);

printf("Moi ban nhap so luong:");

scanf("%d",&x.soluong);

printf("Moi ban nhap don gia:");

scanf("%f",&a);

x.dongia = a;

b = x.soluong*x.dongia;

x.tongtien = b;

push(Q,x);

output(Q);

break;

case 3:

int k;

printf("Tim kiem( Moi ban nhap vao ma map k=): ");

Trang 12

timkiem(Q,k);

break;

case 4:

printf("sp co luong >10 la:\n");

timkiem1(Q);

break;

case 5:

printf("Hien sp co so luong max la:\n");

timmax(Q);

break;

printf("Hien sp co so luong Min:\n");

timmin(Q);

break;

case 7:

printf("Sap xep giam dan theo so luong sp la:\n"); sapxep(Q);

output(Q);

break;

case 8:

tinhtong(Q);

break;

case 9:

trungbinh(Q);

Trang 13

break;

default : printf("Ban chon sai!!!"); }

}while(chon!=0);

getch();

}

Ngày đăng: 10/04/2017, 11:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w