|
Dasturlash 2” fanidan 3-mustaqil ish ki 23-01 guruh talabasi Abdug‘aniyev Nodirbek
|
bet | 11/12 | Sana | 15.05.2024 | Hajmi | 122,84 Kb. | | #234504 |
Bog'liq 3-mustaqil ish dasturlash Abduganiyev7- . while (st.size() != 0){ cout<< st_two.top()
<< " :
stack dagi oʻrni " << st_two.size()
<< endl;
st_two.pop();
}
Dastur fragmentinistek elementlarini saqlab qolgan xolda ishlatish funksiyasini tuzing:
#include
#include
using namespace std;
// Stek elementlarini saqlab qolgan holda ishlab chiqish
void processStackWithSaving(stack& st) {
stack tempStack; // Vaqtinchalik stek
// Stekdagi elementlarni vaqtinchalik stekka ko'chirish
while (!st.empty()) {
tempStack.push(st.top());
st.pop();
}
// Vaqtinchalik stekdagi elementlarni ekranga chiqarish
while (!tempStack.empty()) {
cout << "Element: " << tempStack.top() << ", position in stack: " << tempStack.size() << endl;
st.push(tempStack.top()); // Elementlarni asosiy stekka qaytarish
tempStack.pop();
}
}
int main() {
stack myStack;
// Stekka elementlarni qo'shish
myStack.push(10);
myStack.push(20);
myStack.push(30);
myStack.push(40);
myStack.push(50);
// Stek elementlarini saqlab qolgan holda ishlab chiqish
processStackWithSaving(myStack);
return 0;
}
Ushbu kod misolida processStackWithSaving() funksiyasi stek elementlarini saqlab qolgan holda ishlab chiqadi. Funksiya quyidagi ishlarni bajaradi:
1. tempStack nomli yangi stek yaratadi. Bu stek vaqtinchalik stek sifatida foydalaniladi.
2. Asosiy st stekdagi elementlarni tempStackga ko'chiradi.
3. tempStackdagi elementlarni ekranga chiqaradi.
4. Ekranga chiqarish jarayonida, tempStackdagi har bir elementni asosiy st stekka qaytaradi.
8- Stek va vektor bilan farqlari aniqlovchi dastur tuzing:
#include
#include
#include
#include
using namespace std;
int main() {
// Stack
stack myStack;
myStack.push(10);
myStack.push(20);
myStack.push(30);
cout << "Stack size: " << myStack.size() << endl;
cout << "Stack top: " << myStack.top() << endl;
myStack.pop();
cout << "Stack size after pop: " << myStack.size() << endl;
// Vector
vector myVector;
myVector.push_back(10);
myVector.push_back(20);
myVector.push_back(30);
cout << "Vector size: " << myVector.size() << endl;
cout << "Vector element at index 1: " << myVector[1] << endl;
myVector.erase(myVector.begin() + 1);
cout << "Vector size after erase: " << myVector.size() << endl;
// Farqlar
cout << endl << "Farqlar:" << endl;
cout << "1. Stek yopiq tizim (LIFO - Last In First Out), vektor esa ochiq tizimdir." << endl;
cout << "2. Stekda element qo'shish va o'chirish uchun push() va pop() funksiyalaridan foydalaniladi, vektor uchun esa push_back() va erase() funksiyalaridan foydalaniladi." << endl;
cout << "3. Stekdagi so'nggi element top() orqali olinadi, vektorda esa indeks orqali elementlar olinadi." << endl;
cout << "4. Stekda o'lchov size() funktsiyasi orqali olinadi, vektorlarda ham size() funksiyasi ishlatiladi." << endl;
cout << "5. Stek dinamik xotira talab qilmaydi, vektor esa dinamik xotiradan foydalanadi." << endl;
return 0;
}
Ushbu dastur quyidagi farqlarni ko'rsatadi:
1. Stek LIFO (Last In First Out) tizimi bo'lib, vektor esa ochiq tizimdir.
2. Stekda elementlar qo'shish va o'chirish uchun push() va pop() funksiyalaridan foydalaniladi, vektor uchun esa push_back() va erase() funksiyalardan foydalaniladi.
3. Stekdagi so'nggi element top() orqali olinadi, vektorda esa indeks orqali elementlar olinadi.
4. Stekda o'lchov size() funktsiyasi orqali olinadi, vektorlarda ham size() funksiyasi ishlatiladi.
5. Stek dinamik xotira talab qilmaydi, vektor esa dinamik xotiradan foydalanadi.
|
| |