Муҳаммад ал-Хоразмий номидаги ТАТУ Самарқанд филиали
Дастурий инжиниринг кафедраси
Лаборатория машғулотлари
ФАН |
|
ДАСТУРЛАШ II(С++)
| Ҳафта рақами |
|
3
| Машғулот мазмуни |
| string синфига доир дастур тузиш. | Мақсад: |
| String синфини ўрганиш;
String синфининг методларини қўллаш бўйича билим ва кўникмаларга эга бўлиш;
String синфини қўллаган ҳолда дастурлар тузиш.
|
1-масала. Кўп ҳолларда маълум бир сатр ичидан сўзларни ажратишга тўғри келади. Тасаввур қиламиз сўзлар пробеллар билан ёзилган. stringstream синфини қўллаган ҳолда ҳар бир сўзни ялоҳида сатрда чоп этувчи дастур тузинг.
Дастур коди:
Листинг 3.1.1 KesibOlish.cpp
#include
#include
#include
using namespace std;
int main()
{
string text("Dasturlash qiziq fan");
stringstream s(text);
cout << "Matndagi so'zlar: " << endl;
string soz;
while (!s.eof())
{
s >> soz;
cout << soz << endl;
}
return 0;
}
Натижа:
2-масала. s сатрида oldSubStr сатри маълумотларини oldSubStr сатри маълумотларига ўзгартирувчи дастур кодини тузинг.
bool replaceString(string& s, const string& oldSubStr,
const string& newSubStr)
Юқоридаги функция s сатри ўзгартирилган бўлса true қиймат қайтаради, акс ҳолда эса қиймати false бўлади.
Дастур коди:
Листинг 3.1.2 SatrniAlmashtirish.cpp
#include
#include
using namespace std;
// Zamena oldSubStr v s na newSubStr
bool replaceString(string& s, const string& oldSubStr,
const string& newSubStr);
int main()
{
// Predlozhite polzovatelyu vvesti s, oldSubStr i newSubStr
cout << "Satrni kiriting S, almashtiriladiganS, va o'rniga qo'yiladiganS: ";
string s, oldSubStr, newSubStr;
cin >> s >> oldSubStr >> newSubStr;
bool isReplaced = replaceString(s, oldSubStr, newSubStr);
if (isReplaced)
cout << "Almashtirilgan satr " << s << endl;
else
cout << "O'xshash satr yo'q" << endl;
return 0;
}
bool replaceString(string& s, const string& oldSubStr,
const string& newSubStr)
{
bool isReplaced = false;
int currentPosition = 0;
while (currentPosition < s.length())
{
int position = s.find(oldSubStr, currentPosition);
if (position == string::npos) // Net bolshe sovpodeniy
return isReplaced;
else
{
s.replace(position, oldSubStr.length(), newSubStr);
currentPosition = position + newSubStr.length();
isReplaced = true; // Khotya by odin sovpodeniye
}
}
return isReplaced;
}
Натижа:
3-масала. StackOfInteger синфини яратинг ва тартибланган сонларни чоп этинг.
Дастур коди:
Листинг 3.1.3 havola.h
#ifndef HAVOLA_H
#define HAVOLA_H
class StackOfIntegers
{
public:
StackOfIntegers();
bool isEmpty() const;
int peek() const;
void push(int value);
int pop();
int getSize() const;
private:
int elements[100];
int size;
};
#endif // HAVOLA_H
Листинг 3.1.4 havola.cpp
#include "havola.h"
StackOfIntegers::StackOfIntegers()
{
size = 0;
}
bool StackOfIntegers::isEmpty() const
{
return size == 0;
}
int StackOfIntegers::peek() const
{
return elements[size - 1];
}
void StackOfIntegers::push(int value)
{
elements[size++] = value;
}
int StackOfIntegers::pop()
{
return elements[--size];
}
int StackOfIntegers::getSize() const
{
return size;
}
Листинг 3.1.5 main.cpp
#include
#include "havola.h"
using namespace std;
int main()
{
StackOfIntegers stack;
for (int i = 0; i <10; i++)
stack.push(i);
while (!stack.isEmpty())
cout <
return 0;
}
Натижа:
ДАСТУРЛАШ (С++) фанидан 3.1-лаборатория машғулотлари
Do'stlaringiz bilan baham: |