Jump to content

დავალებები C++


Recommended Posts

ამ თემაში დავწერ დავალებებს, დავიწყებ პრიმიტულიდან და ნელ-ნელა გავართულებ

 

პრინციპი არის შემდეგი

ვდებ ამოცანას და ველოდებით პასუხს, როდესაც დაიდება სწორი პაუსხი მერე გადავალ შემდეგზე და ა.შ

თუ სწორი პასუხი დიდიხანი არ იყო, მე თვითონ დავწერ ამოხსნას

 

პასუხის დადების წესი მარტივია

უნდა დადოთ კოდი :D

სქრინსაც თუ მოაყოლებთ კარგი იქნება

კოდი თავისთავად კარგად უნდა იყოს დაწერილი, კარგი layout და კომენტარები

 

მაშ ასე დავიწყოთ

 

 

პირველი დავალება: 

ალბათ მათემატიკადან იცით ნიშნის გამსაზღვრელი ფუნქცია, რიცხვი დადებითია, უარყოფითი თუ 0

ანუ მათემატიკურად რომ ვთქვათ

 

-1 თუ x < 0
1 თუ x > 0
0 თუ x = 0
 
ქვემოთ არის მოცემული ამის გამოსათვლელი პროგრამა.
კითხვა:
რას ბეჭდავს პროგრამა და არის თუ არა შეცდომა? (თუ არის შეცდომა, მიუთითეთ რა შეცდომაა და გაასწორეთ)
 
#include <iostream>
using namespace std;
#define sgnMacro(z) (z > 0) - (z < 0)
inline int sgnFct(int z) { return (z > 0) - (z < 0); }
int main(void)
{
int z1 = -2,
z2 = -2;
cout << "sgn(z1) = " << sgnMacro(++z1) << endl;
cout << "sgn(z2) = " << sgnFct(++z2) << endl;
}

 

 

 



ცოტა უფრო საინტერსოც რომ იყოს ქულების სისტემაც შემოვიღოთ :D

ეს ამოცანა 1 ქულიანია

  • Upvote 6
Link to comment
Share on other sites

  • Replies 93
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

#include <iostream>
using namespace std;
#define sgnMacro(z) (z > 0) - (z < 0)
inline int sgnFct(int z) { return (z > 0) - (z < 0); }
int main(void)
{
int z1 = -2,
z2 = -2;
cout << "sgn(z1) = " << sgnMacro(++z1) << endl;
cout << "sgn(z2) = " << sgnFct(++z2) << endl;
}
იდეაში შეცდომა: z2 არაა განსაზღვრული.

მე-3 და მე-4 ხაზი ვერ გავიგე :დ

Link to comment
Share on other sites

ძალიან კარგია მაგრამ არამგონა ამ თემაში ადგილი ჰქონდეს მაგ პოსტს :)
Link to comment
Share on other sites

#include <iostream>
using namespace std;
#define sgnMacro(z) (z > 0) - (z < 0)
inline int sgnFct(int z) { return (z > 0) - (z < 0); }
int main(void)
{
int z1 = -2,
z2 = -2;
cout << "sgn(z1) = " << sgnMacro(++z1) << endl;
cout << "sgn(z2) = " << sgnFct(++z2) << endl;
}
იდეაში შეცდომა: z2 არაა განსაზღვრული.

მე-3 და მე-4 ხაზი ვერ გავიგე :დ

განსაზღვრულია z2, int z1 = -2, და აქ მძიმე წერია და არა 2 წერტილი

ესე რო იყოს int z1 = -2, z2 = -2; ხო სწრია? იგივე წერია

 

რაც შეეხება მესამე და მეოთხე ხაზს

3 ხაზი

#define sgnMacro(z) (z > 0) - (z < 0)

 

ეს წარმოდიგინე როგორც ესე

f(z) = (z>0) - (z<0)

4 ხაზი inline რო მოაშორო წინ ხო უბრალო ფუნქცია გამოდის?

