C pomoc kod pokazivaca sa nizom brojeva

poruka: 12
|
čitano: 3.007
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
C pomoc kod pokazivaca sa nizom brojeva

Zanima me kako se pravilno koriste pokazivaci u c jeziku kad su u pitanju polja integera...

Na primjer:

 

ja koristim ovako ali mi ne radi uvijek:

 

void blabla(int *a[]){

a[i]=...;

naredbe;

}

 

int main (){

int k[50];

naredbe;

 

blabla(&k);

 

naredbe;

getch();

return 0;

}

 

ako moze tko pomoc, hvala :)))

 
0 0 hvala 0
14 godina
neaktivan
offline
C pomoc kod pokazivaca sa nizom brojeva

Buduci da je polje vec pokazivac nemas potrebe da jos jednom stavljas pokazivac na njega

 

dakle

void fja(int *A)

ili

void fja(int A[]) // je u potpunosti isto

 

int fja(int *A[]) // to je pokazivac na pokazivac sto je ekvivalent A[][]

 

naravno kada imas 2 dimenzije moras staviti velicinu druge fja(int A[][broj])

 

 

 
1 0 hvala 0
15 godina
neaktivan
offline
Re: C pomoc kod pokazivaca sa nizom brojeva

Evo programa, sve radi samo javlja warning na ubacivanje niza u funkciju...

 

 

 

#include <stdio.h>

#include <conio.h>

 

int abs(int a){ // |a|; a e Z

   if (a<0)

     a*=-1;

   return a;

   }

 

int potn(int a, int n){ // a^n; a e Z; n e N

   int i, pot=1;

   for (i=0; i<n; i++)

     pot*=a;

   return pot;

   }

 

int npc(int k[], int s, int d){ // Null Point Check

   int i, r=0;

   for (i=s; i>=0; i--){

     r+=k[i]*potn(d, i);

     }

   return r;

   }

 

void horner(int k[], int *s, int d){ // Horner's method

    int i;

    for (i=*s; i>=1; i--){

      k[i-1]=d*k[i]+k[i-1];

      }

    for (i=0; i<*s; i++)

      k[i]=k[i+1];

    *s=*s-1;

    }

 

int main (){

   int k[50], s, i, a;

 

   printf("s=");

   scanf("%d", &s);

 

   for (i=s; i>=0; i--){

     printf("k[%d]=", i);

     scanf("%d", &k[i]);

     }

 

   a=abs(k[0]);

 

   for (i=1; i<=a; i++)

     if (a%i==0){

       if (npc(k, s, i)==0){

        printf("|+%d\n", i);

        horner(&k, &s, i);

        i--;

        }

       if (npc(k, s, -1*i)==0){

        printf("|-%d\n", i);

        horner(&k, &s, -1*i);

        i--;

        }

       }

 

   getch();

   return 0;

   }

Poruka je uređivana zadnji put čet 10.3.2011 18:06 (calex3).
14 godina
neaktivan
offline
C pomoc kod pokazivaca sa nizom brojeva

Dakle, ako ti treba vaijablini parametar koristi referencu. Napr.

 

void swap( int &a, int &b ) ...

 

int main()

{

...

int a, b;

..

swap(a, b);

}

 

Kada imas array.

void nesto( int k[] ) {

...

}

 

ili

 

void nesto( int *k ) {

...

}

 

int main()

{

int k[22];

...

nesto( k ); // ne &k

 

// ako imas varijablu

int t;

nest( &t );

}

 

 

Dakle array je vec sam po sebi pokazivac tako da netreba ga assignat nigdje.

 

int A[22];

int *k = A; // ne *k = &A

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: C pomoc kod pokazivaca sa nizom brojeva

Ovako nesto? *program 2*

Btw u c-u ne radu referance na taj nacin kao u c++u..

 

#include <stdio.h>
#include <conio.h>

void swap(int &a, int &b){
     a=1; b=0;
     }

int main (){
    int a=0,b=1;
   
   
    swap(a, b);
   
   
    printf("%d %d", a, b):
   
    getch();   
    }

program 2

#include <stdio.h>
#include <conio.h>

void sort(int a[], int n){
     int i, j, t;
     for (i=n-2; i>=0; i--)
         for (j=0; j<=i; j++)
             if (a[j]>a[j+1]){
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
                }
     }

int main(){
    int a[50];
    int i, n;
   
    scanf("%d", &n);
    for (i=0; i<n; i++)
        scanf("%d", &a[i]);
       
    sort(a, n);
   
    printf("sort(a)\n");
    for (i=0; i<n; i++)
        printf("%d\n", a[i]);
   
   
   
   
    getch();
    }

Poruka je uređivana zadnji put pet 11.3.2011 18:56 (calex3).
14 godina
neaktivan
offline
C pomoc kod pokazivaca sa nizom brojeva

fja swap treba ovako izgledati

 

void swap(int &a, int &b)

{

  int t = a;

  a = b;

  b = t;

}

 

Reference su drugo ime za varijablu, a ne pokazivaci.

Sto se tice swapa, to ti je kao kada preljevas iz jedne case u drugu, treba ti jedna dodatna pomocna casa.

 
0 0 hvala 0
14 godina
offline
C pomoc kod pokazivaca sa nizom brojeva

A[i]  = (A + i)*

logika ne postoji.
 
0 0 hvala 0
14 godina
neaktivan
offline
Re: C pomoc kod pokazivaca sa nizom brojeva
KKristijan kaže...

A[i]  = (A + i)*

  A[i] == *(A + i)

 

Milsim da je ovo razumljivije XD

14 godina
neaktivan
offline
C pomoc kod pokazivaca sa nizom brojeva

mislim da ti treba

int **a

 

što je array pointera

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: C pomoc kod pokazivaca sa nizom brojeva
Budimir kaže...

fja swap treba ovako izgledati

 

void swap(int &a, int &b)

{

  int t = a;

  a = b;

  b = t;

}

 

Reference su drugo ime za varijablu, a ne pokazivaci.

Sto se tice swapa, to ti je kao kada preljevas iz jedne case u drugu, treba ti jedna dodatna pomocna casa.

pokusajem ti rec da ne radu u c jeziku...znam da triba pomocna varijabla :P

pokusaj u .c fileu komplajat :D

14 godina
neaktivan
offline
C pomoc kod pokazivaca sa nizom brojeva

Dobro da reference su u C++, ali za arraye ti svejedno ne trena jos jedan pokazivac.

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: C pomoc kod pokazivaca sa nizom brojeva

Znam shvatio sam ;)

Hvala <3

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice