Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

შუალედური გამოცდა 17.11.

2021

კურსის დასახელება: დაპროგრამების საფუძვლები სტატუსი: ძირითადი


ქულების განაწილება: 1 - 5 ქ., 2 - 7 ქ., 3 - 8 ქ., 4 - 10 ქ.
ქულათა ჯამი: 30 ქულა
გამოცდის ხანგრძლივობა: 2 საათი 30 წუთი.

ბილეთი
1. აღმოაჩინეთ და ახსენით შემდეგ პროგრამაში დაშვებული ყველა შეცდომა (მათი რაოდენობა 4 -ზე მეტია):
#include <iostream>
using namespace std;
int main() {
int k{ 0. };
const double p;
ifstream ifs("info.out");
while (ifs << k)
if k <= 5 && k > 15 cout << k << ' ';
cout << "p = " << p++ << endl;
}

გასწორებული თავისი კომენტარებით:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
int k{ 0.};
double p; //p- არის კონსტი და ქვემოთ მისი ცვლილების ბრძანება არის ამიტომ არ უნდა იყოს
კონსტი
ifstream ifs("info.out"); //ბიბლიოთეკა არ იყო ჩამატებული <fstream>
while (ifs >> k) // შეტანის ფრჩხილების ანცვლა გამოტანის ფრჩხილები ეწერა
if (k <= 5 && k > 15) cout << k << ' '; // პირობას ფრჩხილები არ ეწერა
cout << "p = " << p++ << endl; // p კონსტი იყო და აქ ცვლილების მოთხოვნა იყო
}

2. ვრცლად ახსენით თუ რას აკეთებს შემდეგი პროგრამა:


#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> x = { 12, -10, 23, 45, -2, 9, -106 };
double j(0.); int c(0);
for (int i = 0; i < x.size(); i++)
if (x[i] > 0 && x[i] <= 25)
{
j += x[i]; ++c;
}
cout << "pasuxi: " << j / c << endl;
}

შემდეგ ამოხსენით იგივე ამოცანა for შეტყობინების გარეშე ორნაირად: while -ით და დიაპაზონიანი for
შეტყობინებით.

ზუსტ და საბუნებისმეტყველო მეცნიერებათა ფაკულტეტი ბილეთი 1


შუალედური გამოცდა 17.11.2021

რას აკეტებს ეს პროგრამა:


გვაქვს ინტ ტიპის ვექტორი რომელშიც არის შვიდი მთელი რიცხვ,
შემდეგ for ციკლის საშუალებითა და მისთვის გაწერილი პირობით ვუბრძანებთ რომ ეს
ვექტორი გაირბინოს და მათ შორის თუ იპოვის 0-ზე მეტსა და ოცდახუთზე ნაკლებ ან მის
ტოლ რიცხვებს ზემოთ შექმნილ დაბლ ტიპის ცვლადში 'j' ვპრებთ მათ და ასევე ზემოთ
შექმნილ ინტ ტიპის ცვლადში 'c' ვითვლიტ ამ რიცხვების რაოდენობას,შემდეგ cout
ბრძანებით ვწერთ ზემოთ 'j' ცვლადში შეკრებილი რიცხვების განაყობს მათსავე
რაოდენობაზე, ანუ მათ საშუალო არიტმეტიკულს.

While ციკლით:

#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> x = { 12, -10, 23, 45, -2, 9, -106 };
double j(0.); int c(0), i{};

while (i < x.size())


{
if (x[i] > 0 && x[i] <= 25)
{
j += x[i]; ++c;
}
i++;
}

cout << "pasuxi: " << j / c << endl;

დიაპაზონიანი for-ით:

#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> x = { 12, -10, 23, 45, -2, 9, -106 };
double j(0.); int c(0);

for (auto m : x)
{
if (m > 0 && m <= 25)
{
j += m; ++c;
}
}

cout << "pasuxi: " << j / c << endl;


}

ზუსტ და საბუნებისმეტყველო მეცნიერებათა ფაკულტეტი ბილეთი 1


შუალედური გამოცდა 17.11.2021

2. შეადგინეთ პროგრამა, რომელიც 35 შემთხვევით ნამდვილ რიცხვს დიაპაზონიდან [-10.1,40.5] ჩაწერს


ნამდვილი რიცხვების ვექტორში, ხოლო 35 შემთხვევით მთელ რიცხვს დიაპაზონიდან [35,200] ჩაწერს
მთელი რიცხვების ვექტორში. შემდეგ, პირველი ვექტორის უდიდეს ელემენტს შეადარებს მეორე
ვექტორის უმცირეს ელემენტს და ეკრანზე დაბეჭდავს თუ რომელი ვექტორის როგორი ელემენტია
ნაკლები (გაითვალისწინეთ ტოლობის შესაძლებლობაც).

შესრულებული კოდი:

#include <iostream>
#include <fstream>
#include <random>
#include <vector>
using namespace std;

