Eshonqulov Erali
OLIMPIADA MASALALARI
Sodda masalalar
A-guruh
1 -misol. n butun soning raqamlari aniqlansin va ekranga chiqarilsin.
1-usul
#include
using namespace std;
int main()
{
int n, r;
cout<<"n="; cin>>n;
while(n!=0) //sikl n dan farqli bo’lguncha davom etadi
{
r=n%10; //n 10 ga bo’lgandagi qoldiq uning xirgi raqami bo’ladi
n=n/10; //oxirgi raqamni yo’qotish uchun n ni 10 ga bo’lib, butn qismini olamiz
cout<}
return 0;
}
2-usul.
2 -misol. Kiritilgan natural sonning birinchi va oxirgi raqamlarini o‘rnini almashtiruvchi dastur tuzilsin.
#include
using namespace std;
int main()
{
int a, n1, p, n, i;
cout<<"n="; cin>>n;
a=n;
i=1;
p=n%10;
while(n>=10)
{
i=i*10; //Sonning necha xona ekanligini aniqlash;
n=n/10;
}
n1=a-n*i-p+n+p*i; //Sonni matematik usul bilan almashtirish
cout<
return 0;
}
3 -misol. Berilgan butun sonnini o‘zining raqamlarini teskari tartibda yozish orqali hosil qilingan songa almashtirib beruvchi dastur tuzing.
(Misol 34564 - - 46543)
1-usul
#include
#include
using namespace std;
int main()
{
int n, a, raq_soni=0, r, i=1, S=0;
//n kiritiladigan son, a keyinchalik foydalanish uchun kerak, raq_soni n natural sonning raqamlari soni
cout<<"n="; cin>>n;
a=n;
while(n!=0)
{
r=n%10; //har bir raqamni aniqlash
raq_soni++; //raqamlar sonini aniqlash
n=n/10; //Bu amal sonning bitta raqamini olib tashlaydi
}
while(i<=raq_soni)
{
r=a%10; //har bir raqmni aniqlash
a=a/10; //bitta raqamni olib tashlash
S+=r*pow(10,raq_soni-i); //raqamni aniqlab uni 10 ning raqamlar sonidan bitta kam darajasiga ko'paytirib qo'shib borish
i++;//raqamlar sonigacha o'sadi
}
cout< return 0;
}
2-usul
#include
#include
using namespace std;
int main()
{
int n, p, n1;
cout<<"n="; cin>>n;
n1=0;
while(n>0)
{
n1= n1*10 + n%10;
n=n/10;
}
cout<
return 0;
}
Dostları ilə paylaş: |