Збирка задачи

Член од
5 август 2006
Мислења
164
Поени од реакции
10
Дај постирајте некои задачи на електро што се учат овие задачи на електро се учат во C али нема некоја голема разлика и тогаш споредете ги тие задачи со овие претходно постираните во тежина и ќе видите дека овие задачи се вода, може некој ќе се смета за навреден али така е.
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Дај постирајте некои задачи на електро што се учат овие задачи на електро се учат во C али нема некоја голема разлика и тогаш споредете ги тие задачи со овие претходно постираните во тежина и ќе видите дека овие задачи се вода, може некој ќе се смета за навреден али така е.
Многу ме нервирате вака... исто така ја уништија и темата од Декстерче (како да си направите веб страна)... се почнува од почеток па се оди кон потешкото... а иначе чим викаш дека овие се вода... причекај да стасам до тие потешките па да видиш што ти се вика коа нема да знаеш од кај да почнеш да ја решаваш задачата, а не па да ја решиш :/

П.С. Тие за Матлаб се од електро ако не се лажам.
 
Член од
14 јануари 2008
Мислења
1.341
Поени од реакции
162
Дај постирајте некои задачи на електро што се учат овие задачи на електро се учат во C али нема некоја голема разлика и тогаш споредете ги тие задачи со овие претходно постираните во тежина и ќе видите дека овие задачи се вода, може некој ќе се смета за навреден али така е.
Еве ти од глава задачи

1. Да се напише програм кој ке изврши компресија на низа така да сите парни членови од новата низа ке се членови од старата, а сите непарни ке претставуваат колку пати бројот пред нив се повторува.
Пример.

Полето 2 2 7 7 7 7 9 9 9 1 1 1 1 1 ке се компресира на следниов начин
2 2 7 4 9 3 1 5.

2. Напиши програм што ке транспонира било каква матрица(значи не само квадратна) без користење на помошна.

3. Напиши програм што од HTML фајл ке ги испише сите линкови.

4. Напиши програм што преку тастатура ке прими димензии на матрица, и истата ке ја наполни со случајни броеви, од 0 до м*н-1, така да ниеден број не се повторува два пати.

5. Напиши програм кој ке прими 3 стринга(може и како низа од карактери). Во првиот ке ги најде сите подстрингови еднакви на вториот и ке ги замени со третиот.
Пример ако се внесе "hello ll as" треба да се испише "heasо"

6. Напиши програм кој ке одреди должина на стринг, без користење на циклуси или функцијата strlen.

7. Во една датотека се впишани елементи во следниот формат - стринг инт \n. Напиши програм кој ке ги препише во друга датотека, во обратен редослед, и по редови, и по колони.

Ај доста се.
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Зошто имам полно кодови (претежно од факултет вежби или вежбање за испити/колоквиуми за Основи на програмирање на ПМФ), кажете некој хост ќе ги хостирам сите и ќе ставам линк за download, не ми е проблем (освен rapidshare зошто дозволува само 10 пати да биде симнат фајлот).
Зипувај и прикачи ги на форум :) Е сеа незнам колку ти зафаќаат сите да ги прикачиш тука дека еден зип фајл максимум може да биде 966kb, ако не па подели ги на неколку делови :toe:
 
R

Reve0ke

Гостин
Дај постирајте некои задачи на електро што се учат овие задачи на електро се учат во C али нема некоја голема разлика и тогаш споредете ги тие задачи со овие претходно постираните во тежина и ќе видите дека овие задачи се вода, може некој ќе се смета за навреден али така е.
Брат овде постираат задачи не да се надмудруваме кој посложени задачи решавал или не.
 

аллександар

Вечно ненаспан
Член од
5 мај 2006
Мислења
7.381
Поени од реакции
2.522
Абе дечки не е финтава на темава кој ке постне по сложена задача... динтава е да се постаат што повеќе задачи па пробајте решете ги ако се лесни идте понатака... Неможе сега нормално некој 1 година само што заврчил и да земе да ти прави незнам ти какви кодови. ова се за почетници што ги интересира и што сакаат да научат ( ко мене на пример, а верувам не сум само јас. ). Јас искрено учам на Американскиов колеџ и имаме доста задачи ако сте заинтересирани можам да ги испостам сите задачи што ги имаме работено... мислам буквално сите !!! почнувајки од печатење па if, while. do while. for nizi strungovi funkcii klasi... i tn i tn i tn.... Ако сакате кажете ке земам после ке испостам едно 100тина задачи од прилика ке испаднат... и тоа квалитетни задачи за почетници.. она буквално за да земеш логички да размислуваш за да ги решиш...
 

Шмики

Byakugan
Член од
12 март 2008
Мислења
743
Поени од реакции
16
Може такво нешто во Ц да стаиш?
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Програмски јазик C++
Вовед во програмирање.

1. Напишете програма која ја содржи класата pravoagolnik со членовите a и b.
класата треба да содржи:

- Функциски член postavi(double, double) кој ги поставува вредностите на a и b;
- Функциски членови prevzemia() и prevzemib() кои ги враќаат вредностите на a и b соодветно;
- Функциски член ploshtina() која ја враќа плоштината на правоаголникот.

