Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 4 123 ... CuốiCuối
Kết quả 1 đến 10 của 31
  1. #1
    Ngày tham gia
    Sep 2015
    Đang ở
    Hà Nội
    Bài viết
    0

    Lại bài tập xếp gạch, mọi người vào giúp nha

    Mình đang cần viết một chương trình xếp gạch, đã viết bài trong cùng bài của bạn Dang'_Xuyen' nhưng bị mod del bài nên post lại nhờ mọi người giúp nhé.
    Mình cần vẽ một chương trình xếp một chồng gạch như sau, sử dụng C hoặc C++ đều được.

    Vấn đề không phải là vẽ chồng gạch này mà phải tạo một chương trình nhập vào số n (như trên thì n = 6). Sau đó xếp n viên gạch ở đáy, tiếp tục n-1 viên ở hàng trên, cuối cùng là 1 viên. Các viên gạch có thể thay đổi kích thước, cần 4-5 kích thước tùy vào số n lớn hay nhỏ. ngoài ra thì phải cho các viên gạch rơi từ trên xuống xếp lần lượt từ trái sang phải.
    Có bạn nào biết thì giúp mình nhé, mình mới năm đầu học lập trình mà chưa được học gì về đồ họa cả. Nếu không có thời gian viết code thì các bạn gợi ý về thuật toán giải bài này cũng được. Thanks

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi meeokon
    Mình đang cần viết một chương trình xếp gạch, đã viết bài trong cùng bài của bạn Dang'_Xuyen' nhưng bị mod del bài nên post lại nhờ mọi người giúp nhé.
    Mình cần vẽ một chương trình xếp một chồng gạch như sau, sử dụng C hoặc C++ đều được.

    Vấn đề không phải là vẽ chồng gạch này mà phải tạo một chương trình nhập vào số n (như trên thì n = 6). Sau đó xếp n viên gạch ở đáy, tiếp tục n-1 viên ở hàng trên, cuối cùng là 1 viên. Các viên gạch có thể thay đổi kích thước, cần 4-5 kích thước tùy vào số n lớn hay nhỏ. ngoài ra thì phải cho các viên gạch rơi từ trên xuống xếp lần lượt từ trái sang phải.
    Có bạn nào biết thì giúp mình nhé, mình mới năm đầu học lập trình mà chưa được học gì về đồ họa cả. Nếu không có thời gian viết code thì các bạn gợi ý về thuật toán giải bài này cũng được. Thanks
    đúng là bài tam giác rồi mình nói mấy người kia cứ kêu mình hiểu sai ý lại bảo mình spam

    bạn sẽ cho 1 vòng lặp như thế này , bài ở chỗ kia là hình ngược của nó còn đây là 1 doan vòng lặp để tạo lên kim tự thác , mình chưa pha mầu được
    Mã:
     printf("
     Ban muon nhap co bao nhieu tang
     n = ");
    	scanf("%d",&n);
    	for(i=1;i<=n;i++)
    	{
    		printf("
    Tang %d \t\t\t",i);
    		for(j=1;j<=i;j++)
    		printf(" * ");
    		printf("
    ");
    	}

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Đây không hẳn là bài tam giác * đâu. Cần thêm 1 chút nữa.

    Đầu tiên dựa vào n cậu phải tính ra được kích cỡ gạch tương ứng.
    Sau đó, cậu cần canh lề tương ứng và tính tọa độ mỗi viên gạch phụ thuộc vào hàng cột của viên gạch đó.

    Vấn đề cuối cùng, cậu dùng gì để code ?

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Nếu đồ họa thì cái này sẽ dễ hơn một tí, còn nếu dùng text thì hơi khó vì kích thước các viên gạch ko thay đổi được.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    chà lại còn căn cả kich thước nữa cơ ạ . vậy nó ngoài khả năng của em rồi , xin lỗi em ko giúp dc gì

  6. #6
    Ngày tham gia
    Dec 2015
    Bài viết
    0
    nếu ở mode text, có lẽ cậu phải xây dựng hàm drawBrick(int x,int y,int h,int w)

    hàm này có thể làm như sau:

    for(int i = 0;i<h;++i)
    { for(int j = 0;j<w;++j)
    {
    gotoxy(i,j); printf("-");
    }
    gotoxy(i,j); printf("|");
    }

    Nhưng không ổn lắm, trông nó rất xấu.

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Demo một bài luôn cho rồi :


    Mã:
    #include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h> #define WIDTH 50#define HEIGHT 20  void DrawBrick(int x,int y,int color){    setfillstyle(1,color);    bar(x, y, x + WIDTH, y + HEIGHT);    setlinestyle(1,0,15);    rectangle(x, y, x + WIDTH, y + HEIGHT);} int main(void){    int gdriver = DETECT, gmode, errorcode;    int n;     printf("Nhap n : ");    scanf("%d",&n);     initgraph(&gdriver, &gmode, "");     errorcode = graphresult();     if (errorcode != grOk)    {        printf("Graphics error: %s
    ", grapherrormsg(errorcode));        printf("Press any key to halt:");        getch();        exit(1);    }     int maxx = getmaxx();    int maxy = getmaxy();    int x0 = (maxx - WIDTH * n) / 2;    int y0 = maxy - HEIGHT - (maxy - HEIGHT * n) / 2;    int x;     for (int i=n;i>0;i--)    {        x = x0;         for (int j=1;j<=i;j++)        {            DrawBrick(x,y0,12);            x += WIDTH;        }         x0 += WIDTH / 2;        y0 -= HEIGHT;    }     getch();    closegraph();    return 0;}

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Hix, cái này đâu có thuật toán gì ^^!
    Cứ nhìn thế nào vẽ ra thế ấy thôi mà ^^!
    Code của mèo dễ hiểu thế còn gì, chịu khó đọc tẹo là bạn sẽ hiểu ngay ấy mà (Dark mù C đọc còn hiểu :">).

    Cheers!

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi 6220119
    Mấy viên gạch trong hình minh họa có kích thước = nhau tất , vậy "kích thước" ở đây là gì ? :|
    Kích thước là chiều cao và dài của viên gạch khi thay đổi số n, nếu n>10 chẳng hạn thì viên gạch không thể giữ kích thước lớn như trên được mà phải thu nhỏ lại một chút.
    Code của bạn meoconlongvang chạy trên trình dịch gì vậy bạn?

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi meeokon
    Kích thước là chiều cao và dài của viên gạch khi thay đổi số n, nếu n>10 chẳng hạn thì viên gạch không thể giữ kích thước lớn như trên được mà phải thu nhỏ lại một chút.
    Code của bạn meoconlongvang chạy trên trình dịch gì vậy bạn?
    Cái code của mình chạy trên Borland C++ for DOS

 

 
Trang 1 của 4 123 ... CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •