30/09/2018, 17:05

Hỏi cách vẽ giản đồ ganttt

ai cho em biết làm sao để hiện giản đò gantt theo kiểu ngang như thế này không ạ.em đang cần lắm ai biết thì giúp em với

Quân viết 19:10 ngày 30/09/2018

Chắc là bài tập quản lý tiến trình. Cái này để vẽ được cần học đồ họa nếu không làm trên console thế kia được rồi. Bạn có thể tham khảo bài này:

Cách Học – 10 Jun 14

Mô phỏng chiến lược điều phối SJF

Riêng về chiến lược điều phối mình sẽ không nhắc ở đây, mình chỉ giới thiệu và chia sẻ chương trình mô phỏng mà mình làm được trên đồ họa trong Dev-C++. Cập nhật ngày 13/05/2015: Sửa một số lỗi và cho phép nhập dữ liệu từ bạn phím Đây là hình ảnh kết...

Nguyễn Đức Minh viết 19:09 ngày 30/09/2018
  • Có chi đâu bác @Ga_Code …nếu làm từ đầu phải tính toán cộng sắp xếp nó mới hơi ngại tí chứ…ở đây bác có sẵn kết quả mô tả lập lịch từng thằng process vào ra như thế nào rồi…thì cứ thế mà vẽ vời trình bày thôi.
  • Em không có thời gian nhiều nên nghĩ thế nào là code luôn, bằng những cái hết sức cơ bản (nên có thể nhiều chỗ hơi dài)…ý tưởng là:
  • Bác tạo ra 1 hay một số thủ tục vẽ Draw()
  • Bác khai báo những đối:
  • một biến step: điếm số lần (số bước) process vào ra.
  • một mảng process[]: lưu tên các process lần lượt ở các bước.
  • một mảng timein[]: lưu timein lần lượt của từng process trong mỗi bước.
  • một mảng timeout[]: lưu timeout lần lượt của từng process trong mỗi bước
  • Mấy giá trị này chắc hẳn trong phần tính toán của bác nó đã có, giờ bác cứ thể táng vào cái thủ tục vẽ thôi.
  • Cách vẽ thì có nhiều cách nhưng cơ bản nhất là mình chia thành 4 dòng:
  • Dòng 1 in ra chỉ số time: giả dụ một cái time là 3 một cái là 13 thì mình dùng cách nào đó là 13-3 cái dấu space…thế là đẹp.
  • Dòng 2 in ra khung trên: cái này tùy sở thích em thì thích dùng dấu + ở các góc ô, căn thẳng hàng với mấy số dòng bên trên…còn các cạnh thì dùng - , cũng là theo cách in space dòng bên trên.
  • Dòng 3 thì vẽ cái vách ngăn “|” và căn mấy cái tên P1, P2…vào giữa mấy ô.
  • Dòng 4 là khung dưới…cũng giống khung trên lên copy lun…có thẻ làm thành 1 cái thủ tục VeKhung() với các đối là cái biến bên trên để đỡ viết code nhiều lần.
  • Cứ thế mà tiến hành…đây là screenshot em táng kết quả của cái ví dụ ở hình của bác:

Vì em không có phần tính toán phía trên nên có thêm một cái thủ tục nhập các mô tả:

MediaFire

DrawGantt.cpp

MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere.

Nguyễn Thành Nam viết 19:14 ngày 30/09/2018

em khoong hiểu cái

for (int i = TrungBinh(timein[step-1], timeout[step-1]); i < timeout[step-1]; i++) {
        cout << " ";
}

để làm gì ạ

Nguyễn Thành Nam viết 19:14 ngày 30/09/2018

thầy bắt hiện theo hàng ngang anh ạ

Nguyễn Đức Minh viết 19:15 ngày 30/09/2018

@Ga_Code thì bác comment cái đó lại là biết ngay à

Nguyễn Thành Nam viết 19:08 ngày 30/09/2018

không tài nào hiện được bác :3

Nguyễn Đức Minh viết 19:13 ngày 30/09/2018

@Ga_Code nói chung là cấu trúc 3 dòng vẽ khá giống nhau…chỉ có dòng giữa (Draw2) là có thêm P1, P2…chèn vào thì để cho ẹp em chỉ tìm cách chia đôi nó ra và chừa ra hai slot khoảng giữa ô cho P1, P2…vào mà vẫn thẳng hàng, thẳng cột.

  • Bác để í cái vòng lặp ở giữa mỗi thủ tục Draw thì em dùng i < timein vì thế cần có thêm một vòng lặp for để in cái ô cuối cùng (bước cuối cùng) tức là khoảng từ timein[step-1] đến timeout[step-1] (cái đó thi là cơ bản rồi mảng có step phần từ thì mảng đi từ 0 -> step-1)
Bài liên quan
0