Прикажете ја функционалноста на класата во функцијата main() така што ќе создадете два правоаголника, ќе ја добиете вредноста за вредностите на нивните страни преку тастатурата и ќе им ги предадете тие вредности на соодветните вредности на објектите. Потоа, испечатете ја сумата на плоштините на двата правоаголника.
Програмата треба да го даде следниот изнес:

Vnesete ja vrednosta na stranata a za prviot pravoagolnik: 2
Vnesete ja vrednosta na stranata b za prviot pravoagolnik: 4
Vnesete ja vrednosta na stranata a za vtoriot pravoagolnik: 3
Vnesete ja vrednosta na stranata b za vtoriot pravoagolnik: 5
Sumata na ploshtinite na pravoagolnikot so strani 2 i 4
i na pravoagolnikot so strani 3 i 5 e 23cm2.



2. Напишете програма која за класата pacient со следните податочни членови: ime, prezime, ID (цел број) и datum_na_posleden_pregled.
Класата треба да содржи:

- Функциска членка vnes() каде вредностите на податочните членки се вчитуваат од таастатурата;
- Функциска членка pechati()која ги печати податоците за пациентот.
- main() треба да го содржи следниот код:
а) 80 % од поените
Код:
main()
{
pacient A;
A.vnes();
A.pechati();
}
Изнесот треба да биде:

Vnesi go imeto: Petar
Vnesi go prezimeto: Petrovski
Vnesi ID: 12345
Vnesi go datumot na posledniot pregled: 22 5 2007
Pechatenje na podatocite za Petar Petrovski
ID: 12345
Datum na posledniot pregled: 22/5/2007

b) 100 % од поените, ако користите низи од знаци со фиксна големина.

Код:
main(){
pacient A("Petar", "Petrovski", 12345, 22,5,2007);
A.pechati();
}
Изнесот треба да биде:

Pechatenje na podatocite za Petar Petrovski
ID: 12345
Datum na posledniot pregled: 22/5/2007

c) 70% од поените

Код:
main(){
pacient A;
char ime[20], prezime[20];
int id, d, m, g;
cout<<"Vnesi go imeto: ";
cin >>ime;
cout<<"Vnesi go prezimeto: ";
cin >>prezime;
cout<<"Vnesi go ID: ";
cin >> id;
cout<<"Vnesi go datumot na posleden pregled: ";
cin>>d >> m >> g;
A.set(ime, prezime, id, d, m, g);
A.pechati();
}
Изнесот треба да биде:

Vnesi go imeto: Petar
Vnesi go prezimeto: Petrovski
Vnesi ID: 12345
Vnesi go datumot na posledniot pregled: 22 5 2007
Pechatenje na podatocite za Petar Petrovski
ID: 12345
Datum na posledniot pregled: 22/5/2007



3. Напишете програма која ја содржи класата pravoagolnik со податочни членки a и b.
Класата треба да содржи:

- Параметризиран конструктор кој ги поставува вредностите на a и b;
- Функциски членки prevzemia() и prevzemib() кои ги враќаат вредностите на a и b соодветно;
- Пријателска функција ploshtina() која ја враќа плоштината на правоаголникот.

main() треба да го содржи следниот код:

Код:
main(){
pravoagolnik P(5, 10);
cout<<"Pravoagolnikot so strani" << P.prevzemia()<< " i "
<< P.prevzemib()<<" ima ploshtina od "<<ploshtina(P)
<<"cm2"<<endl;
}
Програмата треба да го даде следниот излез:

Pravoagolnikot so strani 5 i 10 ima ploshtina od 50cm2
 
Г

Грејвдигер

Гостин
е SkyDriver ај ако имаш некоја екнига со 3адачи по Пасскал и Ц++ на српски, хрватски или македонски прати ми га на профил или на ПП.
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
е SkyDriver ај ако имаш некоја екнига со 3адачи по Пасскал и Ц++ на српски, хрватски или македонски прати ми га на профил или на ПП.
Немам некои посебни, овие што ги гледаш тука тие се :)

Еве и некои малце поуниверзални задачи, наменети се за C++ али може да се решаваат во повеќе програмски јазици.

1. Да се пресмета збурот на броевите од 1 до n.
2. Да се пресмета збирот на броевите деливи со 3 од 1 до n.
3. Да се пресмета аритметичка средина на броевите од 1 до n.
4. Да се најде НЗД за природни броеви a и b.
5. Да се пресмета збирот на броевите деливи со 4 помали или еднакви на n.
6. Да се направи вункција min(a,b) која ќе наоѓа минимум од два броја.
7. Да се направи функција minN(a,b) која ќе наоѓа минимум од n броеви дадени во низа.
8. Да се направи функција Kvadrat(n) која ќе печати на екран квадрат составен од n*n ѕвездички.

9. Да се направи функција Smena(a,b) кога ќе врши замена на вредностите на променливите a и b.

Во задачите 6,7, 8 и 9... функциите да се искористат во главната програма.

