Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ phân hoạch ngẫu nhiên tập số/ký tự


Chương trình chia ngẫu nhiên một mảng số nguyên hoặc chuỗi ký tự thành các phân đoạn (partition) có kích thước ngẫu nhiên.

Thuật toán

Chọn chế độ 1 (số) hoặc 2 (ký tự).
Nếu số:
  Nhập n và mảng a[].
  l = 0.
  Khi n > 0:
    i = rand() % n + 1 (kích thước phân đoạn).
    In a[l] đến a[l+i-1].
    l += i; n -= i.
Nếu ký tự:
  Nhập chuỗi, tính độ dài n.
  Tương tự chia ngẫu nhiên chuỗi.

Ví dụ mã nguồn

#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;

int main() {
    int n, i, j, l, choice;
    cout << "1: So nguyen, 2: Ky tu: "; cin >> choice;
    if (choice == 1) {
        cout << "So phan tu: "; cin >> n;
        int a[n];
        for (i = 0; i < n; i++) {
            cout << "Phan tu " << i+1 << ": "; cin >> a[i];
        }
        cout << "Phan hoach ngau nhien:\n";
        l = 0;
        while (n > 0) {
            cout << "\t[ ";
            i = rand() % n + 1;
            n -= i;
            for (j = 0; j < i; j++) cout << a[l++] << " ";
            cout << "]\n";
        }
    } else {
        char ch[100];
        cout << "Nhap chuoi: "; cin >> ch;
        n = strlen(ch);
        cout << "Phan hoach ngau nhien:\n";
        l = 0;
        while (n > 0) {
            cout << "\t[ ";
            i = rand() % n + 1;
            n -= i;
            for (j = 0; j < i; j++) cout << ch[l++] << " ";
            cout << "]\n";
        }
    }
    return 0;
}

Đầu ra mẫu

1: So nguyen
So phan tu: 10
Phan tu: 10 9 8 7 6 5 4 3 2 1
Phan hoach ngau nhien:
[ 10 9 ]
[ 8 7 6 5 ]
[ 4 3 2 ]
[ 1 ]

2: Ky tu
Nhap chuoi: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Phan hoach ngau nhien:
[ A B C D E F G H I J K L M N O P ]
[ Q R S T U V W X ]
[ Y ]
[ Z ]