1. Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.
    Сокриј

Помош функции

Дискусија во форумот 'C // C++' започната од &YL, 11 Март 2010.

  1. &YL

    &YL
    Intern

    26
    0
    5 Март 2010
    Prvo pozdrav na site...!
    Sum kreiral edna klasa isto taka i funkciite no na kraj zaglaviv ne znam da gi povikuvam funksiite vo main delot...samo toa mi treba da gi povikuvam funkciite na main ..no ne znam pomos i fala!!!!:plachko2::plachko2::plachko2::plachko2::bravo:
    Код:
    #include<iostream>
    #include<string>
    using namespace std;
    
    class Muzicar{
        char ime[15];
        int album;
        int singl;
        int koncerti;
        int nagradi;
        int otkazani;
        public:
            Muzicar(){};
            Muzicar(char *kime,int a,int s,int k,int n,int o)
            {
                strncpy(ime,kime,14);
                album=a;
                singl=s;
                koncerti=k;
                nagradi=n;
                otkazani=o;
            }
            void  setime(char *i)
            {
                strncpy(ime,i,14);
            }
            char const *getime()
            {
                return ime;
            }
                    
           void statistika(Muzicar inf[],int n)
           {
               int i=0;
               for(i=0;i<n;i++)
               {
                   cout<<"Ime:"<<inf[i].ime<<endl;
                   cout<<"Broj na izdadeni Albumi:"<<inf[i].album<<endl;
                   cout<<"Broj na Singlovi:"<<inf[i].singl<<endl;
                   cout<<"Broj na odrzani Koncerti:"<<inf[i].koncerti<<endl;
                   cout<<"Broj na Nagradi:"<<inf[i].nagradi<<endl;
                   cout<<"Broj na otkazani koncerti:"<<inf[i].otkazani<<endl;
               }
           };
           void prima(Muzicar pr[],int e)
           {
               int i=0;
               for(i=0;i<e;i++)
               {
               cout<<"Vnesi ime:";
               cin>>pr[i].ime;
               cout<<"Broj na izdadeni albumi :"<<endl;
               cin>>pr[i].album;
           }
       };        
       };     
       int main()
       {
       Muzicar q,w;
       statistika();
       statistika();    
    return 0;
    }
     
  2. burce

    burce
    Intern

    267
    38
    1 Април 2009
    Код:
    q.statistika();
    //ili
    w.statistika();
    
     
  3. burce

    burce
    Intern

    267
    38
    1 Април 2009
    Ооо. ако подобро погледнам, тебе ти требаат овие методи да се статички за да има некоја смисла да праќаш низа од објекти како параметар.

    Подобро би ти било класата да си ја печати својата статистика, а лупот да ти биде надвор.
     
  4. &YL

    &YL
    Intern

    26
    0
    5 Март 2010
    Код:
     In function `int main() ':
    63 no matching  function for call to `Muzicar::prima()' 
    46void Muzicar::prima(Muzicar*, int)
     are void Muzicar::prima(Muzicar*, int)   
    no matching  function for call to `Muzicar::statistika()' 
    33 void Muzicar::statistika(Muzicar*, int) 
    are void Muzicar::statistika(Muzicar*, int) 
    ovie greski mi gi isfrluva!!!????
     

    Прикачени датотеки:

    • Untitled.jpg
      Untitled.jpg
      Големина:
      14.4 KB
      Прегледи:
      13
  5. burce

    burce
    Intern

    267
    38
    1 Април 2009
    Sorry, не гледам до толку убаво, ако можеш зголеми...
     
  6. maximilian

    maximilian
    Gaining Experience

    1,064
    74
    26 Март 2008
    Значи, во конструкторот без параметри што ти е (default конструкторот) не го оставај само со големите загради, т.е. не го оставај празен. Дефинирај некаква вредност за сите променливи што ти се во private, т.е. за сите бројни променливи, дефинирај да се нули, а за сите стрингови - празни стрингови.

    Бидејќи во дифолт конструкторот не си ставил никакви вредности, а од друга страна, во главната функција со самото декларирање на објектите ги повикуваш default конструкторите. Е сега, кога ја повикуваш функцијата, всушност во меморјата нема ништо освен доделена меморија за променливите, и затоа ти прави проблеми според мене.

    Неам време сеа да компилирам, пробај во дифолт конструкторот да дефинираш некакви вредности, па види дали е до тоа и пиши.
     
  7. DekoRoker

    DekoRoker
    Gaining Experience

    625
    53
    12 Септември 2009
    Машко
    Студент ФИНКИ
    Ти кажа burce, тоа е повикот, функцијата prima() ти е тотално непотребна...Задачата не ти бара да креираш функција со која што ќе ги полниш сите објекти туку само да си печати информации за низа од музичари... затоа во таа функција ќе си имаш како влезни аргументи низа од музичари и број на елементи во низата, а внатре во функцијата со еден циклус ќе ја повикуваш функцијата statistika() за тековниот музичар... а во мејнот ќе си ја повикаш функцијата за статистика што си ја напишал надвор од класата, а ако сакаш да го повикаш тој метод тогаш идеш q.statistika(); и толку..
     
  8. mendi19

    mendi19
    Intern

    349
    11
    31 Јануари 2010
    Машко
    default konstruktorot neka e na primer vaka
    Код:
    Muzicar(){
                strcpy(ime,"Bethoven");
                album=2;
                singl=3;
                koncerti=1;
                nagradi=1;
                otkazani=1;
                }
    @DekoRoker mislis nesto vaka za funkcijata prima() e slednovo
    Код:
     void prima(Muzicar pr[],int e)
           {
               int i=0;
               for(i=0;i<e;i++)
               {
               Muzicar::statistika();
                      }   
               }        
       };    
       int main()
       {  
           Muzicar q;     
           q.statistika();
    return 0;
    } 
    uppppssss greska a zzzz:isplashen::isplashen:
     
  9. DekoRoker

    DekoRoker
    Gaining Experience

    625
    53
    12 Септември 2009
    Машко
    Студент ФИНКИ
    Функцијата е ок, само што имаш pr.statistika(); наместо Muzicar::statistika();
    За да видиш дали ок ти работи функцијата prima() во мејнот направи низа од музичари со различни вредности во променливите и повикај си ја, да кажеме:
    Muzicar muzicari[3];
    muzicar[0]....
    muzicar[1]...
    muzicar[2]... //tuka nekako vnesuvas vrednosti vnatre vo objektite
    и после си ја повикуваш функцијата како prima(muzicar,3); и готово..

    @mendi19 немора да значи дефулт конструкторот да така да оди.. тоа ако баш така ти се бара.. обично тој конструктор иницјализира се на 0, каде што Int применливите се 0, float и double 0.0 a char и char* променливите се '\0'
     
  10. mendi19

    mendi19
    Intern

    349
    11
    31 Јануари 2010
    Машко
    ne ne go prima vaka ::

    Код:
    pr[i].statistika();
    eve sto pokazuva!!:isplashen:
    Код:
     
     In member function `void  Muzicar::prima(Muzicar*, int)': 
    no matching  function for call to `Muzicar::statistika()' 
     void Muzicar::statistika(Muzicar*, int)
      void Muzicar::statistika(Muzicar*, int) 
     
     
  11. DekoRoker

    DekoRoker
    Gaining Experience

    625
    53
    12 Септември 2009
    Машко
    Студент ФИНКИ
    функцијата prima() стои надвор од класата
     
  12. mendi19

    mendi19
    Intern

    349
    11
    31 Јануари 2010
    Машко
    ne pa ja staviv vnatre ....isto tie greski:zbunet2::glavaodzd:
     
Слични теми
  1. AMD_fan
    Одговори:
    19
    Прегледи:
    2,291
  2. goodboy
    Одговори:
    8
    Прегледи:
    1,436
  3. dimitars
    Одговори:
    9
    Прегледи:
    1,248
  4. DaDo|BT
    Одговори:
    9
    Прегледи:
    4,784
  5. Xenor
    Одговори:
    6
    Прегледи:
    1,260
Вчитување...

Сподели

Вчитување...