10. Да се напише модул со функции и процедури за операции со полиноми: Читање, печатење, пресметување вредност за даден аргумент, собирање два полинома, одземање два полинома.

11. Да се редуцира матрица a[n*k][m*k], k-пати според следното правило: Во новодобиената матрица a1[n][m] вредноста на а1i,j=1 ако бројот на единици е поголем или еднаков на бројот на нули во квадратот i-k,j-k x i+k,j+k.

Код:
    [FONT=Verdana]#include <iostream>
  [/FONT][FONT=Verdana]using namespace std; 
  [/FONT][FONT=Verdana]void pecati(int a[20][20], int m, int n) 
  [/FONT][FONT=Verdana]{ 
  [/FONT][FONT=Verdana]        for (int i=0; i<m;i++) 
  [/FONT][FONT=Verdana]        { 
  [/FONT][FONT=Verdana]                for(int j=0;j<n;j++) 
  [/FONT][FONT=Verdana]                        cout << a[i][j]; 
  [/FONT][FONT=Verdana]cout << endl; 
  [/FONT][FONT=Verdana]        } 
  [/FONT][FONT=Verdana]} 
  [/FONT][FONT=Verdana]void vnesi(int a[20][20], int m, int n) 
  [/FONT][FONT=Verdana]{      for (int i=0; i<m;i++) 
  [/FONT][FONT=Verdana]        { 
  [/FONT][FONT=Verdana]                for(int j=0;j<n;j++) 
  [/FONT][FONT=Verdana]                        cin >> a[i][j]; 
      [/FONT][FONT=Verdana]        } 
  [/FONT][FONT=Verdana]} 
      [/FONT][FONT=Verdana]int  broi(int a[20][20], int m, int n, int i, int j, int k) 
  [/FONT][FONT=Verdana]{       int ii, jj, broj=0; 
  [/FONT][FONT=Verdana]        for (ii=k*i; ii< k*(i+1); ii++) 
  [/FONT][FONT=Verdana]for (jj=k*j; jj< k*(j+1); jj++) 
  [/FONT][FONT=Verdana]                        broj=broj+a[ii][jj]; 
  [/FONT][FONT=Verdana]        return broj; 
  [/FONT][FONT=Verdana]} 
      [/FONT][FONT=Verdana]main() 
  [/FONT][FONT=Verdana]{       int a[20][20], m, n, k, i, j, edinici; 
  [/FONT][FONT=Verdana]cout << "m="; cin >>m; 
  [/FONT][FONT=Verdana]        cout << "n="; cin >>n; 
  [/FONT][FONT=Verdana]        cout << "k="; cin >>k; 
  [/FONT][FONT=Verdana]        vnesi(a, k*m, k*n); 
  [/FONT][FONT=Verdana]cout <<"*****************\n"; 
  [/FONT][FONT=Verdana]        pecati(a, k*m, k*n); 
  [/FONT][FONT=Verdana]        for (i=0; i<m; i++) 
      [/FONT][FONT=Verdana]                for(j=0; j<n; j++) 
  [/FONT][FONT=Verdana]                { 
  [/FONT][FONT=Verdana]                        edinici = broi(a, k*m, k*n, i,j, k); 
  [/FONT][FONT=Verdana]                        if ( edinici >= float(k*k)/2) 
  [/FONT][FONT=Verdana]                                a[i][j]=1; 
  [/FONT][FONT=Verdana]                        else 
  [/FONT][FONT=Verdana]                                a[i][j]=0; 
  [/FONT][FONT=Verdana]} 
  [/FONT][FONT=Verdana]        cout << "Namalenata matrica e: \n"; 
      [/FONT][FONT=Verdana]        pecati(a, m, n); 
      [/FONT][FONT=Verdana]        cin >> m; 
  [/FONT][FONT=Verdana]} [/FONT]
Пример 1:

m=2, n=6, k=2



Намалена матрица е:



Пример 2:

m=2, n=2, k=2



Намалена матрица е:



---------------------------------------------------------------------------

Решавав нешто па реков да го пишам кодот тука :)

Вака сега, следнава програма пресметува НЗС и НЗД на a и b (внесени преку тастатура), потоа подредува дадена низа почнувајки од најмал кон најголем и на крај бара аритметичка средина на матрица arr[m][n] такашто вредностите m и n се внесуваат преку тастатура, а матрицата се полни со рандом броеви. Еве го кодот:

Код:
#include <algorithm>
#include <iostream>

using namespace std;

int nzd(int a, int b)
{
   return (b!=0? nzd(b,a%b):a);
}

int nzs(int a, int b)
{
   return (a*b)/nzd(a,b);
}

void crta()
{
     cout << "-----------------------------------\n";
}

