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

In mảng các số chứa chữ số 1, 2, 3 theo thứ tự tăng dần

Ở đây, nhiệm vụ là in những số trong mảng có chứa chữ số 1, 2 và 3 trong số của chúng và nếu không có số nào như vậy thì đầu ra phải là -1.

Input : arr[] = {320,123,124,125,14532,126,340,123400,100032,13,32,3123,1100}
Output : 123 3123 14532 100032 123400
Vì mảng có giá trị với chữ số 1, 2 và 3 nó không trả về -1 và in 5 giá trị chứa 1, 2 và 3 trong số của chúng.

Thuật toán

START
Step 1 -> Khai báo mảng với các phần tử kiểu int là arr
Step 2 -> lưu kích thước mảng vào int n
Step 3 -> khai báo biến int one, two, three
Step 4 -> gọi hàm sort với tham số arr và arr+n
Step 5 -> khai báo biến kiểu ostringstream là st và string là num
Step 6 -> Vòng lặp For i=0 and i<n and ++i
  Set one=two=three=1
  Print arr[i]
  Set num=st.str()
  Set one=num.find("1")
  Set two=num.find("2")
  Set three=num.find("3")
  IF((one!=-1)&&(two!=-1)&&(three!=-1))
    Print num
  End
  Call st.str('')
end
STOP

Ví dụ

#include <bits/stdc++.h>
#include<string.h>
#include<sstream>
using namespace std;

int main() {
  int arr[] = {320,123,124,125,14532,126,340,123400,100032,13,32,3123,1100};
  int n = sizeof(arr)/sizeof(arr[0]);
  int one,two,three;
  sort(arr, arr+n);
  ostringstream st;
  string num;
  for (int i = 0; i < n; ++i) {
    one=two=three=-1;
    st << arr[i];
    num=st.str();
    one=num.find("1");
    two=num.find("2");
    three=num.find("3");
    if((one!=-1)&&(two!=-1)&&(three!=-1)) {
      cout<<num<<" ";
    }
    st.str("");
  }
}

Kết quả

Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra đầu ra sau

123 3123 14532 100032 123400