int sgnFct(int z) {

return (z > 0) - (z < 0);

}

 

და inline უბრალოდ მეთოდია, მივალთ მაქამდეც :D

Link to comment
Share on other sites

განსაზღვრულია z2, int z1 = -2, და აქ მძიმე წერია და არა 2 წერტილი

ესე რო იყოს int z1 = -2, z2 = -2; ხო სწრია? იგივე წერია

 

რაც შეეხება მესამე და მეოთხე ხაზს

3 ხაზი

#define sgnMacro(z) (z > 0) - (z < 0)

 

ეს წარმოდიგინე როგორც ესე

f(z) = (z>0) - (z<0)

4 ხაზი inline რო მოაშორო წინ ხო უბრალო ფუნქცია გამოდის?

int sgnFct(int z) {

return (z > 0) - (z < 0);

}

 

და inline უბრალოდ მეთოდია, მივალთ მაქამდეც :D

აჰა ახლა გასაგებია. , < ვერ შევამჩნიე ^^

მაგრამ 2 ფუნქცია რა საჭიროა?

და კიდევ ერთი კითხვა რაც გამიჩნდა არის ცვლადის ინკრიმენტი(++) რა საჭიროა? დანიშნულება?

(1-იანი რომ შევიდეს არასწორ პასუხს გვაძლევს)

Link to comment
Share on other sites

აჰა ახლა გასაგებია.

მაგრამ 2 ფუნქცია რა საჭიროა?

და კიდევ ერთი კითხვა რაც გამიჩნდა არის ცვლადის ინკრიმენტი(++) რა საჭიროა? დანიშნულება?

(1-იანი რომ შევიდეს არასწორ პასუხს გვაძლევს)

 

რეალურად არ გჭირდება, "დასაბნევად" არის, იგივე აკეთებს 2ივე პრაქტიკულად

 

არც ეხლა არ იძლევა სწორ პასუხს

 

ისიც გაითვალსიწინე რომ i++ და ++i სხვადასხვა რაღაცას აკეთებს

 

P.S ძაან ახლოს ხარ პასუხთან :D

Link to comment
Share on other sites

საცნობარო მასალა: :D

i++ და ++i-ს განსხვავება მნიშვნელოვანია მინიჭებისას. თუ ვწერთ a=++i მაშინ a-ს მიენიჭება i-ს ერთით გაზრდილი მნიშვნელობა.

 

მაგალIთად თუ i=3,  a=++i-ს შემთხვევაში ჯერ i გახდება 4 და შემდეგ მიენიჭება a-ს. ხოლო a=i++-ის შემთხვევაში ჯერ a გახდება 3-ის ტოლი, შემდეგ i გახდება 4.

 

 

  • Upvote 3
Link to comment
Share on other sites

რეალურად არ გჭირდება, "დასაბნევად" არის, იგივე აკეთებს 2ივე პრაქტიკულად

 

არც ეხლა არ იძლევა სწორ პასუხს

 

ისიც გაითვალსიწინე რომ i++ და ++i სხვადასხვა რაღაცას აკეთებს

 

P.S ძაან ახლოს ხარ პასუხთან :D

++i და i++ რა თქმა უნდა, მაგრამ აჰა შენ "იდეაში" მუშა კოდი :დ
#include <iostream>
using namespace std;
int sgnFct(int z) { return (z > 0) - (z < 0); }
int main(void)
{
int z1;
cout<<"Enter Integer: n";
cin>>z1;
cout << "sgn(z1) = " << sgnFct(z1) << endl;
}
  • Upvote 1
Link to comment
Share on other sites

სწორია მაგრამ უბრლოდ ++ ები რო მოგეშორებინა და სხვა ყველაფერი დაგეტოვებინა მაინც მუშაობდა :D

 

 

ANuB1S - 1 ქულა

 

დავალება 2 (1 ქულა):

 

ეს დავალება ეხება "გადატვირთვას" (overloading) 

 

 

დაწერეთ პროგრამა myconst(); რომელსაც თუ გადაეცება 2 ინტეგერი, ითვლის ერთიდან მეორემდე