int main()
{
    int a=0, b=0;
    cout << "Vnesi ja vrednosta 'a': ";
    cin >> a;
    cout << "Vnesi ja vrednosta 'b': ";
    cin >> b;
    crta();
    cout << "NZD na " << a << " i " << b << " e: " << nzd(a,b) << ".\n";
    cout << "NZS na " << a << " i " << b << " e: " << nzs(a,b) << ".\n";
    crta();
    
    int niza[10] = {42, 27, 63, 41, 82, 12, 19, 75, 30, 55};
    
    cout << "\nPodreduvanje na niza pochnuvajki od najmaliot: ";
    
    cout << endl;
    crta();
    
    for(int i=0; i<10; i++){
            cout << niza[i] << " ";
            }
            
    cout << endl;
    crta();
    
    sort(niza, niza+10);
    
    for(int j=0; j<10; j++){
            cout << niza[j] << " ";
            }
    
    cout << endl;
    crta();
    
    int br=0;
    int m=0, n=0;
    int arr[m][n];
    
    cout << "\nVnesi ja vrednosta 'm' na matricata: ";
    cin >> m;
    cout << "Vnesi ja vrednosta 'n' na matricata: ";
    cin >> n;
    
    for(int i=0; i<m; i++){
            for(int j=0; j<n; j++){
                    br = rand();
                    arr[m][n] = br;
                    }
                    }
                    
    crta();
    
    for(int i=0; i<m; i++){
            for(int j=0; j<n; j++){
                    br = br + arr[m][n];
                    }
                    }
                    
    float arSred=br/(m*n);
    
    cout << "Aritmetichka sredina na matrica "
    << m << " i " << n << " so vrednosti '5' iznesuva: " << arSred;
    
    cout << endl;
    crta(); 
    
    
    cin.get();
    cin.get();
}
Идемо нови задачи... работа со класи.

Вовед:
Вежбата се состои од три задачи. Во втората задача треба да се откријат грешките кои се во кодот. Во третата задача исто така класата е имплементирана. Треба да се подобри само main() функцијата со воведување на мени за работа со објекти од класата. Забележете како се дефинира низата од објекти.



  1. Да се разгледа кодот на програмата дадена подолу. Да се дополни класата со уште две податочни членки, кои ќе се зададат после јавните функциски членки. Податочните членки да бидат приватни. Наместо двата декларирани објекти, да се декларира низа Ѕ од 3 објекта и да се работи со нив.
Код:
 [COLOR=Black][FONT=Verdana]#include <iostream>
using namespace std 
class moja_klasa 
{
    //privatni za moja_klasa
    int a;
     public:
    void postavi_a(int broj);
    int zemi_a();
};
void moja_klasa::postavi_a(int broj) 
{
    a=broj;
}
int moja_klasa::zemi_a() 
{
    return a;
}
void main()
{
    moja_klasa ob1, ob2;
 
    ob1.postavi_a(10);
    ob2.postavi_a(99);    
      cout<<ob1.zemi_a()<<endl;
    cout<<ob2.zemi_a()<<endl;
}[/FONT][/COLOR]
Задача 2:
Да се проучи кодот на програмата дадена подолу. Истиот содржи неколку грешки, кои се однесуваат на еден од основните концепти на објектно-ориентираното програмирање: енкапсулацијата, но и други (суштински!) грешки. Да се најдат и поправат грешките, и да се даде коментар во што се состојат истите. Каков ќе беше излезот на оваа програма ако при дефиницијата на класата наместо клучниот збор class го користевме клучниот збор struct?


Код:
#include <iostream>
#using namespace std;
 
class Kvadar{
    int x, y, z;
    void postavi_x(int);
    void postavi_y(int);
    void postavi_z(int);
  public:
    void postavi(int, int, int);
    int zemi_x() {return x;}
    int zemi_y() {return y;}
    int zemi_z() {return z;}
    void Kopiraj(Kvadar);
};
void Kvadar::postavi(int a, int b, int c)
{
  postavi_x(a);postavi_y(b);postavi_z(c);
}
int Kvadar::Kopiraj(Kvadar izvor)
{  x=izvor.x;y=izvor.y;z=izvor.z;  }
void Kvadar::postavi_x(int a)
{  x=a;  }
void Kvadar::postavi_y(int a)
{  y=a;  }
void Kvadar::postavi_z(int a)
{  z=a;  }
 
void main()
{
  int q;
Kvadar k1, *k2, k3[3];
 
  // Kvadar k1...
  k1.x=5;k1.y=5;k1.z=5;
  cout<<"Atributi na kvadarot k1:"<<endl;
  cout<<"x="<<k1.zemi_x()<<",y="<<k1.zemi_y()<<",z="<<k1.zemi_z();
  cout<<endl;
// Kvadar k2...
  k2 = new Kvadar;
  k2->postavi(1,1,1);
  cout<<"Atributi na kvadarot k2:"<<endl;
  cout<<"x="<<(*k2).x<<",y="<<(*k2).y<<",z="<<(*k2).z<<endl;
  delete k2;
// Kvadar k3[0]...
  k3->postavi_x(3);
  k3->postavi_y(1);
  k3->postavi_z(2);
  cout<<"Atributi na kvadarot k3[0]:"<<endl;
  cout<<"x="<<(*k3).zemi_x()<<",y="<<(*k3).zemi_y();
  cout<<",z="<<(*k3).zemi_z()<<endl;
// Kvadar k3[1]...
  k3[1].Kopiraj(&k3[0]);
  cout<<"Atributi na kvadarot k3[1]:"<<endl;
  cout<<"x="<<k3[1].zemi_x()<<",y="<<k3[1].zemi_y();
  cout<<",z="<<k3[1].zemi_z()<<endl;
// Kvadar k3[2]...
  k3[2].postavi(k1.zemi_x(),k1.zemi_y(),k1.zemi_z());
  cout<<"Atributi na kvadarot k3[2]:"<<endl;
  cout<<"x="<<*(k3+2).zemi_x()<<",y="<<*(k3+2).zemi_y();
  cout<<",z="<<*(k3+2).zemi_z()<<endl;
}
Задача 3:

