» »

problem s funkcijo-C++

problem s funkcijo-C++

hexor ::

Pozdrav vsem!

Prosil bi nekoga,če mi lahko pove oz. pomaga pri naslednji stvari-namreč imam fukcijo,ki vsebuje tri parametre(tabelo,njeno dimenzijo,ter določen parameter-štejem ponovitve tega parametra v tabeli).Sedaj pa mi v main-u,ko skušam klicati funkcijo javi napako(sumim na način klicanja tabele-po referenci ali kako že)...
Hvala vsem za pomoč!

#include<iostream>
#include<time.h>
using namespace std;

int ponovitev(int tab[],int velikost,int stevilo)
{
    int stevec_stevil=0;
    
    for(int i=0;i<velikost;i++)
    {
            tab[i]=rand()% velikost + 1;
            
            if(tab[i]==stevilo)
            {
                               stevec_stevil++;
                               }
                               
                               }
                               
return stevec_stevil;

}

int main()
{
    cout<<ponovitev(tab[0],10,5); // napaka
    
system("PAUSE");
return 0;

}
    
  • spremenil: Mavrik ()

technolog ::

ponovitev je tipa (int*, int, int), ti jo pa kličeš kot da je (int, int, int).

techfreak :) ::

Lahko pa pri funkciji kot prvi atribut daš int &tab, v njej pa namesto tab[i] uporabiš *(&tab+i).

hexor ::

hmm da bi stvar rešu z kazalcem?
Drugače nebi šlo?

techfreak :) ::

Polja so kazalci, stvar pa lahko rešiš tako, da funkciji podaš polje (tab) in ne samo prvi element polja (tab[0]).

dice7 ::

ponovitev(tab,10,5);

hexor ::

@dice7 še zmeraj ne deluje...

mn ::

Prvo kot prvo, napiši točno napako, ki ti jo javi kompajler ker boš tako vsem skupaj močno olajšal delo. Prvi problem ki ga jaz vidim je, da nikjer ne deklariraš arraya tab.
Torej pred "cout<<ponovitev(tab[0],10,5); // napaka" napiši "int tab[10];"

Groove ::

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int ponovitev (int tab[], int velikost, int stevilo)
{
    int stevec_stevil = 0;
    for(int i = 0; i < velikost; i++)
    {
        tab[i] = rand() % velikost + 1;
        if(tab[i] == stevilo)
        {
            stevec_stevil++;
        }
    }
    return stevec_stevil;
}

int main()
{
    srand (time(NULL));
    int tab[10];
    cout << ponovitev (tab, 10, 5);
    cin.get();
    return 0;
}



Tole bo verjetno, ane? :)
Manjka ti deklaracija tabele (int tab[10]), srand(time(NULL)), system("PAUSE") naj se načeloma ne bi uporabljal, pa knjižico stdlib.h potrebuješ. :)

Zgodovina sprememb…

  • spremenil: Groove ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C] Funkcija vrnitev kazalca

Oddelek: Programiranje
101130 (846) MrStein
»

[C++] Iskalno drevo implementacija

Oddelek: Programiranje
52156 (1714) eXoo
»

Pomoč pri programiranju z javo

Oddelek: Programiranje
203390 (2317) milc
»

[c++]Urejanjepolja

Oddelek: Programiranje
91297 (1118) purki
»

Iskanje naslednje ponovitve - najboljši algoritem (strani: 1 2 )

Oddelek: Programiranje
724306 (3364) Thomas

Več podobnih tem