You are on page 1of 4

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

2020

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

პედაგოგები: ი. ხუციშვილი, ნ. არჩვაძე, ლ. ლორთქიფანიძე


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

ნინო ლომსაძე
ბილეთი 6
1. აღმოაჩინეთ და ახსენით შემდეგ პროგრამაში დაშვებული ყველა შეცდომა (მათი რაოდენობა 4 -ზე მეტია):
#include <iostream>
using namespace std
int main() {
int a;
const double d;
ifstream in("data.out");
while (in << a);
if a >= 13 && a <= 98 cout << a << ' ';
cout << "d = " << ++d << endl;
}

1.აკლია წერტილმძიმე მეორე ხაზე.

2.აკლია #include <fstream>

3. If-ს პირობა მრგვალ ფრშხილებში უნდა.

4. Const double d უნდა მიანიჭო მნიშვნელობა.

5. In << a კი არა, არამედ in >> a.

6.კონსტანტას d ვერ გაზრდი( ++d არ იმუშავებს).

7. While - ის მერე წერტილმძიმე მოსაშორებელია, რომ ყველა რიცხვი ამ დიაპაზონში დაიბეჭდოს.

2. რას დაბეჭდავს შემდეგი ფრაგმენტი, თუ კლავიატურიდან შემოვიტანთ:


ა) 7 -ს; ბ) 5 -ს:
int u, z;
cin >> z;
while (z > 5){
switch (z / 2 - 1){
case 2: u = z + 10 % 3; break;
default: u = z / 2 - 2; break;
case 3: u = 2 * z - 5;
}
cout << "z = " << z << '\t' << " u = " << u << endl;
--z;
}
ვრცლად ახსენით პროგრამის კოდის მუშაობა ორივე შემთხვევაში.
შემდეგ, გადაწერეთ იგივე ფრაგმენტი, ოღონდ while შეტყობინების ნაცვლად გამოიყენეთ for შეტყობინება.

ა.
z=7 u=8
z=6 u=7

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


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

ბ. არაფერს
გადაწერილი ვარიანტი for-ში:

int u, z;
cin >> z;
for(;z > 5; --z) {
  switch (z / 2 - 1){
    case 2: u = z + 10 % 3; break;
    default: u = z / 2 - 2; break;
    case 3: u = 2 * z - 5;
  }
  cout << "z = " << z << '\t' << " u = " << u << endl;
}

While-ს შემთხვევაში კოდი while-ში იქამდე სრულდება, სანამ პირობა ჭეშმარიტია.


For-ის შემთხვევაში გამოტოვებულია პირველი აღნიჩვნა, რადგან მომხმარებელმა უკვე ქნას ეს .
მეორეში არის პირობა როგორც while-ში და მესამეში ქმედება. ყოველ ციკლის დროს z იკლებს
ერთით. While-ში კი კოდის ფრაგმენტში ეწერა --z

3. შეადგინეთ პროგრამა, რომელიც გააკეთებს განაცხადს ნამდვილი რიცხვების 2 ვექტორზე, პირველში ჩაწერს
45 შემთხვევით ნამდვილ რიცხვს დიაპაზონიდან [-60.5,30.5], ხოლო მეორეში შეიტანს 25 დადებით
ნამდვილ რიცხვს reals.in ფაილიდან. შემდეგ, პირველი ვექტორის უარყოფითი ელემენტების მოდულების
ნამრავლს შეადარებს მეორე ვექტორის ელემენტების საშუალო გეომეტრიულს და ეკრანზე დაბეჭდავს თუ
რომელი ვექტორის როგორი გამოთვლილი სიდიდეა მეტი (გაითვალისწინეთ ტოლობის შესაძლებლობაც).

#include <iostream>
#include <fstream>
#include <vector>
#include <random>
#include <ctime>
#include <math.h>
using namespace std;
double fRand(double fMin, double fMax)
{
double f = (double)rand() / RAND_MAX;
return fMin + f * (fMax - fMin);
}
int main() {
vector<double> a;
vector<double> b;

for(int i = 0; i < 45; i++){


a.push_back(fRand(-60.5, 30.5));
}
ifstream ifs("reals.in");
while (ifs.eof()) {
int x;
ifs >> x;
ზუსტ და საბუნებისმეტყველო მეცნიერებათა ფაკულტეტი ბილეთი 1
შუალედური გამოცდა 14.11.2020

if(x > 0)
b.push_back(x);
}
double aa = 1;
for(double x : a){
if(x < 0)
aa *= abs(x);
}
double bb = 1;
for(double x : b){
bb *= x;
}
bb = pow(bb, 1/b.size());
if(aa < bb){
cout << "B the most big";
}
else if(aa > bb){
cout << "A the most big";
}
else{
cout << "A and B botw equal";
}
}

4. შექმენით ფუნქცია, რომელიც სტრიქონების ვექტორის ელემენტებს ბეჭდავს ეკრანზე.


ძირითად (main()) ფუნქციაში, კლავიატურიდან შემოტანილი 25 სიტყვა ჩაწერეთ შესაბამისი ტიპის
ვექტორში. დაბეჭდეთ ვექტორი შექმნილი ფუნქციის გამოყენებით. შემდეგ:
ა) დაადგინეთ ვექტორის იმ სიტყვების რაოდენობა, რომლებიც მთავრდებიან 'n' სიმბოლოთი. შემდეგ
out.txt ფაილში დაბეჭდეთ ეს სიტყვები და მათი რაოდენობა. ბეჭდვას თან დაურთეთ სათანადო
გზავნილები;
ბ) გაცვალეთ ვექტორში უდიდესი და უმცირესი სიტყვები და დაბეჭდეთ მათი სიგრძეები. ბოლოს,
დაბეჭდეთ ვექტორი ისევ ეკრანზე.

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

void printvec(vector<string> st){


for(string a : st){
cout << a << endl;
}
}
int main(){

vector<string> words;
for(int i = 0; i < 25; i++){
string s;
ზუსტ და საბუნებისმეტყველო მეცნიერებათა ფაკულტეტი ბილეთი 1
შუალედური გამოცდა 14.11.2020

cin >> s;
words.push_back(s);
}
printvec(words);
//ა
vector<string> endn;
for(string a : words){
if(a[a.size()-1] == 'n'){
endn.push_back(a);
}
}
ofstream ofs("out.txt");
for(int i = 0; i < endn.size() - 1; i++){
ofs << endn[i] << endl;
}
ofs << "All words : " << endn.size() - 1 << endl;
//ბ
string max, min;
int maxi, mini;
//max
for(int i = 0; i < words.size() - 1; i++){
if(words[i].length() > max.length()){
max = words[i];
maxi = i;
}
}
//min
for(int i = 0; i < words.size() - 1; i++){
if(words[i].length() < min.length()){
min = words[i];
mini = i;
}
}
words[maxi] = min;
words[mini] = max;

printvec(words);

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

You might also like