201-guruh talabasi Rustamov Farruxning Mustaqil ishi


Download 107.08 Kb.
bet3/4
Sana18.06.2023
Hajmi107.08 Kb.
#1572788
1   2   3   4
Bog'liq
Rustamov Programalash maruza

Mustaqil ish-3
Talabaning n ta fandan olgan baholari kridit fan nomlari ma’lum bo’lsa uning GPA ballarini hisoblang va kursdan kursga o’tishini aniqlang. 10ta talaba uchun tahlil qilish.
Dastur kodi:
#include
#include
using namespace std;
class Talaba{
public: virtual void kirit()=0; };
class Fan:public Talaba
{private:
string nomi;
int kredit;
int baho;
public:
Fan(){}
Fan(string nomi, int kredit, int baho)
{
this->nomi = nomi;
this->kredit = kredit;
if(baho<3) this->baho=0;
else this->baho = baho;
}
virtual void kirit() { cout << "Baho: "; cin >> baho; }
friend float GPA(Fan *fan[],int n);
};
float GPA(Fan *fan[],int n)
{
int a=0,b=0;
for(int i=0; i{ a+=fan[i]->kredit*fan[i]->baho; b+=fan[i]->kredit; }
return a*1./b;
}
int main()
{
int n,k;
cout << "Talabalar soni: "; cin >>k;
cout << "Fan soni: "; cin >> n;
string s[n],g[n];
float z[k]; int h[n];
Fan *fan[n];
for(int i=0; i{
cout <> g[i];
cout << "Kredit soni: " ; cin >> h[i];
}
for(int m=0; m{ cout << "Talaba ism-familiyasini kiriting: "; cin >> s[m];
for(int i=0; i < n; i++)
{
fan[i] = new Fan();
cout <cout << "Kredit soni: " << h[i] << endl;
fan[i]->kirit();
}
z[m]=GPA(fan,n);
}
for(int m=0; m{ if(z[m]>=2.6)
cout <<"Talaba " <else{ cout << "Talaba " <
Mustaqil ish-4
Bank akount hisob raqamini nomli sinf yaratilgan, tashqi funksiya hisob raqami to’g’ri ochilganligini tekshiradigan , qancha pul borligini qaytaradigan va bir yilda qo’yilgan o’rtacha so’mmani hisoblovchi funksoyalardan foydalaning.
Dastur kodi:
#include
using namespace std;
class filiall{
public: virtual void kirit()=0; };
class Bank: public filiall
{ private:
float m_sum;
public:
Bank(){} Bank(float sum): m_sum(sum) { }
virtual void kirit()
{ cout << "Mablag': "; cin >> m_sum; }
friend ostream& operator<< (ostream &out, const Bank &sum)
{ out << sum.m_sum<< " so'm "; return out; }
Bank& operator+(Bank sum)
{ m_sum = m_sum + sum.m_sum; return *this; }
Bank& operator/(int value)
{ m_sum= m_sum/ value; return *this; }
};
template
Bank urtacha(T *bank[], int uzunlik)
{
T summ = 0;
for (int i=0; i < uzunlik; ++i)
summ = summ + *bank[i];
summ = summ / uzunlik;
return summ;
}
template
Bank umumiy(T *bank[], int uzunlik)
{
T l = 0;
for (int i=0; i < uzunlik; ++i)
l = l + *bank[i];
return l;
}
void hisobraqam(string w)
{
string hisob_raqam; int d;
cout << "Bank faoliyatidan foydalanish uchun yangi hisob raqami yarating!!!\n";
cout << "Shartlari:\t 8ta simvol, kamida 2ta harfdan va raqamlardan foydalaning!\n Hisob raqami kiriting:";
s:
getline(cin,hisob_raqam); d=hisob_raqam.size();
int k,j=0;
if (d==8)
{ for(int i=0; i{
k=int(hisob_raqam[i]);
if(65<=k&&k<=90||97<=k&&k<=122||128<=k&&k<=175||224<=k&&k<=247)
j++;
}
if(j<2)
{ cout << "Hisob raqami uchun 2tadan kam harf kiritilgan!!!\nQayta urinib ko'ring: "; goto s; }
else cout <}
else{ cout << "Simvollar 8ta emas!!!\nQayta urinib ko'ring: "; goto s; }
}
int main()
{
string b_nomi,ism; int n;
cout << "Bank nomi: "; getline(cin,b_nomi);
cout << "Foydalanuvchi nomi: "; getline(cin,ism);
hisobraqam(ism);
cout << "\nYillik nechi marotaba bankga pul qo'yasiz: "; cin >> n;
Bank *bank[n];
for(int i=0; i{ bank[i] = new Bank(); bank[i]->kirit(); }
cout <<"\t\t"<cout <<"Foydalanuvchi "<cout << "Sizing hisobingizdagi umumiy mablag': " <cout << "O'rtacha yillik mablag'ingiz: "<return 0;
}

Mustaqil ish-5
Kitob do’koni nomli sinf hosil qiling. Bu sinf quyidagigilarni hal qilsin. N ta kitobdan oxirgi 5ta nashrni aniqlash , eng qimmat , eng arzon kitob muallifini aniqlash va sotuv statistikasini aniqlang. Eng qimmat hisob bo’yicha kitob kam sotildimi? , eng arzon kitob ko’p sotildimi? Yoki yo’qligini aniqlash.


Dastur kodi:

#include


using namespace std;
class Kitob {
public:
string sarlavha;
string muallif;
int yil;
double narx;
int sotish;
Kitob(string sarlavha, string muallif, int yil, double narx, int sotish)
{
this->sarlavha = sarlavha;
this->muallif = muallif;
this->yil = yil;
this->narx = narx;
this->sotish = sotish; }};
class Kitob_dukon {
public:
Kitob_dukon(vector kitoblar){this->kitoblar = kitoblar;}
void Oxirgi_nashrlarni_chop_etish(int n) {
cout << "Oxirgi " << n << " nashrlar:" << endl;
int i = 1;
for (auto it = kitoblar.rbegin(); it != kitoblar.rend() && i <= n; ++it, ++i)
{ cout << i << ". " << it->sarlavha << " tomonidan " << it->muallif << " (" << it->yil << ")" << endl;}cout << endl; }
void Narxlar_statistikasini_chop_etish() {
auto min_narx = min_element(kitoblar.begin(),kitoblar.end(),[](const Kitob& k1,const Kitob& k2){return k1.narx < k2.narx;});
auto max_narx = max_element(kitoblar.begin(),kitoblar.end(),[](const Kitob& k1,const Kitob& k2){return k1.narx < k2.narx;});
cout << "Eng qimmat kitob muallifi: (" << max_narx->narx << "): " << max_narx->muallif << endl;
cout << "Eng arzon kitob muallifi: (" << min_narx->narx << "): " << min_narx->muallif << endl;
cout << endl; }
void Sotish_statistikasini_chop_etish() {
double jami_daromad = 0;
int umumiy_savdo = 0;
for (const auto& kitob : kitoblar)
{ jami_daromad += kitob.narx * kitob.sotish;
umumiy_savdo += kitob.sotish; }
cout << "Jami daromad: $" << jami_daromad << endl;
cout << "Umumiy savdo: " << umumiy_savdo << endl;
auto min_narx = min_element(kitoblar.begin(), kitoblar.end(), [](const Kitob& k1, const Kitob& k2){ return k1.narx < k2.narx;});
auto max_narx = max_element(kitoblar.begin(), kitoblar.end(), [](const Kitob& k1, const Kitob& k2){ return k1.narx < k2.narx;});
if (max_narx->sotishsotish){cout << "Eng qimmat kitob kam sotilgan." << endl;}
if (min_narx->sotish == max_element(kitoblar.begin(),kitoblar.end(),[](const Kitob& k1,const Kitob &k2){return k1.sotishsotish) {
cout << "Eng arzon kitob eng ko'p sotilgan." << endl; } cout << endl; }
private: vector kitoblar;};
int main() {
vector kitoblar = {
Kitob("Vatan", "Fernando Aramburu", 2021, 25.99, 100),
Kitob("1775 ko'chalar", "Xose A. Gomes Iglesias", 2020, 19.99, 150),
Kitob("Soyalar monarxi", "Xaver Serks", 2020, 35.99, 50),
Kitob("Sofiya bo'lishning sehrlari", "Elisabet Benavent", 2019, 15.99, 200),
Kitob("Ruhlar labirinti", "Karlos Ruis Zafon", 2021, 29.99, 80),
Kitob("G'afur G'ulom", "Shum bola", 2018, 12.99, 300), };
Kitob_dukon kitob_dukon(kitoblar);
kitob_dukon.Oxirgi_nashrlarni_chop_etish(5);
kitob_dukon.Narxlar_statistikasini_chop_etish();
kitob_dukon.Sotish_statistikasini_chop_etish();
return 0; }


Mustaqil ish-6
Dasturni yuz berishi mumkin bo’lgan istisno holatlarni yozing.



  1. > 0 ;

  2. Log(a)/log(b) , a<0 , b<0 ;

  3. a/b b!=0 ;

  4. a,b,c uchburchak ;



Dastur kodi:

#include


using namespace std;
// 1) ildizda x >0 shartga istisno xolat uchun
double srt(double x)
{ if (x < 0)throw "Manfiy sonning kvadrat ildizini topib bo'lmadi.";
return sqrt(x);}
// 2) log(a)/log(b) a>0 , b>0 holat uchun istisno holatlar
double logg(double a, double b)
{ if (a < 0 || b < 0) throw "a va b ham musbat bo'lishi kerak";
else cout << log(a)*1./log(b);}
// 3) Arcsin(x) , asin(x) x qarashli [-1 , 1] qiymatlar sohasiga tegishli emas.
double arccsin(double k)
{ if (-1 <= k || k <= 1) throw "a [-1, 1] oraliqda bo'lishi kerak";}
string uchburchak(float a, float b, float c)
{
if(a+b>c && b+c>a && a+c>b)
return "Uchburchak bo'la oladi!!!";
else throw "Uchburchak bo'la olmaydi";
}
int main() {
try { cout << srt(-4) << endl;}
catch (const char* error){cout << "Xatolik: " << error << endl;}
try { cout << logg(9,-2) << endl ;}
catch (const char* xato) { cout << "Xatolik: " << xato << endl; }
try { cout << arccsin(-3) <catch (const char* xato1) { cout << "Xatolik: " << xato1 << endl; }
// a/b , b!=0 ga holatr uchun
float a,b,c; cin >> a >> b;
if(b==0)
cout << " Maxraj 0 bo'lishi mumkin emas, qolgan barcha holatda o'rinli";
else cout <return 0;}



Mustaqil ish-7
Masala: “exception” sinfining “what()” metodidan boshqa yana qanday metodlari bor?
C++ kodi bajarilganda dasturda har xil turdagi xatolar yuzaga kelishi mumkin - dasturchilar tomonidan kodlash xatolari, noto'g'ri kiritilgan xatolar yoki boshqa kutilmagan xatolar.
Xatolik yuz berganda, C++ odatda dasturning bajarilishini to'xtatadi va xato xabari hosil qiladi. Ko'pgina stsenariylarda mantiqiy va ish vaqti xatolari haqida xabar berish va qayta ishlashning afzal qilingan usuli istisnolardan foydalanishdir. Istisnolar xatolarni aniqlash va ma'lumotlarni qo'ng'iroqlar to'plamiga uzatish uchun rasmiy va aniq belgilangan usulni ta'minlaydi.



Download 107.08 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling