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

Đề tài: Bài tập vẽ hình C

  1. #1
    Ngày gia nhập
    03 2022
    Bài viết
    0

    Mặc định Bài tập vẽ hình C

    Nhập vào kích thước hình vuông (không quá 9). Vẽ hình vuông số theo nguyên tắc tương ứng theo mẫu trong ví dụ dưới đây.
    Input
    4

    Output
    4444444
    4333334
    4322234
    4321234
    4322234
    4333334
    4444444

    Mọi người ai biết chỉ e với !! E cảm ơn ạ !

  2. #2
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    656

    Trích dẫn Nguyên bản được gửi bởi adnbcvt Xem bài viết
    Nhập vào kích thước hình vuông (không quá 9). Vẽ hình vuông số theo nguyên tắc tương ứng theo mẫu trong ví dụ dưới đây.
    Input
    4

    Output
    4444444
    4333334
    4322234
    4321234
    4322234
    4333334
    4444444

    Mọi người ai biết chỉ e với !! E cảm ơn ạ !
    C Code:
    1. #include <stdio.h>
    2. void print(char *str, int offset, int m, char digit)
    3. {
    4.     for (int i = offset; i < m - offset; i++) {
    5.         str[i] = digit;
    6.     }
    7. }
    8. void draw(char *str, int n)
    9. {
    10.     str[2 * n - 1] = 0;
    11.     int offset = 0;
    12.     while (offset < n) {
    13.         print(str, offset, 2 * n - 1, '0' + n - offset);
    14.         offset++;
    15.         printf("%s\n", str);
    16.     }
    17.     offset = n - 1;
    18.     while (offset > 0) {
    19.         print(str, offset, 2 * n - 1, '1' + n - offset);
    20.         offset--;
    21.         printf("%s\n", str);
    22.     }
    23. }
    24. int main(int argc, char *argv[])
    25. {
    26.     char str[18];
    27.     draw(str,7);
    28. }
    29. /*kết quả
    30. 7777777777777
    31. 7666666666667
    32. 7655555555567
    33. 7654444444567
    34. 7654333334567
    35. 7654322234567
    36. 7654321234567
    37. 7654322234567
    38. 7654333334567
    39. 7654444444567
    40. 7655555555567
    41. 7666666666667
    42. 7777777777777
    43.  
    44. [Program finished]
    45.  */

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

    Thanks a nhiều ạ !!!

  4. #4
    Ngày gia nhập
    07 2011
    Nơi ở
    Moscow-Russia
    Bài viết
    154

    C Code:
    1. #include <stdio.h>
    2. #include <math.h>
    3. int main()
    4. {
    5.     int N;
    6.     scanf_s("%d", &N);
    7.     for (int i = 0; i < 2 * N - 1; i++)
    8.     {
    9.         for (int j = 0; j < 2 * N - 1; j++)
    10.             printf("%d", (abs(i - j) + abs(i + j - 2 * N + 2)) / 2 + 1);
    11.         printf("\n");
    12.     }
    13.     return 0;
    14. }
    A good beginning and a good ending !

  5. #5
    Ngày gia nhập
    03 2022
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi Moscow Xem bài viết
    C Code:
    1. #include <stdio.h>
    2. #include <math.h>
    3. int main()
    4. {
    5.     int N;
    6.     scanf_s("%d", &N);
    7.     for (int i = 0; i < 2 * N - 1; i++)
    8.     {
    9.         for (int j = 0; j < 2 * N - 1; j++)
    10.             printf("%d", (abs(i - j) + abs(i + j - 2 * N + 2)) / 2 + 1);
    11.         printf("\n");
    12.     }
    13.     return 0;
    14. }
    Sao để tìm được biểu thức để in ra kia hay vậy a ??

  6. #6
    Ngày gia nhập
    07 2018
    Bài viết
    1

    Mặc định Bài tập vẽ hình C

    Chuyển
    4444444
    4333334
    4322234
    4321234
    4322234
    4333334
    4444444
    thành
    3333333
    3222223
    3211123
    3210123
    3211123
    3222223
    3333333
    cho dễ tính. Nếu coi số 0 là gốc tọa độ (0, 0) thì các điểm 1 xung quanh có tọa độ là
    (-1,1) (0,1), (1,1)
    (-1,0) (0,0), (1,0)
    (-1,-1) (0,-1), (1,-1)
    chuyển các điểm này về số 1 chỉ cần lấy max(|x|, |y|).

    Vậy cho i, j chạy từ 1-n tới n-1, in ra 1 + max(|x|, |y|) là được:
    C++ Code:
    1. #include <iostream>
    2. #include <algorithm>
    3. #include <cmath>
    4.  
    5. int main() {
    6.     using namespace std;
    7.     for (int n = 1; n < 10; ++n) {
    8.         for (int i = 1 - n; i < n; ++i) {
    9.             for (int j = 1 - n; j < n; ++j)
    10.                 cout << 1 + max(abs(i), abs(j));
    11.             cout << "\n";
    12.         }
    13.         cout << "\n";
    14.     }
    15. }

  7. #7
    Ngày gia nhập
    02 2016
    Bài viết
    337

    Trích dẫn Nguyên bản được gửi bởi khoaph Xem bài viết
    C Code:
    1. #include <stdio.h>
    2. void print(char *str, int offset, int m, char digit)
    3. {
    4.     for (int i = offset; i < m - offset; i++) {
    5.         str[i] = digit;
    6.     }
    7. }
    8. void draw(char *str, int n)
    9. {
    10.     str[2 * n - 1] = 0;
    11.     int offset = 0;
    12.     while (offset < n) {
    13.         print(str, offset, 2 * n - 1, '0' + n - offset);
    14.         offset++;
    15.         printf("%s\n", str);
    16.     }
    17.     offset = n - 1;
    18.     while (offset > 0) {
    19.         print(str, offset, 2 * n - 1, '1' + n - offset);
    20.         offset--;
    21.         printf("%s\n", str);
    22.     }
    23. }
    24. int main(int argc, char *argv[])
    25. {
    26.     char str[18];
    27.     draw(str,7);
    28. }
    Nếu đã nạp các ký tự vào một chuỗi trước khi in thì dùng đệ quy trông cho nó "nguy hiểm".

    Code:
    // Example program
    #include <stdio.h>
    #include <string.h>
    
    #define MAXSTR 20
    
    void PrintLine(char *str, int mid, int n)
    {
        for (int i = 0; i < n; i++) str[mid+i] = str[mid-i] = n + '0';
    }
    
    void PrintMatrix(char *istr, int mid, int n)
    {
        char str[MAXSTR];
        strcpy(str, istr);
        for (int i = 0; i < n; i++) str[mid+i] = str[mid-i] = n + '0';
        printf("%s\n", str);
        if (n<=1) return;
        PrintMatrix(str, mid, n-1);
        printf("%s\n", str);
    }
    
    int main(int argc, char *argv[])
    {
        char str[MAXSTR] = "1234567890123456789";
        int n = 7;
        str[n*2-1] = 0; // đánh dấu chiều dài chuỗi
        PrintMatrix(str, n-1, n); // n-1 là điểm giữa chuỗi
    }

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