ან თუ გადაეცემა ჩარი და სტრინგი, ითვლის რამდნჯერ არის ეს ჩარი ნახმარი სტრინგში

 

შემდეგ დატესეთეთ თქვენი პროგრამა

Link to comment
Share on other sites

რა კარგი გასართობი გავჩითეთ :D

ყოჩაღ ჯუმპერ :P

Link to comment
Share on other sites

თქვენ გამო C++-ის ბიბლიოთეკები უნდა დავამატო ვიზუალ სტუდიოში :D

რა გინდოდათ ვიყავი ჩემთვის და C#-ს ვსწავლობდი :xelitavi:

  • Upvote 1
Link to comment
Share on other sites

სწორია მაგრამ უბრლოდ ++ ები რო მოგეშორებინა და სხვა ყველაფერი დაგეტოვებინა მაინც მუშაობდა :D

 

ანუ ესე? 

 

 

 

#include <iostream>
using namespace std;
#define sgnMacro(z) (z > 0) - (z < 0)
inline int sgnFct(int z) { return (z > 0) - (z < 0); }
int main(void)
{
int z1 = -2,
z2 = -2;
cout << "sgn(z1) = " << sgnMacro(z1) << endl;
cout << "sgn(z2) = " << sgnFct(z2) << endl;


system("PAUSE");
return 0;
}
 

 

Link to comment
Share on other sites

ანუ ესე? 

 

 

 

#include <iostream>
using namespace std;
#define sgnMacro(z) (z > 0) - (z < 0)
inline int sgnFct(int z) { return (z > 0) - (z < 0); }
int main(void)
{
int z1 = -2,
z2 = -2;
cout << "sgn(z1) = " << sgnMacro(z1) << endl;
cout << "sgn(z2) = " << sgnFct(z2) << endl;


system("PAUSE");
return 0;
}
 

 

ხო ეგრეც მუშაობს

მაგრამ სისტემი რაში გჭირდებოდა :D

 

Link to comment
Share on other sites

კომპაილის მერე დებაგერით რომ ვრთავ (პირდაპირ F5-ით), აღარ ითიშება ეგ ფანჯარა და მაგიტომ დავამატე :D



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



sgn(z1) = -1
sgn(z2) = -1

 

Link to comment
Share on other sites

კომპაილის მერე დებაგერით რომ ვრთავ (პირდაპირ F5-ით), აღარ ითიშება ეგ ფანჯარა და მაგიტომ დავამატე :D

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

 

აა ხო, შენ ხო visual studio ში ჭერ

 

მაგას რო გიწერს ანუ

z1 და z2 ორივე უარყოფითი რიცხვია

ზემოთ ხო წერია ეგ ფუნქცია რას შვება, დავალება მთლიანად წაიკითხე

 

 

 

 

 

მეორე ამოცანის პასუხს ველოდები :D

Link to comment
Share on other sites

დაწერეთ პროგრამა myconst(); რომელსაც თუ გადაეცება 2 ინტეგერი, ითვლის ერთიდან მეორემდე

ან თუ გადაეცემა ჩარი და სტრინგი, ითვლის რამდნჯერ არის ეს ჩარი ნახმარი სტრინგში

 

შემდეგ დატესეთეთ თქვენი პროგრამა

 

ესე?

 

#include <iostream>
#include <string>

using namespace std;

void myconst(int x, int y){
    for(int i=x; i<=y; i++){
        cout << i << endl;

    }
}

void myconst (string d, char c){
    cout << "nnn-------------------------nnn??";
}