Да се направи програма која ќе ја користи користи класата Штедач и ќе овозможи со помош на мени:


  • Внесување на нов штедач во системот.
  • Приказ на податоците.
  • Уплата на средства.
  • Исплата на средства(со контрола дали е можна таква исплата).
  • Приказ на салдо на даден штедач.
Код:
class Stedac
{
 public:
        void vnesi_podatoci(int);
        void prikazi_podatoci();
        void uplata(unsigned long i);
        void isplata(unsigned long i);
        long sostojba();
 
  private:
        int broj;
        char imeprezime[30], adresa[50];
        long saldo;
};
Во продолжение е предложено решение кое не имплементира мени. Вашето решение треба да нуди мени.

Код:
#include <iostream>
#using namespace std;
 
class Stedac
{
 public:
        void vnesi_podatoci(int);
void prikazi_podatoci();
        void uplata(unsigned long i);
        void isplata(unsigned long i);
        long sostojba();
 
private:
        int broj;
        char imeprezime[30], adresa[50];
        long saldo;
};
void Stedac::vnesi_podatoci(int a)
{
cout << "Vnesi ime i prezime: ";
                gets(imeprezime);
                cout << "Vnesi adresa: ";
                gets(adresa);
                saldo=0;
                broj=a;
}
void Stedac::prikazi_podatoci()
{
cout << "Broj: ";
                cout << broj;
                cout << "\n "<<imeprezime;
                cout << "\n "<<adresa<<endl;
}
void Stedac::uplata(unsigned long iznos)
{
saldo=saldo+iznos;
}
void Stedac::isplata(unsigned long iznos)
{
        if (iznos>saldo)
                cout << "Nema tolku pari na smetkata \n";
        else
                saldo=saldo-iznos;
}
long Stedac::sostojba()
{
        return saldo;
}
 
void main()
{
        int br, i;
        unsigned long upl, ispl;
        cout<<"Broj na stedaci:";
        cin>>br;
        Stedac *stedac = new Stedac[br];
        for(int j=0;j<br;j++)
{
          stedac[j].vnesi_podatoci(j+1);
          cout<<"Vnesi uplata:";
          cin>>upl;
          stedac[j].uplata(upl);
          cout << "Stedacot: ";
          stedac[j].prikazi_podatoci();
cout << " ima " << stedac[j].sostojba() << " denari na smetkata.\n";
          cout<<"Vnesi iznos za podignuvanje:";
          cin>>ispl;
          stedac[j].isplata(ispl);
          cout << "Stedacot: ";
          stedac[j].prikazi_podatoci();
          cout << " ima " << stedac[j].sostojba() << " denari na smetkata.\n";
        }
        delete [] stedac;
        cin>>i;
}
Ќе ве оставам некој ден да решавате... па после тоа ќе ги постирам и решенијата на задачиве :)
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
:zlo:

------------------------------------------------------------------------------------------------
Статички и динамички делови на класа.

Пријатели на класа.
-----------------------------------------------------------------------------------------------
Цели:
Совладување на начините на дефинирање и употреба на статички и динамички компоненти на дадена класа. Совладување на концептот за пријатели на класа.


Вовед:

Вежбата се состои од задачи преку кои се покриваат различните програмерски техники кои се цел на овие вежби. Во секоја задача е наведено што треба да се изработи.


[FONT=&quot]Задача 1
[/FONT]
Методите на класите можат динамично да алоцираат меморија со користење на операторите new и delete. За таа цел, во следниот пример податокот name е дефиниран како покажувач, а внесувањето на низата знаци се извршува преку поле buf[20].

Разгледајте ја и извршете ја програмата. Дефинирајте низа од 50 објекти од класата person.
Ако претпоставиме дека најдолгото име кое може да биде внесено е 20 бајти, но просечно името е долго 8 бајти, пресметајте колку бајти меморија се заштедени?


Код:
#include <iostream >

using namespace std;

 

class person

{

public:

   char *name;

   int age;

public:

   void getData();

   void display();

}; 

void person::getData()

{

   char buf[20];

   cout << "Vnesi ime: ";

   cin >> buf;

   name = new char[strlen(buf)+1];

   strcpy (name, buf); 

   cout << "Vnesi vozrast: ";

   cin >> age;

}

void person::display()

