Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Cho mình hỏi về in dữ liệu ra thành gióng cột

  1. #1
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Mặc định Cho mình hỏi về in dữ liệu ra thành gióng cột

    Cho mình hỏi có lệnh nào bắt dữ liệu in ra nằm trong khoảng chiều dài do mình xác định ko

    Ví dụ : Bắt nhập 2 sinh viên , điểm của hai SV , rồi in ra

    Ho ten_______________diem
    nguyen van a_________13
    nguyen va đafffff______23

    Nhờ mọi người giúp đỡ mình

  2. #2
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Mình không biết cách nào khác ngoài cách dùng gotoxy().

  3. #3
    Ngày gia nhập
    03 2007
    Bài viết
    15

    #include <iomanip>
    Bạn thử dùng lệnh setw(n).Với n là độ rộng mà bạn muốn in.
    ...Every step that I take is another mistake to you...I'm sorry mom..

  4. #4
    Ngày gia nhập
    02 2007
    Nơi ở
    TP.HCM - dưới cầu SG
    Bài viết
    12

    Cách 1: dùng printf()
    Cách 2: dùng cout với setw( n ) trong đó n là độ rộng cần in.
    Bạn xem thêm ví dụ sau:
    Code:
    #include <stdio.h>
    typedef struct {
    	char ten[30];
    	int toan;
    } sinhvien;
    int main () {
      sinhvien t[] = {{"Nguyen vu Khoa", 10 },
    	         { "Le Ngoc", 7 },
    	         {"Nguyen dinh son Tung", 5}};
    
      for( int i = 0; i < 3; i++ ) {
        printf("\n%-30s", t[i].ten ); // 30 là độ rộng cho dữ liệu tên
                                 // dấu - để canh lề trái ( mặc định là canh phải )
        printf("%3d", t[i].toan ); // 3 là độ rộng để in điểm toán
      }
      return 0;
    }
    Code:
    #include <iostream.h>
    #include<iomanip.h>
    
    typedef struct {
    	char ten[30];
    	int toan;
    } sinhvien;
    int main () {
    	sinhvien t[] = {{"Nguyen vu Khoa", 10 },
    		      { "Le Ngoc", 7 },
    		      {"Nguyen dinh son Tung", 5}};
    
      for( int i = 0; i < 3; i++ ) {
        cout << endl << setw(30)  << setiosflags( ios::left) << t[i].ten;
        cout << setw(3) << t[i].toan;
      }
      return 0;
    }
    Trước khi in tên, ta cho biết độ rộng của vùng này là 30 (setw(30)) và canh lề trái ( nếu ko có thì sẽ canh lề phải ). Chú ý: muốn in vùng dữ liệu nào ta phải "định dạng" trực tiếp ngay trước khi in; sau khi in xong, định dạng in cho vùng dữ liệu tiếp theo trở về như mặc định.
    Thân!
    Nơi nào khiến anh dừng bước, nơi đó có em.

  5. #5
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Cảm ơn bạn , nhưng dùng setw() ko được vì nếu tên dài hơn sẽ làm cho số thứ tự bị lệch

  6. #6
    Ngày gia nhập
    02 2007
    Nơi ở
    TP.HCM - dưới cầu SG
    Bài viết
    12

    Mặc định Cho mình hỏi về in dữ liệu ra thành gióng cột

    Do một trường dữ liệu (field) thường được người lập trình ước lượng và quy định trước, chẳng hạn họ_và_tên chứa trong 30 kí tự, năm sinh của sinh viên giới hạn 1900-1999... Do đó, bạn dùng setw() với số kí tự lớn nhất cho phép của field.
    Đương nhiên khi quy định độ rộng cho trường ko đủ để in thì quy định đó ko còn hiệu lực nữa và nó sẽ in toàn bộ field.
    Thân!
    Nơi nào khiến anh dừng bước, nơi đó có em.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn