Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

1, 2, 3을 숫자로 갖는 배열을 오름차순으로 인쇄하십시오.

<시간/>

여기에서 작업은 1, 2 및 3을 숫자로 포함하는 배열에 해당 숫자를 인쇄하는 것입니다. 해당 숫자가 아닌 경우 출력은 -1이어야 합니다.

Input : arr[] = {320,123,124,125,14532,126,340,123400,100032,13,32,3123,1100}
Output : 123 3123 14532 100032 123400

Since the array have values with digits 1, 2 and 3 it wouldn’t return -1 and print 5 values that
Contain 1, 2 and 3 in their respective numbers.

알고리즘

START
Step 1 -> Declare array with elements of int type as arr
Step 2 -> store size of array in int n
Step 3 -> declare int variable as one, two, three
Step 4 -> call sort functions with parameters as arr and arr+n
Step 5 -> declare variable of type osrtingstream as st and string as num
Step 6 -> Loop 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

예시

#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("");
   }
}

출력

위의 프로그램을 실행하면 다음 출력이 생성됩니다.

123 3123 14532 100032 123400