{

  cout << "Ime:" << name << " Vozrast:" << age << endl;

}

void main ()

{

    person a,b;

    a.getData();

    b.getData();

    a.display();

    b.display();

}
[FONT=&quot]

[/FONT]

Задача 2

Да се проучи кодот на програмата дадена подолу. Истиот содржи неколку грешки од различен вид (синтаксички, но и логички!). Да се најдат и поправат грешките. Да се даде коментар во што се состојат истите. Онака како што е испишана, програмата баш и не го дава очекуваниот резултат (т.е. бројот на успешно креирани триаголници). Што треба да се смени во кодот за излезот од програмата да биде точен?

Код:
#include <iostream>

using namespace std;

 

class Triagolnik

{

  public:

    void pecati_strani();

    char* proverka(int, int, int);

    float plostina();

    int n;

  private:

    int a, b, c;

    void postavi_strani(int, int, int);

}

void Triagolnik::postavi_strani(float x, float y, float z)

{

  a=x;b=y;c=z;

}

void Triagolnik::pecati_strani()

{

  cout<<"Stranite na triagolnikot se:";

  cout<<a<<", "<<b<<" i "<<c<<endl;

}

char* Triagolnik::proverka(int x, int y, int z)

{

  if(x+y>z && x+z>y && y+z>x)

  {

    postavi_strani(x,y,z);

    return true;

  }

  else

    return false;

}

float plostina()

{

  float s, pl;

  s=(float)(a+b+c)/2;

  pl=sqrt(s*(s-a)*(s-b)*(s-c));

  return pl;

}

 

void main()

{

  int x, y, z, br;

  Triagolnik t;

  cout<<"Kolku pati kje se obiduvate:";

  cin>>br;

  t = new Triagolnik[br];

  for(int i=0;i<br;i+=1)

  {

    cout<<"Vnesete strani za triagolnikot:\n";

    cin>>x>>y>>z;

    if(t[i].proverka(x,y,z))

    {

      cout<<"Kreiran e triagolnik!"<<endl;t[i].n++;

      t[i].pecati_strani();

      cout<<"Plostinata na triagolnikot e:"<<t[i].plostina();

    }

    else

      cout<<"Ne e mozno da se kreira triagolnik so takvi strani!";

    cout<<endl;

  }

  cout<<"Imavte vkupno "<<t->n<<" uspesno kreirani triagolnici!"<<endl;

  delete [] t;

}
Задача 3

Во продавница се води евиденција за постоечките производи (артикли). Да се направи програма која ќе ја користи класата artikl, ќе направи листа од производи и преку мени ќе го овозможува следново:
1. Додавање на артикл во листата;
2. Печатење на информацијата за даден артикл (за даден негов код);
3. Продажба на артикл (се намалува бројот на артикли од тој тип);
4. Ажурирање на бројот на артикли од даден тип (извршена е набавка);
5. Пресметка на вкупната вредност на стоката во продавницата.
При печатењето на информацијата за даден артикл, треба да се испечати неговата вредност освен во денари и во евра и во долари. За таа цел потребни се два атрибута во класата кои ќе го чуваат курсот евро/денар и евро/долар. Нормално, за секој објект од класата, курсот е ист и тој може да се промени, но за сите истовремено.
Во прилог е даден изглед на класата arikl. Некои функции се inline дефинирани. Имајте во предвид дека некои работи (атрибути и функции) треба да ги додадете.
За заштеда на меморија при работа со името искористете ја техниката дадена во претходната задача.

Код:
class artikl {

        char ime[30];

        int kod;

        int cena;

        int kolichina;

public:

    static float kurs_e;

    static float kurs_d;

        void vnesi_podatoci();

        void prikazi_podatoci();

    int vrati_kod() {return kod;};

    char* vrati_ime() {return ime;};

        float cena_vo_evra();

    float cena_vo_dolari();

    void postavi_kurs(float x, float y) {kurs_e=x, kurs_d=y;};

};
Задача 4

Покрај статичките податоци – членки, една класа може исто така да има и статички функции членки. Овие функции се врзуваат со одредена класа, а не со секој објект од таа класа поединечно. Една статичка функција членка може да се повика на вообичаениот начин, преку објект, но може да се повика и без да постои инстанца од класата. Друга важна особина на ваквите функции членки е дека можат да оперираат само со статички податочни членки.
Подолу, даден е пример со класа која поседува статички функции членки. Разгледајте ја и извршете ја програмата. Објаснете зошто доколку линиите код кои содржат и коментар би се замениле со кодот во коментарот, програмата би јавувала грешки.
Код:
#include <iostream>

#include <cmath>

using namespace std;

 

class Triagolnik

{

  public:

    void pecati_strani();

    bool proverka(int, int, int);

    static int obem(Triagolnik t)            // static int obem()

    {

      incr();

      return (t.a+t.b+t.c);                  // return (a+b+c);

    }

    static int n;

  private:

    int a, b, c;

    static void incr() {n++;}                // void incr () {n++;}

    void postavi_strani(int, int, int);

};

void Triagolnik::postavi_strani(int x, int y, int z)

