Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री दक्षिणावर्त घुमाएं


हमें एक 2-D सरणी दी गई है जिसका उपयोग मैट्रिक्स पैटर्न बनाने के लिए किया जाएगा। कार्य मैट्रिक्स को 90 डिग्री दक्षिणावर्त दिशा में घुमाना है ताकि अंतिम पंक्ति पहला कॉलम बन जाए, दूसरी पंक्ति दूसरा कॉलम बन जाए और पहली तीसरा कॉलम बन जाए और चुनौती यह है कि हमें किसी अतिरिक्त स्थान का उपयोग नहीं करना है।

आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें:

इनपुट -

int arr[row_col_size][row_col_size] = { { 5, 1, 4},    { 9, 16, 12 },    { 2, 8, 9}}

आउटपुट -

दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: 2 9 5 8 16 1 9 12 4

व्याख्या - हमें पूर्णांक प्रकार की 2-D सरणी दी गई है। अब हम मैट्रिक्स को 90 डिग्री दक्षिणावर्त दिशा में घुमाएंगे।

घुमाने से पहले-: { { 5, 1, 4}, { 9, 16, 12 }, { 2, 8, 9}} घुमाने के बाद-: 2 9 5 8 16 1 9 12 4

इनपुट    -

int arr[row_col_size][row_col_size] = { { 2, 1, 9},    { 11, 6, 32 },    { 3, 7, 5}}

आउटपुट    -

दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: 2 9 5 8 16 1 9 12 4

व्याख्या - हमें पूर्णांक प्रकार की 2-D सरणी दी गई है। अब हम मैट्रिक्स को 90 डिग्री दक्षिणावर्त दिशा में घुमाएंगे।

घुमाने से पहले-: { { 2, 1, 9}, { 11, 6, 32 }, { 3, 7, 5}} घुमाने के बाद-: 3 11 2 7 6 1 5 32 9

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण इस प्रकार है

1. नैव दृष्टिकोण

  • row_col_size के साथ एक 2-D पूर्णांक सरणी इनपुट करें जिसे मैट्रिक्स माना जाएगा।

  • Rotate_ClockWise(arr) फ़ंक्शन को डेटा पास करें।

  • फ़ंक्शन Rotate_ClockWise(arr) के अंदर

    • i को 0 से row_col_size/2 से कम तक लूप FOR शुरू करें।

    • लूप के अंदर, j को i से row_col_size - i - 1 से कम तक एक और लूप FOR शुरू करें।

    • लूप के अंदर, ptr को arr[i][j] पर सेट करें, arr[i][j] को arr[row_col_size - 1 - j][i] पर, arr[row_col_size - 1 - j][i] को arr[row_col_size - 1 - i][row_col_size - 1 - j] पर, arr[row_col_size - 1 - i][row_col_size - 1 - j] को arr[j][row_col_size - 1 - i] पर और arr[j][row_col_size - 1 - i] को ptr पर सेट करें।

  • i को 0 से row_col_size से कम तक लूप FOR शुरू करें। लूप के अंदर, j को 0 से row_col_size से कम तक एक और लूप FOR शुरू करें; j++ और arr[i][j] प्रिंट करें।

2. कुशल दृष्टिकोण

  • row_col_size के साथ एक 2-D पूर्णांक सरणी इनपुट करें जिसे मैट्रिक्स माना जाएगा।

  • Rotate_ClockWise(arr) फ़ंक्शन को डेटा पास करें।

  • फ़ंक्शन Rotate_ClockWise(arr) के अंदर

    • i को 0 से row_col_size से कम तक लूप FOR शुरू करें।

    • लूप के अंदर, j को 0 से row_col_size - i से कम तक एक और लूप FOR शुरू करें।

    • लूप के अंदर, ptr को arr[i][j] पर सेट करें, arr[i][j] को arr[row_col_size - 1 - j]arr[row_col_size - 1 - i] पर और [row_col_size - 1 - j] को arr[j][row_col_size - 1 - i] पर ptr पर सेट करें।

    • i को 0 से row_col_size / 2 से कम तक लूप FOR शुरू करें। लूप के अंदर, j को 0 से row_col_size से कम तक एक और लूप FOR शुरू करें। लूप के अंदर, ptr को arr[i][j] पर सेट करें, arr[i][j] को arr[row_col_size - 1 - i][j] पर और arr[row_col_size - 1 - i][j] को ptr पर सेट करें

  • i को 0 से row_col_size से कम तक लूप FOR शुरू करें। लूप के अंदर, j को 0 से row_col_size से कम तक एक और लूप FOR शुरू करें; j++ और arr[i][j] प्रिंट करें।

नैव दृष्टिकोण

उदाहरण