int main()
{
    int a=15, b=18;
    char c = 'k';
    string d = "jemali";

    myconst(a, ;
    myconst(d, c);

    return 0;

}

 

 

 

ან თუ გადაეცემა ჩარი და სტრინგი, ითვლის რამდნჯერ არის ეს ჩარი ნახმარი სტრინგში

ეს ვერ გავიგე

 

პ.ს ძალიან ნუ გამაკრიტიკებთ დამწყები ვარ :D

Link to comment
Share on other sites

ესე?

 

#include <iostream>
#include <string>

using namespace std;

void myconst(int x, int y){
    for(int i=x; i<=y; i++){
        cout << i << endl;

    }
}

void myconst (string d, char c){
    cout << "nnn-------------------------nnn??";
}

int main()
{
    int a=15, b=18;
    char c = 'k';
    string d = "jemali";

    myconst(a, ;
    myconst(d, c);

    return 0;

}


ეს ვერ გავიგე

 

პ.ს ძალიან ნუ გამაკრიტიკებთ დამწყები ვარ :D

 

ხო დაახლოებით ეგ ოროღნდ გაითვლასიწნე x არის მეტი თუ y არ იცი, ანუ 2ივე შმეთხვევა უნდა დაწერო

 

და მეორე რაც უნდა ქნას არის

 

mycost("laptop", 'p');

და უნდა დააბრუნოს 2

Link to comment
Share on other sites

ეს ვერ გავიგე

 

პ.ს ძალიან ნუ გამაკრიტიკებთ დამწყები ვარ :D

სტრიქონს რომ გადასცემ ასოების რაოდენობა უნდა დაითვალოს.

Link to comment
Share on other sites

#include <iostream>
#include <string>

using namespace std;

void myconst(int x, int y){
    if (x<y){
    for(int i=x; i<=y; i++)
        cout << i << endl;
    }

    else{
        for(int i=y; i<=x; i++)
            cout << i << endl;
    }
}

void myconst (string d, char c){
    cout << "nnn------------------------nnn";
    int length = 0;
    while (d[length] != '0') {
        length++;
    }
    cout << length << endl;
}

int main()
{
    int a, b;

    cin >> a;
    cin >> b;

    char c = 'k';
    string d = "jondibagaturia";

    myconst(a, ;
    myconst(d, c);

    return 0;

}

სწორეა? :D

Link to comment
Share on other sites

არაა სწორი.

იდეაში ეგრეა მაგრამ შეცდომები გაქვს როგორც ერთი შეხედვით შევატყე



დაიცა არ დამიჯერო. შეიძლება გატყუებ :D

Link to comment
Share on other sites

LedZeppelin,

არასწორია

შენ ითვლი სიტყვის სიგრძეს და არა რამდენჯერ არის ის კონკრეტული ასო გამოყენებული

 

 

მინიშნება:

სტინგი ჩაწერეთ როგორც ჩარების ერრეი და მერე არრეის თითოეული წევრი გაუტოლეთ იმ ჩარს, თუ ტოლია მთვლელი გაზარდეთ და ბოლოს მთვლელი დააბრუნეთ 

Link to comment
Share on other sites

ამას ვწერ ეხლა C#-ში :D



LedZeppelin,

მინიშნება:

სტინგი ჩაწერეთ როგორც ჩარების ერრეი და მერე არრეის თითოეული წევრი გაუტოლეთ იმ ჩარს, თუ ტოლია მთვლელი გაზარდეთ და ბოლოს მთვლელი დააბრუნეთ 

ეგ მასივად რომ არ ჩაიწეროს ჩარს როცა ადარებ ხომ ისედაც სათითაო ასოს შეადარებს?

Link to comment
Share on other sites

ამას ვწერ ეხლა C#-ში :D

ეგ მასივად რომ არ ჩაიწეროს ჩარს როცა ადარებ ხომ ისედაც სათითაო ასოს შეადარებს?

 

სტრინგი ასოს რო შეადარო?

პირველ ასოებს შეადარებს სავარაუდოდ მარტო

 

მაგრამ მაგალითად

string a = "blablabla"

 

for (i=0; i<a.sizeof(); i++ ) {

 cout << a << endl;

}

 

დაბეჭდავს ყველა ჩარს სათითაოდ

 

აქედან უნდა მიხვდეთ ეხლა როგორ უნდა გააკეთოთ

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.