{

  a=x;b=y;c=z;

}

void Triagolnik::pecati_strani()

{

  cout<<"Stranite na triagolnikot se:";

  cout<<a<<", "<<b<<" i "<<c<<endl;

}

bool Triagolnik::proverka(int x, int y, int z)

{

  if(x+y>z && x+z>y && y+z>x)

  {

    postavi_strani(x,y,z);

    return true;

  }

  else

    return false;

}

int Triagolnik::n=0;

 

void main()

{

  int x, y, z, br;

  Triagolnik *t;

  cout<<"Kolku pati kje se obiduvate:";

  cin>>br;

  t = new Triagolnik[br];

  for(int i=0;i<br;i+=1)

  {

    cout<<"Vnesete strani za triagolnikot:\n";

    cin>>x>>y>>z;

    if(t[i].proverka(x,y,z))

    {

      cout<<"Kreiran e triagolnik!"<<endl;

      t[i].pecati_strani();

      cout<<"Obemot na triagolnikot e:";

      cout<<Triagolnik::obem(t[i]);             // cout<<Triagolnik::obem();  

    }

    else

      cout<<"Ne e mozno da se kreira triagolnik so takvi strani!";

    cout<<endl;

  }

  cout<<"Imavte vkupno "<<t->n<<" uspesno kreirani triagolnici!"<<endl;

  delete [] t;

}
Задача 5


Да се проучи кодот на програмата дадена подолу. Истиот содржи неколку суштински грешки односно пропусти. Да се најдат и поправат грешките. Да се даде коментар во што се состојат истите. (Внимавајте на излезот од програмата: се дури не се отстранат сите грешки, таа нема да работи точно!)

Код:
#include <iostream>

#include <cmath>

using namespace std;

 

 

class Krug

{

  public:

    float plostina()

    {return pow(radius,2)*Pi;}

    float obem()

    {return 2*radius*Pi;}

  private:

    float radius;

};

class Topka

{

  public:

    float plostina()

    {return 4*pow(radius,2)*Pi;}

    float volumen()

    {return (float)4/3*radius*pow(radius,2)*Pi;}

  private:

    float radius;

};

void postavi_radius(Krug k, float a)

{

  radius=a;

}

void postavi_radius(Topka t, float a)

{

  radius=a;

}

 

void main()

{

  int izbor;

  float r;

  Krug krug;

  Topka topka;

  do

  {

    cout<<"\nIzberi opcija:\n";

    cout<<"1.Kruznica\n";

    cout<<"2.Topka\n";

    cout<<"3.Kraj\n";

    cin>>izbor;

    switch(izbor)

    {

      case 1:

             cout<<"Vnesi go radiusot na kruznicata:"<<endl;

             cin>>r;

             postavi_radius(krug, r);

             cout<<"Plostinata na kruznicata e:"<<krug.plostina()<<endl;

             cout<<"a obemot e:"<<krug.obem()<<endl;

             break;

      case 2:

             cout<<"Vnesi go radiusot na topkata:"<<endl;

             cin>>r;

             postavi_radius(topka, r);

             cout<<"Plostinata na topkata e:"<<topka.plostina()<<endl;

             cout<<"a volumenot e:"<<topka.volumen()<<endl;

             break;

      case 3:

             return;

      default:

             cout<<"Vnesovte pogresna vrednost!"<<endl;

    }

  }while(izbor<4);

}
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
---------------------------------------------------------------------
Решенија на претходните 3 задачи...
---------------------------------------------------------------------

Задача 1.

Код:
     [FONT=Verdana]#include <iostream>
using namespace std;
class moja_klasa
{
//privatni za moja_klasa
int a;
int x;
int y;
public:
void postavi_a(int broj);
void postavi_x(int broj);
void postavi_y(int broj);
int zemi_a();
int zemi_x();
int zemi_y();
int a;//se pecati ona sto e vo a;
};
void moja_klasa:ostavi_a(int broj) //sme kreirale f-ja no taa ne e clenka na klasata;
{
a=broj;
}
int moja_klasa::zemi_a()
{
return a;
}
void moja_klasa::postavi_x(int broj)
{
x=broj;
}
void moja_klasa::zemi_x(int broj)
{
return x;
}
void moja_klasa::postavi_y(int broj)
{
y-broj;
}
void moja_klasa::zemi_y(int broj)
{
return y;
}
void main()
{
moja_klasa s[3];
cout<<s[o].postavi_a(1);
cout<<s[1].postavi_x(2);
cout<<s[2].postavi_y(3);

}[/FONT]
Задача 2

Код:
[FONT=Verdana]#include <iostream>

using namespace std;

 

class Kvadar{

    int x, y, z;

    void postavi_x(int);

    void postavi_y(int);

    void postavi_z(int);

  public:

    void postavi(int, int, int);

    int zemi_x() {return x;}

    int zemi_y() {return y;}

    int zemi_z() {return z;}

    void Kopiraj(Kvadar);

};

void Kvadar::postavi(int a, int b, int c)

{

  postavi_x(a);postavi_y(b);postavi_z(c);

}