#include <bits/stdc++.h> using namespace std; #define row_col_size 3 void Rotate_ClockWise(int arr[row_col_size][row_col_size]){     for(int i = 0; i < row_col_size / 2; i++){       for(int j = i; j < row_col_size - i - 1; j++){           int ptr = arr[i][j];           arr[i][j] = arr[row_col_size - 1 - j][i];           arr[row_col_size - 1 - j][i] = arr[row_col_size - 1 - i][row_col_size - 1 - j];           arr[row_col_size - 1 - i][row_col_size - 1 - j] = arr[j][row_col_size - 1 - i];           arr[j][row_col_size - 1 - i] = ptr;       }     } } int main(){     int arr[row_col_size][row_col_size] = { { 5, 1, 4},{ 9, 16, 12 },{ 2, 8, 9}};     Rotate_ClockWise(arr);     cout<<"दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: \n";     for(int i = 0; i < row_col_size; i++){       for(int j = 0; j < row_col_size; j++){           cout << arr[i][j] << " ";       }       cout << '\n';     }     return 0; }

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा

दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: 2 9 5 8 16 1 9 12 4

कुशल दृष्टिकोण

उदाहरण

#include <bits/stdc++.h> using namespace std; #define row_col_size 3 void Rotate_ClockWise(int arr[row_col_size][row_col_size]){     for(int i = 0; i < row_col_size; i++){       for(int j = 0; j < row_col_size - i; j++){           int ptr = arr[i][j];           arr[i][j] = arr[row_col_size - 1 - j][row_col_size - 1 - i];           arr[row_col_size - 1 - j][row_col_size - 1 - i] = ptr;       }     }     for(int i = 0; i < row_col_size / 2; i++){       for(int j = 0; j < row_col_size; j++){           int ptr = arr[i][j];           arr[i][j] = arr[row_col_size - 1 - i][j];           arr[row_col_size - 1 - i][j] = ptr;       }     } } int main(){     int arr[row_col_size][row_col_size] = { { 5, 1, 4},{ 9, 16, 12 },{ 2, 8, 9}};     Rotate_ClockWise(arr);     cout<<"दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: \n";     for(int i = 0; i < row_col_size; i++){       for(int j = 0; j < row_col_size; j++){           cout << arr[i][j] << " ";       }       cout << '\n';     }     return 0; }

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा

दक्षिणावर्त दिशा में अतिरिक्त स्थान के बिना मैट्रिक्स को 90 डिग्री घुमाने पर: 2 9 5 8 16 1 9 12 4

  1. OpenCV में C++ का उपयोग करके छवि को घुमाएं OpenCV में C++ का उपयोग करके छवि को घुमाएं

    OpenCV के बिल्ट-इन फंक्शन का उपयोग करके छवि घुमाना एक सरल कार्य है। छवि घुमाने के लिए, हमें highgui.hpp और imgproc.hpp हेडर फाइलों का उपयोग करना होगा और हम इस प्रोग्राम में अधिक फंक्शन पेश करेंगे जो छवि रोटेशन से संबंधित हैं।OpenCV में C++ का उपयोग करके छवि को घुमाने का निम्नलिखित प्रोग्राम।उदाहरण#i

  1. C++ प्रोग्राम: इन्सिडेंस मैट्रिक्स का उपयोग करके ग्राफ प्रतिनिधित्व करना C++ प्रोग्राम: इन्सिडेंस मैट्रिक्स का उपयोग करके ग्राफ प्रतिनिधित्व करना

    एक ग्राफ का इन्सिडेंस मैट्रिक्स ग्राफ को मेमोरी में स्टोर करने का एक और प्रतिनिधित्व है। यह मैट्रिक्स एक वर्ग मैट्रिक्स नहीं है। इन्सिडेंस मैट्रिक्स का ऑर्डर V x E होता है। जहां V वर्टेक्स की संख्या है और E ग्राफ में एज की संख्या है। इस मैट्रिक्स की प्रत्येक पंक्ति में हम वर्टेक्स रखते हैं, और प्रत

  1. C++ प्रोग्राम: एडजेसेंसी मैट्रिक्स का उपयोग करके ग्राफ प्रतिनिधित्व करना C++ प्रोग्राम: एडजेसेंसी मैट्रिक्स का उपयोग करके ग्राफ प्रतिनिधित्व करना

    एक ग्राफ का एडजेसेंसी मैट्रिक्स V x V आकार का एक वर्ग मैट्रिक्स होता है। V ग्राफ G के वर्टेक्स की संख्या है। इस मैट्रिक्स में प्रत्येक तरफ V वर्टेक्स मार्क किए जाते हैं। यदि ग्राफ में i से j वर्टेक्स तक कुछ एज हैं, तो एडजेसेंसी मैट्रिक्स में i-वीं पंक्ति और j-वें कॉलम में 1 होगा (या वेटेड ग्राफ के