Həllər
Ekranda "Mən C++ dilini öyrənirəm" sətrini çap edən proqram tərtib edin.
// həll_1_5.cpp
#include <iostream>
int main()
{
std::cout<<"Mən C++ dilini öyrənirəm \n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>prog2.exe
Mən C++ dilini öyrənirəm
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
§2. Dəyişənlər
1-ci çalışma.
Elə proqram yazın ki, istifadəçidən 5 ədəd daxil etməsini istəsin, daha sonra, proqram bu ədədlərin cəmini ekranda çap etsin.
// həll_2_1.cpp
#include <iostream>
int main(){
int x1,x2,x3,x4,x5,y;
/* ən primitiv variant*/
std::cout<<"Zəhmət olmasa, 1-ci ədədi daxil edin \n";
std::cin>>x1;
std::cout<<"Zəhmət olmasa, 2-ci ədədi daxil edin \n";
std::cin>>x2;
std::cout<<"Zəhmət olmasa, 3-cu ədədi daxil edin \n";
std::cin>>x3;
std::cout<<"Zəhmət olmasa, 4-cu ədədi daxil edin \n";
std::cin>>x4;
std::cout<<"Zəhmət olmasa, 5-ci ədədi daxil edin \n";
std::cin>>x5;
y = x1 + x2 + x3 + x4 + x5;
std::cout<<"Daxil etdiyiniz ədədlərin cəmi = "<<y<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>prog2.exe
Zəhmət olmasa, 1-ci ədədi daxil edin
45
Zəhmət olmasa, 2-ci ədədi daxil edin
34
Zəhmət olmasa, 3-cu ədədi daxil edin
123
Zəhmət olmasa, 4-cu ədədi daxil edin
7
Zəhmət olmasa, 5-ci ədədi daxil edin
8
Daxil etdiyiniz ədədlərin cəmi = 217
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
2-ci çalışma.
Elə proqram tərtib edin ki, istifadəçidən üçbucağın tərəflərinin uzunluğunu daxil etməsini istəsin və üçbucağın perimetrini çap etsin.
// həll_2_2.cpp
#include <iostream>
int main()
{
int ter1, ter2, ter3, perim;
std::cout<<"Zəhmət olmasa, ücbucağın 1-ci terefinin uzunlugunu daxil edin \n";
std::cin>>ter1;
std::cout<<"Zəhmət olmasa, ücbucağın 2-ci tərəfinin uzunluğunu daxil edin \n";
std::cin>>ter2;
std::cout<<"Zəhmət olmasa, ücbucağın 3-cü tərəfinin uzunlugunu daxil edin \n";
std::cin>>ter3;
perim = ter1 + ter2 + ter3;
std::cout<<"Ücbucağın perimetri = "<<perim<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>prog2.exe
Zəhmət olmasa, ücbucağın 1-ci tərəfinin uzunluğunu daxil edin
23
Zəhmət olmasa, ücbucağın 2-ci tərəfinin uzunluğunu daxil edin
34
Zəhmət olmasa, ücbucağın 3-cü tərəfinin uzunluğunu daxil edin
45
Ücbucağın perimetri = 102
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
§3. Operatorlar
1-ci çalışma.
Elə proqram yazın ki, istifadəçidən 2 ədəd qəbul etsin və bunların ən böyüyünü çap etsin.
// həll_3_1.cpp
#include <iostream>
int main()
{
int dey1, dey2, max;
std::cout<<"Birinci ədədi daxil edin \n";
std::cin>>dey1;
std::cout<<"İkinci ədədi daxil edin \n";
std::cin>>dey2;
if (dey1 > dey2)
max = dey1;
else
max = dey2;
std::cout<<"Bu ədədlərdən ən böyüyü "<<max<<"-dir\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>prog2.exe
Birinci ədədi daxil edin
234
İkinci ədədi daxil edin
457
Bu ədədlərdən ən böyüyü 457-dir
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
2-ci çalışma.
Elə proqram yazın ki, istifadəçidən 3 ədəd qəbul etsin və bunların ən böyüyünü çap etsin.
// həll_3_2.cpp
#include <iostream>
int main()
{
int dey1, dey2, dey3, max;
std::cout<<"Birinci ədədi daxil edin \n";
std::cin>>dey1;
std::cout<<"İkinci ədədi daxil edin \n";
std::cin>>dey2;
std::cout<<"Üçüncü ədədi daxil edin \n";
std::cin>>dey3;
if ((dey1 > dey2) && (dey1 > dey3))
max = dey1;
else
if ((dey2 > dey1) && (dey2 > dey3))
max = dey2;
else
max = dey3;
std::cout<<"Bu ədədlərdən ən böyüyü "<<max<<"-dir \n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>prog2.exe
Birinci ədədi daxil edin
23
İkinci ədədi daxil edin
456
Üçüncü ədədi daxil edin
981
Bu ədədlərdən ən böyüyü 981–dir
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
4-cü çalışma.
Elə proqram qurun ki, istifadəçinin daxil etdiyi ədədin sayında ekranda 'a' simvolu çap etsin.
// həll_3_4.cpp
#include <iostream>
int main()
{
int i,dey;
std::cout<<"Hər hansı ədəd daxil edin \n";
std::cin>>dey;
for (i=0; i<dey; ++i)
std::cout<<'a'<<" ";
std::cout<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>prog2.exe
Hər hansı ədəd daxil edin
6
a a a a a a
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
5-ci çalışma.
Elə proqram qurun ki, istifadəçidən hər hansı ədəd qəbul etsin. Əgər bu ədəd 100-dən böyük olarsa, onda ekranda 100 dənə 'c' simvolu çap etsin, 50 ilə 100 arasında olarsa, ekranda həmin ədəd sayda 'b' simvolu çap etsin, 50-dən kiçik olarsa, həmin ədəd sayda 'a' simvolu çap etsin.
// həll_3_5.cpp
#include <iostream>
int main()
{
int i,dey;
std::cout<<"Hər hansı ədəd daxil edin \n";
std::cin>>dey;
if (dey > 100 )
for (i=0; i<100; ++i)
std::cout<<'c'<<" ";
else
if (dey > 50)
for (i=0; i<dey; ++i)
std::cout<<'b'<<" ";
else
for (i=0; i<dey; ++i)
std::cout<<'a'<<" ";
std::cout<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>prog2.exe
Hər hansı ədəd daxil edin
12
a a a a a a a a a a a a
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
6-cı çalışma.
for dövr operatorundan istifadə etməklə, ekranda sonsuz olaraq "unix" kəlməsini çap edən proqram yazın.
// həll_3_6.cpp
#include <iostream>
int main()
{
int i;
for (i=0; i<1; i=i)
std::cout<<"unix\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>prog2.exe
unix
unix
unix
unix
unix
unix
unix ^C
C:\cpp\prog2\Debug>
7-ci çalışma.
while dövr operatorundan istifadə etməklə, ekranda sonsuz olaraq "linux" kəlməsini çap edən proqram yazın.
// həll_3_7.cpp
#include <iostream>
int main()
{
while(1)
std::cout<<"linux\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>prog2.exe
linux
linux
linux
linux
linux
linux
linux ^C
C:\cpp\prog2\Debug>
§4. Ünvan dəyişənləri
1-ci çalışma.
Ancaq ünvan dəyişənlərindən istifadə etməklə, iki ədədin cəmini hesablayan proqram tərtib edin.
// həll_4_1.cpp
#include <iostream>
int main(int argc, char *argv[])
{
int *dey1, *dey2, *cem;
// ünvan dəyişənləri üçün yaddaşda yer ayırırıq
dey1 = new int;
dey2 = new int;
cəm = new int;
std::cout<<"Birinci ədədi daxil edin \n";
std::cin>>*dey1;
std::cout<<"İkinci ədədi daxil edin \n";
std::cin>>*dey2;
*cem = *dey1 + *dey2;
std::cout<<"Bu iki ədədin cəmi "<<*cem<<"-dir\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>./prog2.exe
Birinci ədədi daxil edin
45
İkinci ədədi daxil edin
234
Bu iki ədədin cəmi 279-dir
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
2-ci çalışma.
Ancaq ünvan dəyişənlərindən istifadə etməklə, iki ədədin maksimumunu hesablayan
proqram tərtib edin.
// həll_4_2.cpp
#include <iostream>
int main(int argc, char *argv[])
{
int *dey1, *dey2, *max;
// ünvan dəyişənləri üçün yaddaşda yer ayırırıq
dey1 = new int;
dey2 = new int;
max = new int;
std::cout<<"Birinci ədədi daxil edin \n";
std::cin>>*dey1;
std::cout<<"İkinci ədədi daxil edin \n";
std::cin>>*dey2;
if (*dey1 > *dey2)
*max = *dey1;
else
*max = *dey2;
std::cout<<"Bu iki ədədin ən böyüyü "<<*max<<"-dir\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>./prog2.exe
Birinci ədədi daxil edin
45
İkinci ədədi daxil edin
234
Bu iki ədədin cəmi 279–dir
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
§5. Funksiyalar
1-ci çalışma.
Funksiyalardan istifadə etməklə, iki ədədin maksimumunu hesablayan proqram tərtib edin.
// həll_5_1.cpp
#include <iostream>
// ən_böyük funksiyasının elanı
int ən_böyük (int x, int y);
int main(int argc, char *argv[])
{
int dey1, dey2, max;
std::cout<<"Birinci ədədi daxil edin \n";
std::cin>>dey1;
std::cout<<"İkinci ədədi daxil edin \n";
std::cin>>dey2;
max = ən_böyük(dey1, dey2);
std::cout<<"Bu iki ədədin ən böyüyü "<<max<<"-dir \n";
}
// ən_böyük funksiyasının proqram kodu
int en_boyuk ( int dey1, int dey2)
{
if (dey1 > dey2)
return dey1;
else
return dey2;
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
Birinci ədədi daxil edin
5
İkinci ədədi daxil edin
67
Bu iki ədədin ən böyüyü 67-dir
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
2-ci çalışma.
Elə funksiya qurun ki, istifadəçidən 10 tam ədəd daxil etməsini istəsin və onların cəmini qaytarsın. Bu funksiyadan istifadə etməklə, proqram qurun və onu icra edin.
// həll_5_2.cpp
#include <iostream>
// cəm funksiyasının elanı
int cəm (void);
int main(int argc, char *argv[])
{
int dey1, dey2 ;
dey2 = cəm();
std::cout<<"Daxil etdiyiniz ədədlərin cəmi "<<dey2<<"-dir \n";
}
// cəm funksiyasının proqram kodu
int cəm ( void)
{
int i, x, y;
// y-dən ümumi cəmi yadda saxlamaq üçün istifadə edəcəyik
y=0;
for (i=1; i<=10; ++i)
{
std::cout<<i<<"-ci ədədi daxil edin\n";
std::cin>>x;
y = y + x;
}
return y;
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
1-ci ədədi daxil edin
4
2-ci ədədi daxil edin
56
3-cü ədədi daxil edin
67
4-cü ədədi daxil edin
23
5-ci ədədi daxil edin
45
6-cı ədədi daxil edin
67
7-ci ədədi daxil edin
2
8-ci ədədi daxil edin
6
9-cu ədədi daxil edin
78
10-cu ədədi daxil edin
123
Daxil etdiyiniz ədədlərin cəmi 471-dir
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
3-cü çalışma.
kvadrat adlı elə funksiya tərtib edin ki, ekranda “*” simvollarından ibarət, tərəflərinin uzunluğu 10 olan kvadrat çəksin (içini doldurmaqla). kvadrat funksiyasından istfadə etməklə proqram qurub icra edin.
// həll_5_3.cpp
#include <iostream>
// kvadrat funksiyasının elanı
void kvadrat (void);
int main(int argc, char *argv[])
{
kvadrat();
}
// kvadrat funksiyasının proqram kodu
void kvadrat ( void)
{
int i, j;
for(i=0; i <10; ++i){
for(j=0; j <10; ++j)
std::cout<<"* ";
std::cout<<"\n";
}
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
4-cü çalışma.
Çalışma 3-dəki kvadrat funksiyasını elə dəyişin ki, tərəflərinin sayı və təşkil olunduğu simvol bu funksiyaya parametr kimi ötürülsün. Bu funksiyadan istifadə etməklə, elə proqram qurun ki, istifadəçidən hər hansı simvol və ədəd daxil etməsini istəsin, daha sonra isə, ekranda həmin parametrlərə uyğun kvadrat çəksin.
// həll_5_4.cpp
#include <iostream>
// kvadrat funksiyasının elanı
void kvadrat (int , char);
int main(int argc, char *argv[])
{
int x;
char c;
std::cout<<"kvadratın tərəfinin uzunluğunu və \n"
<<" rəng simvolunu daxil edin \n";
std::cin>>x>>c;
kvadrat(x,c);
}
/* kvadrat funksiyasının proqram kodu */
void kvadrat (int tərəf, char rəng)
{
int i, j;
for(i=0; i<tərəf; ++i){
for(j=0; j<tərəf; ++j)
std::cout<<reng<<" ";
std::cout<<"\n";
}
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>./prog2.exe
kvadratin tərəfinin uzunluğunu və
rəng simvolunu daxil edin
7 @
@ @ @ @ @ @ @
@ @ @ @ @ @ @
@ @ @ @ @ @ @
@ @ @ @ @ @ @
@ @ @ @ @ @ @
@ @ @ @ @ @ @
@ @ @ @ @ @ @
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
5-ci çalışma.
Çalışma 4-dəki funksiyanı elə dəyişin ki, istifadəçi kvadratın içinin rəngləndiyi simvolu da daxil edə bilsin. Bu funksiyadan istifadə etməklə proqram tərtib edib, icra edin.
// həll_5_5.cpp
#include <iostream>
// kvadrat funksiyasının elanı
void kvadrat (int , char, char);
int main(int argc, char *argv[])
{
int x;
char c,d;
std::cout<<"kvadratın tərəfinin uzunluğunu, tərəfinin və\n"
<<" daxilinin rəng simvollarını daxil edin \n";
std::cin>>x>>c>>d;
kvadrat(x,c,d);
}
// kvadrat funksiyasının proqram kodu
void kvadrat (int tərəf, char t_reng, char d_rəng)
{
/* burada bir balaca izaha ehtiyac var.
çəkdiyimiz fiqurun kənarları t_rəng simvolu, daxili isə
d_rəng simvolu ile rənglənməlidir. */
int i, j;
/* tutaq ki, tərəfin uzunluğu 5, tərəfin rəng simvolu #,
daxilin rəng simvolu isə @-dir.
Onda aşagıdakı kod ekranda
# # # # #
çap edəcək */
for(j=0; j<tərəf; ++j)
std::cout<<t_rəng<<" ";
std::cout<<"\n";
/* aşagıdakı kod 5-2=3 dəfə təkrar olunacaq
və hər dəfə təkrar olunanda ekranda əvvəlcə #,
daha sonra 5-2=3 sayda @, daha sonra isə #
simvolunu çap edəcək. aşağıdakı kimi:
# @ @ @ #
3 dəfə təkrar olunanda isə ekranda bu şəkil alınır
# @ @ @ #
# @ @ @ #
# @ @ @ #
*/
for(i=1; i<tərəf-1; ++i)
{
std::cout<<t_reng<<" ";
for(j=1; j<tərəf-1; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
/* sonda yuxarıda baxdığımız kod
fiquru tamamlamaq üçün təkrar olunur
# # # # #
*/
for(j=0; j<teref; ++j)
std::cout<<t_reng<<" ";
std::cout<<"\n";
/*
nəticədə ekranda tərəfinin uzunluğu 5, kənarları #,
daxili isə @ simvolu ilə rənglənmiş kvadrat alınır.
aşağıdakı kimi.
# # # # #
# @ @ @ #
# @ @ @ #
# @ @ @ #
# # # # #
*/
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./5_5
kvadratın tərəfinin uzunluğunu, tərəfinin və
daxilinin rəng simvollarını daxil edin
7 # ~
# # # # # # #
# ~ ~ ~ ~ ~ #
# ~ ~ ~ ~ ~ #
# ~ ~ ~ ~ ~ #
# ~ ~ ~ ~ ~ #
# ~ ~ ~ ~ ~ #
# # # # # # #
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
6-cı çalışma.
Çalışma 5-in tələblərini yerinə yetirən romb funksiyası qurun, hansı ki, ekranda romb çəksin. Bu funksiyadan istifadə edib proqram tərtib edin və icra edin.
// həll_5_6.cpp
#include <iostream>
// romb funksiyasının elanı
void romb (int , char, char);
int main(int argc, char *argv[])
{
int x;
char c,d;
std::cout<<"rombun tərəfinin uzunluğunu, tərəfinin və\n"
<<"daxilinin rəng simvollarını daxil edin \n";
std::cin>>x>>c>>d;
romb(x,c,d);
}
// romb funksiyasinin proqram kodu
void romb (int tərəf, char t_rəng, char d_rəng)
{
/*
əgər istifadəçi 6 , =, + parametrlərini daxil etsə,
proqram ekranda aşagıdakı kimi romb çəkməlidir.
=
= + =
= + + + =
= + + + + + =
= + + + + + + + =
= + + + + + + + + + =
= + + + + + + + =
= + + + + + =
= + + + =
= + =
=
*/
int i, j, k;
// üst hissə
for(j=0; j<tərəf; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
for(i=1; i<tərəf; ++i){
for( j=0; j<tərəf-i; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
for (j=tərəf - i + 1; j<tərəf + i; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
// alt hissə
for(i=2; i<tərəf; ++i){
for( j=0; j<i; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
for (j=i ; j<2*tərəf - i - 1; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
for(j=0; j<tərəf; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
rombun tərəfinin uzunluğunu, tərəfinin və
daxilinin rəng simvollarını daxil edin
6 + -
+
+ - +
+ - - - +
+ - - - - - +
+ - - - - - - - +
+ - - - - - - - - - +
+ - - - - - - - +
+ - - - - - +
+ - - - +
+ - +
+
C:\cpp\prog2\Debug>
7-ci çalışma.
Çalışma 5-in tələblərini yerinə yetirən üçbucaq funksiyası qurun, hansı ki, ekranda üçbucaq çəksin. Bu funksiyadan istifadə edib proqram tərtib edin və icra edin.
// həll_5_7.cpp
#include <iostream>
// üçbucaq funksiyasının elanı
void üçbucaq (int , char, char);
int main(int argc, char *argv[])
{
int x;
char c,d;
std::cout<<"üçbucağın tərəfinin uzunluğunu, tərəfinin və\n"
<<"daxilinin rəng simvollarını daxil edin \n";
std::cin>>x>>c>>d;
üçbucaq(x,c,d);
}
// üçbucaq funksiyasının proqram kodu
void üçbucaq (int tərəf, char t_rəng, char d_rəng)
{
/*
əgər istifadəçi 5 , &, = parametrlərini daxil etsə,
proqram ekranda aşağıdakı kimi üçbucaq cəkməlidir.
=
= + =
= + + + =
= + + + + + =
= = = = = = = = =
*/
int i, j, k;
/* üst hissə */
for(j=0; j<tərəf; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
for(i=1; i<tərəf - 1; ++i){
for( j=0; j<tərəf-i; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
for (j=teref - i + 1; j<tərəf + i; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
// alt hissə
std::cout<<" ";
for(i=1; i<2*tərəf; ++i)
std::cout<<t_rəng<<" ";
std::cout<<"\n";
std::cout<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
üçbucağın tərəfinin uzunluğunu, tərəfinin və
daxilinin rəng simvollarını daxil edin
7 u o
u
u o u
u o o o u
u o o o o o u
u o o o o o o o u
u o o o o o o o o o u
u u u u u u u u u u u u u
C:\cpp\prog2\Debug>
8-ci çalışma.
Kvadrat, romb və ücbucaq funksiyalarından istifadə etməklə, elə proqram tərtib edin ki, əvvəl istifadəçidən tərəfin uzunluğunu, tərəfin və fiqurun daxilini rəngləmək üçün simvolları daxil etməsini istəsin. Daha sonra, istifadəçidən 1, 2 və 3 rəqəmlərindən birini daxil etməyini istəsin. Əgər istifadəçi 1 daxil edərsə, onda ekranda kvadrat, 2 daxil edərsə, romb, 3 daxil edərsə, üçbucaq çəksin.
// həll_5_8.cpp
#include <iostream>
void kvadrat (int , char, char);
void romb (int , char, char);
void üçbucaq (int , char, char);
int main(int argc, char *argv[])
{
int x,k;
char c,d;
std::cout<<"Fiqurun tərəfinin uzunlugunu, tərəfinin daxilinin \n"
<<"və rəng simvollarını daxil edin \n";
std::cin>>x>>c>>d;
std::cout<<"Ekranda çəkmək istədiyiniz fiqurun nömrəsini daxil edin\n";
std::cout<<"Üçbucaq üçün 1, romb üçün 2, kvadrat üçün 3\n"
<<" rəqəmini daxil edin\n";
std::cin>>k;
switch(k){
case 1:
üçbucaq(x,c,d);
break;
case 2:
romb(x,c,d);
break;
case 3:
kvadrat(x,c,d);
}
}
/* kvadrat funksiyasının proqram kodu */
void kvadrat (int tərəf, char t_rəng, char d_rəng) {
/* burada bir balaca izaha ehtiyac var.
çəkdiyimiz fiqurun kənarları t_rəng simvolu,
daxili isə, d_rəng simvolu ilə rənglənməlidir.
*/
int i, j;
/* tutaq ki, tərəfin uzunluğu 5, tərəfin rəng simvolu #,
daxilin rəng simvolu isə @-dir.
Onda aşağıdakı kod ekranda
# # # # #
çap ediləcək
*/
for(j=0; j<tərəf; ++j)
std::cout<<t_rəng<<" ";
std::cout<<"\n";
/* aşağıdakı kod 5-2=3 dəfə təkrar olunacaq.
və hər dəfə təkrar olunanda ekranda əvvəlcə #,
daha sonra 5-2=3 sayda @, daha sonra isə #
simvolunu çap edəcək. aşağıdakı kimi:
# @ @ @ #
3 dəfə təkrar olunanda isə, ekranda bu şəkil alınır
# @ @ @ #
# @ @ @ #
# @ @ @ #
*/
for(i=1; i<tərəf-1; ++i){
std::cout<<t_rəng<<" ";
for(j=1; j<tərəf-1; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
/* sonda yuxarıda baxdığımız kod
fiquru tamamlamaq üçün təkrar olunur
# # # # #
*/
for(j=0; j<tərəf; ++j)
std::cout<<t_rəng<<" ";
std::cout<<"\n";
/*
nəticədə ekranda tərəfinin uzunluğu 5, kənarları #,
daxili isə @ simvolu ilə rənglənmiş kvadrat alınır.
aşağıdakı kimi.
# # # # #
# @ @ @ #
# @ @ @ #
# @ @ @ #
# # # # #
*/
}
/*===================================================*/
/* romb funksiyasının proqram kodu */
void romb (int tərəf, char t_rəng, char d_rəng)
{
/*
əgər istifadəçi 6, =, + parametrlərini daxil etsə,
proqram ekranda aşağıdakı kimi romb çəkməlidir.
=
= + =
= + + + =
= + + + + + =
= + + + + + + + =
= + + + + + + + + + =
= + + + + + + + =
= + + + + + =
= + + + =
= + =
=
*/
int i, j, k;
/* üst hissə */
for(j=0; j<tərəf; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
for(i=1; i<tərəf; ++i){
for( j=0; j<tərəf-i; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
for (j=tərəf - i + 1; j<tərəf + i; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
/* alt hissə */
for(i=2; i<tərəf; ++i){
for( j=0; j<i; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
for (j=i ; j<2*tərəf - i - 1; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
for(j=0; j<tərəf; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
/*===============================*/
/* üçbucaq funksiyasının proqram kodu */
void üçbucaq (int tərəf, char t_rəng, char d_rəng)
{
/*
əgər istifadəçi 5, +, = parametrlərini daxil etsə,
proqram ekranda aşagıdakı kimi romb çəkməlidir.
=
= + =
= + + + =
= + + + + + =
= = = = = = = = =
*/
int i, j, k;
/* ust hissə */
for(j=0; j<tərəf; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
for(i=1; i<tərəf - 1; ++i){
for( j=0; j<tərəf-i; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
for (j=tərəf - i + 1; j<tərəf + i; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
/* alt hissə */
std::cout<<" ";
for(i=1; i<2*tərəf; ++i)
std::cout<<t_rəng<<" ";
std::cout<<"\n";
std::cout<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
Fiqurun tərəfinin uzunluğunu, tərəfinin
və daxilinin rəng simvollarını daxil edin
9 – k
Ekranda çəkmək istədiyiniz fiqurun nömrəsini daxil edin
Üçbucaq üçün 1, romb üçün 2, kvadrat üçün 3
rəqəmini daxil edin
3
- - - - - - - - -
- k k k k k k k -
- k k k k k k k -
- k k k k k k k -
- k k k k k k k -
- k k k k k k k -
- k k k k k k k -
- k k k k k k k -
- - - - - - - - -
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
9-cu çalışma.
Çalışma 8-i elə dəyişin ki, proqram istifadəçidən fiqurun tərəfinin uzunluğunu və rəng simvolları daxil etdikdən sonra, istədiyi fiqurun çəkilməsi üçün 1, 2, 3 simvollarından birini daxil etməsini istəsin. Bu prosesi istifadəçi 0 rəqəmi daxil edənə kimi təkrar eləsin. Bu zaman proqramın istifadəçidən tərəfin uzunluğu və rəng simvollarını qəbul edən hissəsini də ayrı bir funksiya kimi tərtib edin.
// həll_5_9.cpp
#include <iostream>
void kvadrat (int , char, char);
void romb (int , char, char);
void üçbucaq (int , char, char);
void hazırlıq_işləri( int *);
void yerinə_yetir(int);
/* main - proqramın əsas funksiyası */
int main(int argc, char *argv[])
{
int k;
hazırlıq_işləri(&k);
/* gördüyünüz kimi, mən daxil etdiyim variantda
ilkin_hazırlıq funksiyası 2 dəfə cağırılıb.
məncə bu optimal variant deyil.
əgər daha lokanik variantını tərtib edə bilərsinizsə,
öz həllinizi progbits.az saytına yerləşdirməyinizi xahiş edirəm.
*/
while (k!=0){
yerinə_yetir(k);
hazırlıq_işləri(&k);
}
}
/*=========================================================*/
/* kvadrat funksiyasının proqram kodu */
void kvadrat (int tərəf, char t_rəng, char d_rəng)
{
/* burada bir balaca izaha ehtiyac var.
çəkdiyimiz fiqurun kənarları t_rəng simvolu, daxili isə,
d_rəng simvolu ilə rənglənməlidir. */
int i, j;
/* tutaq ki, tərəfin uzunluğu 5, tərəfin rəng simvolu #, daxilin rəng
simvolu isə @-dır. Onda aşağıdakı kod ekranda
# # # # #
çap ediləcək
*/
for(j=0; j<tərəf; ++j)
std::cout<<t_rəng<<" ";
std::cout<<"\n";
/* aşağıdakı kod 5-2=3 dəfə təkrar olunacaq.
və hər dəfə təkrar olunanda ekranda əvvəlcə #,
daha sonra 5-2=3 sayda @, daha sonra isə, #
simvolunu çap edəcək. aşağıdakı kimi:
# @ @ @ #
3 dəfə təkrar olunanda isə, ekranda bu şəkil alınır
# @ @ @ #
# @ @ @ #
# @ @ @ #
*/
for(i=1; i<tərəf-1; ++i){
std::cout<<t_rəng<<" ";
for(j=1; j<tərəf-1; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
/* sonda yuxarıda baxdığımız kod, fiquru tamalamaq üçün təkrar olunur
# # # # #
*/
for(j=0; j<tərəf; ++j)
std::cout<<t_rəng<<" ";
std::cout<<"\n";
/*
nəticədə ekranda tərəfinin uzunluğu 5, kənarları #,
daxili isə @ simvolu ilə rənglənmiş kvadrat alınır.
aşağıdakı kimi.
# # # # #
# @ @ @ #
# @ @ @ #
# @ @ @ #
# # # # #
*/
}
/* romb funksiyasının proqram kodu */
void romb (int tərəf, char t_rəng, char d_rəng)
{
/* əgər istifadəçi 6, =, + parametrlerini daxil etsə, proqram ekranda
aşağıdakı kimi romb çəkməlidir.
=
= + =
= + + + =
= + + + + + =
= + + + + + + + =
= + + + + + + + + + =
= + + + + + + + =
= + + + + + =
= + + + =
= + =
=
*/
int i, j, k;
/* üst hissə */
for(j=0; j<tərəf; ++j)
std::cout<<" ";
std::cout<<t_reng<<" ";
std::cout<<"\n";
for(i=1; i<tərəf; ++i){
for( j=0; j<tərəf-i; ++j)
std::cout<<" ";
std::cout<<t_reng<<" ";
for (j=tərəf - i + 1; j<tərəf + i; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
/* alt hissə */
for(i=2; i<tərəf; ++i){
for( j=0; j<i; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
for (j=i ; j<2*tərəf - i - 1; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
for(j=0; j<tərəf; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
/* üçbucaq funksiyasının proqram kodu */
void üçbucaq (int tərəf, char t_rəng, char d_rəng)
{
/* əgər istifadəçi 5, &, = parametrlərini daxil etsə, proqram ekranda
aşağıdakı kimi romb çəkməlidir.
=
= + =
= + + + =
= + + + + + =
= = = = = = = = =
*/
int i, j, k;
/* üst hissə */
for(j=0; j<tərəf; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
for(i=1; i<tərəf - 1; ++i){
for( j=0; j<tərəf-i; ++j)
std::cout<<" ";
std::cout<<t_rəng<<" ";
for (j=tərəf - i + 1; j<tərəf + i; ++j)
std::cout<<d_rəng<<" ";
std::cout<<t_rəng<<" ";
std::cout<<"\n";
}
/* alt hissə */
std::cout<<" ";
for(i=1; i<2*tərəf; ++i)
std::cout<<t_rəng<<" ";
std::cout<<"\n";
std::cout<<"\n";
}
/*=================================================================*/
void hazırlıq_işləri( int *k)
{
std::cout<<"Ekranda çəkmək istədiyiniz fiqurun nömrəsini daxil edin\n";
std::cout<<"Üçbucaq üçün 1, romb üçün 2, kvadrat üçün 3 rəqəmini daxil edin\n";
std::cout<<"Cıxış üçün 0 rəqəmini daxil edin\n";
std::cin>>*k;
}
/*=================================================================*/
void yerinə_yetir(int k)
{
int x;
char c,d;
std::cout<<"Fiqurun tərəfinin uzunluğunu, tərəfinin və daxilinin rəng simvollarını daxil edin \n";
std::cin>>x>>c>>d;
switch(k){
case 1:
üçbucaq(x,c,d);
break;
case 2:
romb(x,c,d);
break;
case 3:
kvadrat(x,c,d);
}
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
Ekranda çəkmək istədiyiniz fiqurun nömrəsini daxil edin
Üçbucaq üçün 1, romb üçün 2, kvadrat üçün 3 rəqəmini daxil edin
Cıxış üçün 0 rəqəmini daxil edin
1
Fiqurun tərəfinin uzunluğunu, tərəfinin və daxilinin rəng simvollarını daxil edin
5 y u
y
y u y
y u u u y
y u u u u u y
y y y y y y y y y
Ekranda çəkmək istədiyiniz fiqurun nömrəsini daxil edin
Üçbucaq üçün 1, romb üçün 2, kvadrat üçün 3 rəqəmini daxil edin
Cıxış üçün 0 rəqəmini daxil edin
3
Fiqurun tərəfinin uzunluğunu, tərəfinin və daxilinin rəng simvollarını daxil edin
7 * -
* * * * * * *
* - - - - - *
* - - - - - *
* - - - - - *
* - - - - - *
* - - - - - *
* * * * * * *
Ekranda çəkmək istədiyiniz fiqurun nömrəsini daxil edin
Üçbucaq üçün 1, romb üçün 2, kvadrat üçün 3 rəqəmini daxil edin
Cıxış üçün 0 rəqəmini daxil edin
0
C:\cpp\prog2\Debug> C:\cpp\prog2\Debug>
§6. Cərgələr
1-ci çalışma.
max proqramını ele dəyişin ki, istifadəçinin daxil etdiyi ədədlərin içində ən kiçiyini tapsın.
// həll_6_1.cpp
#include <iostream>
int main(int argc, char *argv[])
{
/* ən çoxu 100 elementə hesablanıb */
int i, x[100], say, min;
std::cout<<"100-dən kiçik hər hansı bir ədəd daxil edin > 0 \n";
std::cin>>say;
std::cout<<say<<" sayda ədəd daxil edin\n";
for (i=0; i<say; i++ )
std::cin>>x[i];
min = x[0];
for (i=0; i<say; i++)
if (x[i] < min) min = x[i];
std::cout<<"sizin daxil etdiyiniz ədədlərin içində ən kiçiyi "<<min<<"-dir\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
100-dən kiçik hər hansı bir ədəd daxil edin > 0
7
7 sayda ədəd daxil edin
1 2 5 34 56 890 5
sizin daxil etdiyiniz ədədlərin içində ən kiçiyi 1–dir
C:\cpp\prog2\Debug>
4-cü çalışma.
Elə proqram qurun ki, istifadəçinin daxil etdiyi ədədləri artan sıra ilə düzsün.
// həll_6_4.cpp
#include <iostream>
int main(int argc, char *argv[])
{
/* ən çoxu 100 elementə hesablanıb */
int i, j, x[100], say, min, mövqe, keçid;
std::cout<<"100-dən kiçik hər hansı bir ədəd daxil edin > 0 \n";
std::cin>>say;
std::cout<<say<<" sayda ədəd daxil edin \n";
for (i=0; i<say; i++ )
std::cin>>x[i];
for (i=0; i<say; ++i){
min = x[i];
movqe = i;
for (j=i; j<say; ++j)
if (x[j] < min){
min = x[j];
mövqe = j;
}
keçid = x[i];
x[i] = min;
x[mövqe] = keçid;
}
for (i=0; i<say; i++)
std::cout<<x[i]<<" ";
std::cout<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
100-dən kiçik hər hansı bir ədəd daxil edin > 0
7
7 sayda ədəd daxil edin
12 3 56 678 0 90 345
0 3 12 56 90 345 678
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
6-cı çalışma.
Elə funksiya tərtib edin ki, verilmiş cərgənin elementləri arasında ən böyüyünü tapsın. Bu funksiyadan istifadə edərək proqram tərtib edin ki, istifadəçidən əvvəl say, daha sonra bu say qədər hər hansı ədəd daxil etməsini istəsin və bu ədədlərin ən böyüyünü çap etsin.
// həll_6_6.cpp
#include <iostream>
int max(int *, int);
int main(int argc, char *argv[])
{
/* ən çoxu 100 elementə hesablanıb */
int i, x[100], say, max_ədəd;
std::cout<<"100-dən kiçik hər hansı bir ədəd daxil edin > 0 \n";
std::cin>>say;
std::cout<<say<<" sayda ədəd daxil edin \n";
for (i=0; i<say; i++ )
std::cin>>x[i];
max_eded = max(x,say);
std::cout<<"sizin daxil etdiyiniz ədədlərin içində ən böyüyü "<<max_eded<<"-dir\n";
}
/*==================================================*/
int max(int *x, int say)
{
int i , max;
max = x[0];
for (i=0; i<say; i++)
if (x[i] < max) max = x[i];
return max;
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
100-dən kiçik hər hansı bir ədəd daxil edin > 0
6
6 sayda ədəd daxil edin
1 34 567 0 34 23
sizin daxil etdiyiniz ədədlərin içində ən böyüyü 567–dir
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
7-ci çalışma.
6-cı proqramı elə dəyişin ki, istifadəçi say olaraq 0 daxil edənə kimi proqram təkrar olunsun.
Bax: çalışma 5_9-a.
§7. Sətirlər
1-ci çalışma.
Elə proqram qurun ki, istifadəçinin daxil etdiyi sətrin 5-ci simvolu ilə 15-ci simvolu arasında qalan hissəsini çap etsin. Əgər sətrin uzunluğu 20-dən kiçik olarsa, onda ekranda bu barədə məlumat çap etsin.
// həll_7_1.cpp
#include <iostream>
#include <string.h>
int main(int argc, char *argv[])
{
/* 1024 elementdən ibarət sətir elan edirik */
char setir[1024];
std::cout<<"Hər hansı sətir daxil edin\n";
std::cin>>sətir;
if (strlen(sətir) < 20)
std::cout<<"Sizin daxil etdiyiniz sətrin uzunluğu 20-dən kiçikdir \n";
else
{
char *p, *q, bufer[20];
memset(bufer, 0 ,20);
/* p-ni sürüşdürürük 5-ci simvolun uzərinə */
p = setir + 5;
/* 5-ci simvoldan başlayaraq növbəti 9 simvolu buferə köçürürük */
strncpy(bufer,p,9);
std::cout<<"5-ci simvol ilə 15-ci simvol arasında olan hissə "
<<bufer<<"-dir\n";
}
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
Hər hansı sətir daxil edin
Bir zərrənin işığına milyonlar şərik.
5-ci simvol ilə 15-ci simvol arasında olan hissə "errenin i"–dir
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
2-ci çalışma.
Elə proqram tərtib edin ki, istifadəçidən 6 sətir qəbul etsin və bu sətirləri ardıcıl birləşdirərək tam sətir kimi çap etsin.
// həll_7_2.cpp
#include <iostream>
#include <string.h>
int main(int argc, char *argv[])
{
char sətir[1024] , bufer[20];
int i,k;
memset(sətir,0,1024);
memset(bufer,0,10);
std::cout<<"Uzunluğu 20-dən kiçik olan 6 sətir daxil edin \n";
for(i=0; i<6; ++i){
std::cin>>bufer;
/* bufer-i sətir-e elave edirik */
strcat(sətir, bufer);
/* buferi yeniliyirik */
memset(bufer,0,20);
}
std::cout<<"\n"<<setir<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
Uzunluğu 20-dən kiçik olan 6 sətir daxil edin
aaa
bbb
ccccc
dddddd
ffffffffff
ggggggg
aaabbbcccccddddddffffffffffggggggg
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
3-cü çalışma.
Elə proqram tərtib edin ki, istifadəçidən 5 sətir qəbul etsin və bu sətirləri daxil olma sırasının əksi ardıcıllığında birləşdirərək tam sətir kimi çap etsin.
// həll_7_3.cpp
#include <iostream>
#include <string.h>
/* bu proqramda biz elementləri sətir olan cərgələrdən
istifadə edəcəyik */
int main(int argc, char *argv[])
{
char *sətirlər[5], bufer[20], *sətir, bütöv_sətir[1024];
memset(bütöv_sətir,0,1024);
int i,k;
std::cout<<"Uzunluğu 20-dən kiçik olan 5 sətir daxil edin\n";
for(i=0; i<5; ++i){
std::cin>>bufer;
k = strlen(bufer);
sətirlər[i] = new char[k];
strncpy(sətirlər[i],bufer,k);
}
for (i=4; i>=0; --i)
strcat(butov_sətir,sətirlər[i]);
std::cout<<"\n"<<butov_setir<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>./prog2.exe
Uzunluğu 20-dən kiçik olan 5 sətir daxil edin
qqq
wwww
eeee
rrrrr
tttt
ttttrrrrreeeewwwwqqq
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
§8. Strukt tiplər
1-ci çalışma.
Aşağıdakı işləri görən proqram tərtib edib icra edin.
int tipli x və 30 simvollu sətir tipli soz dəyişənlərindən ibarət olan str adlı yeni struct tipi yaradın. Bu yeni yaratdığınız tipdən str_dey adlı dəyişən elan edin. Bu dəyişənin x və soz üzvlərinə müvafiq olaraq 10 və "proqramlashdirma" sözlərini mənimsədin. str_dey dəyişəninin üzvlərinin qiymətlərini ekranda çap edin.
// həll_8_1.cpp
#include <iostream>
#include <string.h>
struct str
{
int x;
char söz[30];
};
int main(int argc, char *argv[])
{
str str_dəy;
str_dəy.x=10;
strcpy(str_dəy.söz,"proqramlaşdırma");
std::cout<<"str_dəy-in hədləri \nx - "
<<str_dey.x<<"\nsoz - "<<str_dey.söz<<"\n";
return 0;
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
str_dəy-in hədləri
x – 50
soz – proqramlaşdırma
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
2-ci çalışma.
Yuxarıdakı məsələdə str tipindən ünvan tipli str_gst dəyişəni elan edin və məsələnin tələblərin yerinə yetirin.
// həll_8_2.cpp
#include <iostream>
#include <string.h>
struct str
{
int x;
char söz[30];
};
int main(int argc, char *argv[])
{
str *str_dəy;
str_dəy =new str;
str_dəy->x=50;
memset(str_dəy->soz,0,30);
strcpy(str_dey->soz,"proqramlaşdırma");
std::cout<<"str_dəy-in hədləri \nx - "
<<str_dəy->x<<"\nsoz - "<<str_dey->soz<<"\n";
return 0;
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>./prog2.exe
str_dəy-in hədləri
x – 50
söz – proqramlaşdırma
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
3-cü çalışma.
1-ci çalışmada daxil olunan str tipli 5 elementdən ibarət strler cərgəsi elan edin. Bu cərgənin hər bir elementinin üzvlərinə istifadəçi tərəfindən daxil olunan qiymətlər mənimsədin. Daha sonra bu qiymətləri ekranda çap edin.
// həll_8_3.cpp
#include <iostream>
#include <string.h>
struct str
{
int x;
char söz[30];
};
int main(int argc, char *argv[])
{
str strler[5];
int i;
for(i=1; i<=5; ++i){
std::cout<<"strlerin "<<i
<<"-ci elementinin x ve söz hədlərini daxil edin\n";
std::cin>>strler[i].x>>strler[i].söz;
}
std::cout<<"strler-in elementlərinin x və söz hədləri\n";
for(i=1; i<=5; ++i)
std::cout<<"x - "<<strler[i].x
<<"\nsöz - "<<strler[i].soz<<"\n";
return 0;
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>./prog2.exe
strlerin 1-ci elementinin x və söz hədlərini daxil edin
4 fərid
strlerin 2-ci elementinin x və söz hədlərini daxil edin
6 ramin
strlerin 3-ci elementinin x və söz hədlərini daxil edin
7 elif
strlerin 4-ci elementinin x və söz hədlərini daxil edin
56 mithat
strlerin 5-ci elementinin x və söz hədlərini daxil edin
23 taleh
strler-in elementlerinin x və söz hədləri
x - 4, söz - fərid
x - 6, söz - ramin
x - 7, söz - elif
x - 56, söz - mithat
x - 5, söz – taleh
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
4-cü çalışma.
Çalışma 3-ü funksiyalardan istifadə etməklə həll edin. Bu məqsədlə 2 funksiya tərtib edin, daxil_et və cap_et. Müvafiq olaraq daxil_et funksiyası istifadəçidən məlumatları oxuyub, strler cərgəsinin elementlərinə mənimsədəcək, cap_et isə strler cərgəsinin elementlərinin qiymətlərini çap edəcək.
// həll_8_4.cpp
#include <iostream>
#include <string.h>
struct str
{
int x;
char söz[30];
};
void daxil_et( str strler[], int k);
void cap_et( str strler[], int k);
int main(int argc, char *argv[])
{
str strler[6];
int k=5;
daxil_et(strler,k);
çap_et(strler,k);
return 0;
}
/*==================================================*/
void daxil_et( str strler[], int k)
{
int i;
for(i=1; i<=k; ++i){
std::cout<<"strlerin "<<i
<<"-ci elementinin x və söz hədlərini daxil edin\n";
std::cin>>strler[i].x>>strler[i].söz;
}
}
/*==================================================*/
void çap_et(struct str strler[], int k)
{
int i;
std::cout<<"strler-in elementlərinin x və söz hədləri\n";
for(i=1; i<=k; ++i)
std::cout<<"x - "<<strler[i].x<<"\nsöz - "<<strler[i].soz<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
strlerin 1-ci elementinin x və söz hədlərini daxil edin
1 alma
strlerin 2-ci elementinin x və söz hədlərini daxil edin
2 heyva
strlerin 3-ci elementinin x və söz hədlərini daxil edin
3 nar
strlerin 4-ci elementinin x və söz hədlərini daxil edin
4 gilas
strlerin 5-ci elementinin x və söz hədlərini daxil edin
5 erik
strler-in elementlərinin x və söz hədləri
x - 1, söz - alma
x - 2, söz - heyva
x - 3, söz - nar
x - 4, söz - gilas
x - 5, söz – ərik
C:\cpp\prog2\Debug>
5-ci çalışma
Funksiyalardan istifadə etməklə elə proqram qurun ki, çalışma 1-də daxil olunan str tipli 5 elementdən ibarət strler cərgəsi elan etsin. daxil_et funksiyası vasitəsilə istifadəçidən oxunan qiymətləri bu cərgənin elementlərinə mənimsətsin. Daha sonra, max_el funksiyası tərtib edin, hansı ki, strler cərgəsinin elementləri arasında x-i ən böyük olanın qiymətlerini (x və söz) çap etsin.
// həll_8_5.cpp
#include <iostream>
#include <string.h>
struct str
{
int x;
char söz[30];
};
void daxil_et( str strler[], int k);
str max_el( str strler[], int k);
int main(int argc, char *argv[])
{
str strler[6], elem;
int k=6;
daxil_et(strler,k);
elem = max_el(strler,k);
std::cout<<"max x, söz: "<<elem.x<<" "<<elem.söz<<"\n";
return 0;
}
/*==================================================*/
void daxil_et( str strler[], int k)
{
int i;
for(i=1; i<=k; ++i){
std::cout<<"strlerin "<<i
<<"-ci elementinin x və söz hədlərini daxil edin\n";
std::cin>>strler[i].x>>strler[i].söz;
}
}
/*==================================================*/
struct str max_el(struct str strler[], int k)
{
int i,j=0,dey=strler[0].x;
for(i=1; i<k; ++i){
if (strler[i].x > dəy ){
j = i;
dəy = strler[i].x;
}
}
return strler[j];
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>./prog2.exe
strlerin 1-ci elementinin x və söz hədlərini daxil edin
45 baki
strlerin 2-ci elementinin x və söz hədlərini daxil edin
34 london
strlerin 3-ci elementinin x və söz hədlərini daxil edin
456 texas
strlerin 4-ci elementinin x və söz hədlərini daxil edin
78 istanbul
strlerin 5-ci elementinin x və soz hədlərini daxil edin
12 ankara
max x, söz: 456, texas
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
§9. Siyahılar
1-ci çalışma.
Proqram 2 nümunəsini elə dəyişin ki, siyahının obyektləri özündə int tipli x həddindən əlavə char tipli ad[20] həddi də saxlasın. Müvafiq olaraq, siyahi yaratma və cap_et funksiyalarında lazımi dəyişikliyi edin. Proqramı kompilyasiya və icra edin, siyahi yaradin, onun elementlərini çap edin.
// həll_9_1.cpp
#include <iostream>
#include <string.h>
struct syh_el
{
int x;
char ad[20];
syh_el *növb_el;};
syh_el *siyahı_yarat(syh_el *syh, int elem_say);
void siyahini_çap_et( syh_el *);
int main(int argc, char *argv[])
{
/* istifadə edəcəyimiz dəyişənləri elan edirik */
syh_el *mənim_syh;
/* siyahının boş olduğunu bildirmək üçün */
mənim_syh = NULL;
int say;
std::cout<<"Siyahının elementlərinin sayını daxil edin \n";
std::cin>>say;
mənim_syh=siyahı_yarat(mənim_syh,say);
siyahını_çap_et(mənim_syh);
return 0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
syh_el *siyahı_yarat( syh_el *syh, int elem_say)
{
syh_el *p, *q;
p=syh;
q=syh;
int i,dəy;
char bufer[30];
for (i=1; i<=elem_say; ++i){
std::cout<<"siyahının "<<i
<<"-ci elementinin x və ad hədlərini daxil edin \n";
memset(bufer,0,30);
std::cin>>dey>>bufer;
p = new syh_el;
p->x = dey;
strncpy(p->ad,bufer,20);
*(p->ad + 20) = '\0';
p->növb_el = NULL;
if (syh==NULL){
syh=p;
q = p;
p = NULL; }
else {
q->novb_el = p;
q = p;
}
}
return syh;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void siyahını_çap_et(syh_el *syh)
{
syh_el *p;
int dəy, fix = 0;
char bufer[30];
p = syh;
if (syh == NULL ) {
std::cout<<"Siyahı boşdur \n";
return;
}
std::cout<<"Siyahının elementləri \n";
while(p!=NULL)
{
/* elementlərin çapının ekranda gözəl görünməsi üçün */
if (fix++ != 0) std::cout<<" -> ";
dey = p->x;
memset(bufer,0,30);
strncpy(bufer, p->ad, 20);
*(bufer + 20) = '\0';
std::cout<<"(0<<"dey<<" "<<bufer<<")";
p = p->novb_el; /* növbəti elementə keç */
}
std::cout<<"\n";
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>./prog2.exe
Siyahının elementlərinin sayını daxil edin
4
siyahının 1-ci elementinin x və ad hədlərini daxil edin
12 kitab
siyahının 2-ci elementinin x və ad hədlərini daxil edin
34 dəftər
siyahının 3-ci elementinin x və ad hədlərini daxil edin
456 idman
siyahının 4-ci elementinin x və ad hədlərini daxil edin
124 həftə
Siyahının elementləri
(12 kitab) -> (34 dəftər) -> (456 idman) -> (124 həftə)
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
2-ci çalışma
Yuxarıdakı proqrama axtarış funksiyası əlavə edin. Proqram istifadəçidən int tipli ədəd istəyir və siyahıda x-i bu ədədə bərabər olan obyektin ad[20]-həddini çap edir.
// həll_9_2.cpp
#include <iostream>
#include <string.h>
struct syh_el
{
int x;
char ad[20];
syh_el *növb_el;};
syh_el *siyahı_yarat(syh_el *syh, int elem_say);
syh_el * axtarış(syh_el *, int);
int main(int argc, char *argv[])
{
/* istifadə edəcəyimiz dəyişənləri elan edirik */
syh_el *mənim_syh, *syh_dey = NULL;
int x;
char bufer[30];
memset(bufer,0,30);
/* siyahının boş olduğunu bildirmək üçün */
mənim_syh = NULL;
int say;
std::cout<<"Siyahının elementlərinin sayını daxil edin \n";
std::cin>>say;
mənim_syh=siyahı_yarat(mənim_syh,say);
std::cout<<"Siyahıdan ad həddini tapmaq istədiyiniz "
<<"elementin x-ni daxil edin \n";
std::cin>>x;
syh_dey = axtarış(mənim_syh,x);
strcpy(bufer,syh_dəy->ad);
if (syh_dəy!=NULL)
std::cout<<"x həddi "
<<x<<"-a bərabər olan elementin ad həddi "
<<bufer<<"-dir\n";
return 0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
syh_el *siyahı_yarat( syh_el *syh, int elem_say)
{
syh_el *p, *q;
p=syh;
q=syh;
int i,dəy;
char bufer[30];
for (i=1; i<=elem_say; ++i)
{
std::cout<<"siyahının "<<i
<<"-ci elementinin x və ad hədlərini daxil edin \n";
memset(bufer,0,30);
std::cin>>dey>>bufer;
p = new syh_el;
p->x = dəy;
strncpy(p->ad,bufer,20);
*(p->ad + 20) = '\0';
p->novb_el = NULL;
if (syh==NULL){
syh=p;
q = p;
p = NULL; }
else {
q->növb_el = p;
q = p;
}
}
return syh;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
syh_el * axtarış(syh_el *syh, int tap)
{
syh_el *p;
p = syh;
if (syh == NULL ) {
return NULL;
}
while(p!=NULL){
if (p->x==tap) return p;
p = p->növb_el; /* növbəti elementə keç */
}
return NULL;
}
Nümunə
Nəticə:
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>./prog2.exe
Siyahının elementlərinin sayını daxil edin
6
siyahının 1-ci elementinin x və ad hədlərini daxil edin
123 kitab
siyahının 2-ci elementinin x və ad hədlərini daxil edin
34 musiqi
siyahının 3-ci elementinin x və ad hədlərini daxil edin
56 ehtimal
siyahının 4-ci elementinin x və ad hədlərini daxil edin
79 şəbəkə
siyahının 5-ci elementinin x və ad hədlərini daxil edin
875 prosessor
siyahının 6-ci elementinin x və ad hədlərini daxil edin
257 fizika
Siyahıdan tapmaq istədiyiniz elementin x-ni daxil edin
79
x həddi 79-a bərabər elementin ad həddi şəbəkə–dir
C:\cpp\prog2\Debug>
3-cü çalışma
İki siyahını birləşdirən funksiya tərtib edin. Funksiya parametr olaraq iki siyahı qəbul edir, daha sonra, bu siyahılardan birincini ikinci ilə birləşdirir.
// həll_9_3.cpp
#include <iostream>
#include <string.h>
struct syh_el
{
int x;
char ad[20];
syh_el *növb_el;};
syh_el *siyahı_yarat(syh_el *syh, int elem_say);
void birləşdir(syh_el *, syh_el *);
void siyahını_çap_et(syh_el *);
int main(int argc, char *argv[])
{
/* istifadə edəcəyimiz dəyişənləri elan edirik */
syh_el *syh1, *syh2 = NULL;
int x;
char bufer[30];
memset(bufer,0,30);
/* siyahıların boş olduğunu bildirmək üçün */
syh1 = syh2 = NULL;
int say;
std::cout<<"Birinci siyahının elementlərinin sayını"
<<" daxil edin \n";
std::cin>>say;
syh1=siyahı_yarat(syh1,say);
std::cout<<"İkinci siyahının elementlərinin sayını "
<<"daxil edin \n";
std::cin>>say;
syh2=siyahı_yarat(syh2,say);
/*syh1 -i syh2 ilə birləşdiririk*/
birləşdir(syh1,syh2);
siyahını_çap_et(syh1);
return 0;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
syh_el *siyahı_yarat( syh_el *syh, int elem_say)
{
syh_el *p, *q;