void Kvadar::Kopiraj(Kvadar izvor)

{  x=izvor.zemi_x();y=izvor.zemi_y();z=izvor.zemi_z();  }

void Kvadar::postavi_x(int a)

{  x=a;  }

void Kvadar::postavi_y(int a)

{  y=a;  }

void Kvadar::postavi_z(int a)

{  z=a;  }

 

void main()

{

  int q;

  Kvadar k1, *k2, k3[3];

 

  // Kvadar k1...

  k1.postavi(5,5,5);

  cout<<"Atributi na kvadarot k1:"<<endl;

  cout<<"x="<<k1.zemi_x()<<",y="<<k1.zemi_y()<<",z="<<k1.zemi_z();

  cout<<endl;

 

  // Kvadar k2...

  k2 = new Kvadar;

  k2->postavi(1,1,1);

  cout<<"Atributi na kvadarot k2:"<<endl;

  cout<<"x="<<(*k2).zemi_x()<<",y="<<(*k2).zemi_y()<<",z="<<(*k2).zemi_z()<<endl;

  delete k2;

 

  // Kvadar k3[0]...

  k3->postavi(3,1,2);


  cout<<"Atributi na kvadarot k3[0]:"<<endl;

  cout<<"x="<<(*k3).zemi_x()<<",y="<<(*k3).zemi_y();

  cout<<",z="<<(*k3).zemi_z()<<endl;

 

  // Kvadar k3[1]...

  k3[0].postavi(3,1,2);

  cout<<"Atributi na kvadarot k3[1]:"<<endl;

  cout<<"x="<<k3[1].zemi_x()<<",y="<<k3[1].zemi_y();

  cout<<",z="<<k3[1].zemi_z()<<endl;

 

  // Kvadar k3[2]...

  k3[2].postavi(k1.zemi_x(),k1.zemi_y(),k1.zemi_z());

  cout<<"Atributi na kvadarot k3[2]:"<<endl;

  cout<<"x="<<k3[2].zemi_x()<<",y="<<k3[2].zemi_y();

  cout<<",z="<<k3[2].zemi_z()<<endl;
  system("pause");

}[/FONT]
Задача 3

Код:
[FONT=Verdana]#include <iostream>
using namespace std;
class Stedac
{
 public:
        void vnesi_podatoci(int);
        void prikazi_podatoci();
        void uplata(unsigned long i);
        void isplata(unsigned long i);
        long sostojba();
private:
        int broj;
        char imeprezime[30], adresa[50];
        long saldo; 
};
void Stedac::vnesi_podatoci(int a)
{
                cout << "Vnesi ime i prezime: ";
                cin.getline(imeprezime,80);
                cout << "Vnesi adresa: ";
                cin.getline(adresa,80);
                saldo=0;
                broj=a;
}
void Stedac::prikazi_podatoci()
{
                cout << "Broj: ";
                cout << broj;
                cout << "\n "<<imeprezime;
                cout << "\n "<<adresa<<endl;
}
void Stedac::uplata(unsigned long iznos)
{
        saldo=saldo+iznos;
}
void Stedac::isplata(unsigned long iznos)
{
        if (iznos>saldo)
                cout << "Nema tolku pari na smetkata \n";
        else
                saldo=saldo-iznos;
}
long Stedac::sostojba()
{
        return saldo;
}
void main()
{
        int br, i,n,m;
        unsigned long upl, ispl;
        cout<<"Broj na stedaci:";
        cin>>br;
        Stedac *stedac = new Stedac[br];
            while(i!=6)
            { 
              cout<<"vnesi opcija"<<endl;
              cout<<"1.vnesuvanje na nov stedac"<<endl;
              cout<<"2.pecatenje na stedac"<<endl;
              cout<<"3.uplata"<<endl;
          cout<<"4.isplata"<<endl;
              cout<<"5.salado za stedac"<<endl;
              cin>>i;
              switch(i)
              {
              case 1:
                    {
                          stedac[n].vnesi_podatoci(n);
                    n++;
                    break;
              }  
              case 2:
                    {  
                         int h;
                         cout<<"broj na stedac";
                         cin>>h;
                          stedac[h].prikazi_podatoci();
                    n++;
                    break;       
            }
            case 3:
                  {
                        int h;  int m;
                        cin>>h; cin>>m;
                        stedac[h].uplata(m);
                               break;
                  }
            case 4:
                  { int h;
                  int m;
                  cin>>h;
                  cin>>m;
                        stedac[h].isplata(m);
                              break;
                  }
            case 5:
                  {int n;
                  cin>>n;
                  cout<<"stedacot na smetka ima"<<stedac[n].sostojba();
                  break;}
            case 6:
                  {cout<<"prijatno";break;}
            default:{cout<<"pogresen izbor"<<endl;}
              }
          }
}[/FONT]
 
R

Reve0ke

Гостин
Задачи јава...

Ги неам решено така да одговорите најдете ги сами...може да ги решите и во други објектно ориентирани јазици...
 

Attachments

Kajgana Shop

На врв Bottom