Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm không. cột không được sắp xếp theo thứ tự tăng dần trong C ++

Chúng ta được cung cấp một mảng các chuỗi có cùng độ dài. Mục đích là tìm các cột, (ma trận chuỗi) không được sắp xếp theo thứ tự tăng dần. Ví dụ:mỗi ký tự đầu tiên trong chuỗi được so sánh với ký tự đầu tiên của chuỗi tiếp theo và cứ tiếp tục như vậy cho đến chuỗi cuối cùng. Nếu chúng không phải là thứ tự giảm dần, hãy tăng số lượng. Làm điều này cho tất cả các ký tự thứ hai, sau đó đến ký tự thứ ba của tất cả các chuỗi, v.v. cho đến ký tự cuối cùng.

Đầu vào

Arr[]= { “abc”, “bcd”, “def” }

Đầu ra

Count of columns: 0

Giải thích - cho mỗi cột,

Cột 1:ký tự ở chỉ mục 0:a

Cột 2:ký tự ở chỉ mục 1:b

Cột 3:ký tự ở chỉ mục 2:c

Tất cả các ký tự tương ứng trong cột được sắp xếp theo thứ tự tăng dần.

Đầu vào

Arr[]= { “dbd”, “faf”, “eeg” }

Đầu ra

Count of columns: 2

Giải thích - cho mỗi cột,

Cột 1 - ký tự tại chỉ mục 0:d g

Cột 2 - ký tự ở chỉ mục 1:b> a

Cột 3 - ký tự ở chỉ mục 2:d

Cột 1 và 2 có các ký tự không có thứ tự tăng dần. Đếm =2

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Mảng ký tự arr [] [] được sử dụng để lưu trữ các chuỗi có cùng độ dài.

  • Hàm countCols (char str [3] [4], int n, int len) nhận một mảng chuỗi, không. của chuỗi trong đó và độ dài của mỗi chuỗi dưới dạng đầu vào và trả về số lượng cột không theo thứ tự tăng dần.

  • Khởi tạo số lượng bằng 0.

  • Col được sử dụng để đại diện cho cột hiện tại. (chỉ mục chung cho tất cả các chuỗi).

  • Truyền đồng thời từng chuỗi bắt đầu từ chỉ mục đầu tiên bằng vòng lặp for cho đến khi độ dài của chuỗi (cùng độ dài cho tất cả).

  • Ở đây mỗi chuỗi có 3 ký tự nên chúng ta so sánh str [col] [j]> str [col + 1] [j-1] || str [col + 1] [j]> str [col + 2] [j- 1]. Nếu bất kỳ điều kiện nào là đúng, hãy tăng số lượng.

  • Sau khi kết thúc vòng lặp for, trả về kết quả có trong số đếm.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int countCols(char str[3][4],int n,int len){
    int i,j;
   int count=0;
   int col=0;
   for(j=0;j<len;j++){
      if(str[col][j]>str[col+1][j-1] || str[col+1][j]>str[col+2][j-1] )
         count++;
   }
   return count;
}
int main(){
   char arr[3][4]={"abc", "daf", "ghi"};
   cout<<"\nColumns that are not sorted:"<<countCols(arr,3,3);
   return 0;
}

Đầu ra

Columns that are not sorted:2