int main()
{
int n;
default_random_engine gen;
uniform_real_distribution <double> dis(-10.1, 40.5);
uniform_int_distribution <int> mimd(35, 200);
vector <double> a;
vector <int> b;

for (int i{}; i < 35; i++)


{
a.push_back(dis(gen));
b.push_back(mimd(gen));
}

sort(a.begin(), a.end());
sort(b.begin(), b.end());

if (a[a.size() - 1] > b[0])


{
cout << "pirveli vektoris udidesi elementi agemateba meore vektori umcires elements"
<< endl;
}
else if (a[a.size() - 1] < b[0])
{
cout << "meore vektoris umciresi elementi agemateba pirveli elementis udides
elements" << endl;
}
else
{
cout << "pirveli vektoris udidesi elementi tolia meore vektoris umciresi elementisa"
<< endl;
}
}

ზუსტ და საბუნებისმეტყველო მეცნიერებათა ფაკულტეტი ბილეთი 1


შუალედური გამოცდა 17.11.2021

3. შექმენით ფუნქცია, რომელიც მთელი რიცხვების ვექტორის ელემენტებს ბეჭდავს ეკრანზე. ძირითად
(main()) ფუნქციაში, numbers.txt ფაილიდან 45 დადებითი მთელი რიცხვი ჩაწერეთ სათანადო ტიპის
ვექტორში. დაბეჭდეთ ვექტორი ეკრანზე შექმნილი ფუნქციის გამოყენებით. შემდეგ:

ფუნქციის გამოყენებით ბეჭდვა:


#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

void func(vector <int> a);

int main()
{
int n;
ifstream ifs("numbers.txt");
vector <int> b;

while (ifs >> n)


{
b.push_back(n);
}

func(b);
}

void func(vector <int> a)


{
for (auto m : a)
{
cout << m << ' ';
}
}

ა) დაადგინეთ ვექტორის ორნიშნა რიცხვების ჯამი და ასევე იმ სამნიშნა რიცხვების რაოდენობა, რომელთა
პირველი და შუა ციფრები ემთხვევა. answer.txt ფაილში დაბეჭდეთ ეს სამნიშნა რიცხვები, მათი
რაოდენობა და ნაპოვნი ჯამი. ბეჭდვას თან დაურთეთ სათანადო გზავნილები;
ა) დავალების კოდი:
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

void func(vector <int> a);

int main()
{
int n, TwoSum{}, n10, n100, raodenoba{};
ifstream ifs("numbers.txt");
ofstream ofs("answer.txt");
vector <int> b;
vector <int> c;

while (ifs >> n)


{
if (n > 9 && n < 100)
{
b.push_back(n);
TwoSum += n;
}
else
ზუსტ და საბუნებისმეტყველო მეცნიერებათა ფაკულტეტი ბილეთი 1
შუალედური გამოცდა 17.11.2021

{
b.push_back(n);
}
}

for (auto k : b)
{
n10 = k / 10;
n100 = k / 100;
if (k < 1000 && k > 99 && ((n10) % 10) == ((n100) % 10))
{
c.push_back(k);
raodenoba++;
}
else
{
continue;
}
}

ofs << "ornishna ricxvebis jami: " << TwoSum << endl;
ofs << "am vektorshi aris " << raodenoba << "-cali samnishna ricxvi romlis pirvelida
meore cipri ertnairia\n" << "es ricxvebia: ";
for (auto l : c)
{
ofs << l << ' ';
}

func(b);
}

void func(vector <int> a)


{
for (auto m : a)
{
cout << m << ' ';
}
}

ზუსტ და საბუნებისმეტყველო მეცნიერებათა ფაკულტეტი ბილეთი 1


შუალედური გამოცდა 17.11.2021

ბ) გაცვალეთ ვექტორში პირველივე 7-ის ჯერადი რიცხვი და ვექტორის შუაში მდგომი რიცხვი. შემდეგ
დაბეჭდეთ ვექტორი ისევ ეკრანზე.

ბ) დავალების კოდი, რომელიც ასევე არის მთლიანად მეოთხე ამოცანის კოდი:

#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

void func(vector <int> a);

int main()
{
int n, TwoSum{}, n10, n100, raodenoba{};
ifstream ifs("numbers.txt");
ofstream ofs("answer.txt");
vector <int> b;
vector <int> c;

while (ifs >> n)


{
if (n > 9 && n < 100)
{
b.push_back(n);
TwoSum += n;
}
else
{
b.push_back(n);
}
}

for (auto k : b)
{
n10 = k / 10;
n100 = k / 100;
if (k < 1000 && k > 99 && ((n10) % 10) = ((n100) % 10))
{
c.push_back(k);
raodenoba++;
}
else
{
continue;
}
}

ofs << "ornishna ricxvebis jami: " << TwoSum << endl;
ofs << "am vektorshi aris " << raodenoba << "-cali samnishna ricxvi romlis pirvelida
meore cipri ertnairia\n" << "es ricxvebia: ";
for (auto l : c)
{
ofs << l << ' ';
}

func(b);
cout << endl;

for (int i{}; i < b.size(); i++)


{
int integer = b[i];
if (integer % 7 == 0)
ზუსტ და საბუნებისმეტყველო მეცნიერებათა ფაკულტეტი ბილეთი 1
შუალედური გამოცდა 17.11.2021

{
iter_swap(b.begin() + i, b.begin + 23);
break;
}
else
{
continue;
}
}

func(b);
}

void func(vector <int> a)


{
for (auto m : a)
{
cout << m << ' ';
}
}

ზუსტ და საბუნებისმეტყველო მეცნიერებათა ფაკულტეტი ბილეთი 1

You might also like