Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Spajanje dva ucitana niza...

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Spajanje dva ucitana niza...

Strane: 1 2

[ Pregleda: 9919 | Odgovora: 22 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nigth rider
Ilija Vucetic
Student

Član broj: 272951
Poruke: 12
95.180.70.*



Profil

icon [Zadatak] Spajanje dva ucitana niza...07.09.2011. u 21:54 - pre 152 meseci
Napisati funkciju na programskom jeziku c za spajanje dva ucitana niza celih brojeva u rezultujuci niz koji sadrzi elemente koji su isti u oba niza. U glavnom programu uneti duzinu niza i pozvati funkcije za ucitavanje, spajanje i ispis rezultujuceg niza.

 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3430
*.dynamic.sbb.rs.

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...07.09.2011. u 22:12 - pre 152 meseci
Oko cega ti je ovde konkretno potrebna pomoc? Okaci deo koda koji si napisao do sada da bi mogli da vidimo kako si zapoceo i da jednostavnije objasnimo sta je dalje potrebno.
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

nigth rider
Ilija Vucetic
Student

Član broj: 272951
Poruke: 12
95.180.70.*



Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...07.09.2011. u 22:41 - pre 152 meseci
#include<stdio.h>
Code:

main()
{
void citaj();
int n,m;

printf("Unesite broj elemenata prvog niza: ");
scanf("%d",&n);
citaj(n);

printf("Unesite broj elemenata drugog  niza: ");
scanf("%d",&m);
citaj(m);
getch();



}

void citaj(int x)
{
    int i,a[100];
    for(i=0;i<x;i++)
    {
        printf("[%d] element niza je:",i+1);
        scanf("%d",&a[i]);
    }

}

Ovo je deo koda koji sam napravio , uspem da napravim funkciju za unos clanova nizova ali problem mi je kada treba da napravim funkciju za spajanje u novi niz samo onih clanova koji su jednaki . Kako uopste da poredim sve clanove i kako da prosledim nizove u funkciju ? Veoma bih bio zahvalan na pomoci .

[Ovu poruku je menjao X Files dana 08.09.2011. u 14:49 GMT+1]
 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3430
*.dynamic.sbb.rs.

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...07.09.2011. u 23:49 - pre 152 meseci
Posto vec znas koliki je konacan broj elemenata (argument funkcije), nemoj da ogranicavas program tako sto ces da hardkodiras 100 vec iskoristi argument koji prosledjujes. Takodje ovde imas lokalnu varijablu a koju neces moci da koristis van funkcije ucitaj() tako da ovako ucitavanje nije korisno. Resenje je na primer da prosledis funkciji niz u koji zelis da se ucitaju elementi. Pre toga ces u main() metodi morati da inicijalizujes (kad ucitas koliko je veliki niz) niz koji ces onda proslediti funkciji citaj(duzina_niza, niz);. Tako ce ti citaj() funkcija izgledati ovako:
Code (c):

void citaj(int x, int *a){
     int i;
     for(i=0;i<x;i++){
          printf("[%d] element niza je:",i+1);
          scanf("%d",&a[i]);
     }
}
 


Ispisivanje niza se radi slicno.
Spajanje nizova takodje nije mnogo komplikovano. To mozes da uradis tako sto (kada ucitas nizove) pogledas koji je niz manji (tj da li je manje m ili n) i inicijalizujes nov niz, npr. c[manji_broj]. Onda prolazis kroz jedan od ta dva niza i proveravas da li trenutni element postoji u drugom nizu. Za ovo su ti potrebne dve ugnjezdene petlje, jedna za svaki niz, i provera da li su elementi jednaki i ako jesu upisuje tu vrednost u elemnt c. Imaju vidu doduse, da ovo nece da radi savrseno ako se elementi ponavljaju, tacnije radice ali ce se neke vrednosti ponavljati.
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

nigth rider
Ilija Vucetic
Student

Član broj: 272951
Poruke: 12
95.180.70.*



Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...08.09.2011. u 00:19 - pre 152 meseci
Hvala na pomoci ali sada mi nije jasno kako da inicijalizujem niz u glavnoj funkciji, koliko sam ja shvatio funkcija citaj bi trebalo da ucita dva niza a zatim funkcija spoji da proveri koji su sve clanovi niza jednaki i da ih spoji u novi niz, ali taj deo oko provere i ugnjezdenih petlji mi nije bas jasan jel to nesto kao npr:
Code:

for(i=0;i<n;i++)
for (=0;j<n;j++)
if(a[i]=b[j])

.................................

sta dalje kako sve to dodeliti u treci niz c npr , molim vas za malo vise detalja i pomoci .
----------------------------------------------------------------------------
Code:

#include<stdio.h>

main()
{
    void citaj();
    int n,m,i,a[],b[];

    printf("Unesite broj elemenata prvog niza: ");
    scanf("%d",&n);
    citaj(n,a[]);

    printf("Unesite broj elemenata drugog niza: ");
    scanf("%d",&m);
    citaj(m,b[]);


}

void citaj(int x, int *a){
     int i;
     for(i=0;i<x;i++){
          printf("[%d] element niza je:",i+1);
          scanf("%d",&a[i]);
     }
}
 --------------------------------------------------------


[Ovu poruku je menjao X Files dana 08.09.2011. u 14:49 GMT+1]
 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3430
*.dynamic.sbb.rs.

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...08.09.2011. u 01:11 - pre 152 meseci
Jeste tako nesto, evo konkretno funcije spoji():
Code (c):

void spoji(int *a, int *b, int *c){
     int k = 0; //brojac za niz c
     int i,j; //brojaci za a i b
     for(i=0;a[i]!='\0';i++){ // \0 je NULL i oznacava kraj niza, tako da ne moras da prosledjujes funciji i koliko clanova ima niz
          for(j=0;b[j]!='\0';j++){
               if(a[i] == b[j]){
                    c[k++] = a[i]; //dodeljuje se vrednost koja se pojavljuje u oba niza na poziciju k i uvecava se brojac
               }
          }
     }
     c[k] = '\0'; //zavrsavas niz sa NULL terminatorom tj. \0
}
 

Sto se tice glavne funcije, kada procitas m i n, odmah inicijalizujes niz sa brojem elemenata m ili n koji ce da drzi clanove. Na primer onda bi glavna funcija izgledala ovako:
Code (c):

void main(){
     void citaj();
     void spoji();
     void ispisi();

     int n,m, min;
     printf("Unesite broj elemenata prvog niza: ");
     scanf("%d",&n);
     int a[n]; //inicijalizacija prvog niza sa n clanova
     citaj(n,a);

     printf("Unesite broj elemenata drugog niza: ");
     scanf("%d",&m);
     int b[m]; // inicijalizacija drugog niza m clanova
     citaj(m,b);

     if(m>n){
          min = n;
     }else{
          min = m;
     }
     int c[min]; //inicijalizujes treci niz koji ce da sadrzi vrednosti koje se pojavljuju u oba niza
     
     spoji(a,b,c);
     ispisi(c);
}
 

Nemoj da me drzis za rec, mozda ima negde neka greska u sintaksi ili slicno, ali mislim da je to to. Naravno, iako radi ako ti nesto nije jasno pitaj :)
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

nigth rider
Ilija Vucetic
Student

Član broj: 272951
Poruke: 12
95.180.70.*



Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...08.09.2011. u 02:50 - pre 152 meseci
Kompletan kod izgleda ovako, morao sam da stavim da su nizovi ograniceni na 100 jer c ne prihvata nacin inicijalizacije tako sto cu da mu dodelim n ili to bi verovatno trebalo preko dinamicke dodele memorije ali ja sa tim bas slabo stojim.

Code:
#include<stdio.h>

main()
{
    void citaj();
    void sortiraj();
    void pisi();

     int n,m, a[100],b[100],c[100];
     printf("Unesite broj elemenata prvog niza: ");
     scanf("%d",&n);
    
     citaj(n,a);

     printf("Unesite broj elemenata drugog niza: ");
     scanf("%d",&m);
     
     citaj(m,b);

   
     
     sortiraj(a,b,c);
     pisi(c);
}


void citaj(int x, int *a){
     int i;
     for(i=0;i<x;i++){
          printf("[%d] element niza je:",i+1);
          scanf("%d",&a[i]);
     }
}

void sortiraj(int *a, int *b, int *c){
     int k = 0;                      
     int i,j; 
     for(i=0;a[i]!='\0';i++){
          for(j=0;b[j]!='\0';j++){
               if(a[i] == b[j]){
                    c[k++] = a[i]; 
               }
          }
     }
     c[k] = '\0'; 
}

void pisi(int *a)
{
    int i;
    for(i=0;a[i]!='\0';i++)
    {
        printf("Niz c je %d\t",a[i]);
    }
}



E kada krenem da kompajliram ovaj kod sve se pokrene i uspem da upisem clanove niza ali kada treba da izbaci obradu izbaci sledecu poruku :
...


Sad , predpostavljam da je greska negde u funkciji za sortiranje ali gde ?
Hvala

[Ovu poruku je menjao X Files dana 08.09.2011. u 14:48 GMT+1]
 
Odgovor na temu

miodrags
Miodrag Smiljevic
Inženjer projektant
ISC Contact d.o.o.
Beograd

Član broj: 90519
Poruke: 18
*.adsl-3.sezampro.rs.

Sajt: solair.eunet.yu/~miodrags


+1 Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...08.09.2011. u 07:44 - pre 152 meseci
Umesto :
Code:

if(a==b[j])

Treba :
Code:

if(a[i]==b[j])




Miodrag Smiljević, dipl. ing. el.
 
Odgovor na temu

nigth rider
Ilija Vucetic
Student

Član broj: 272951
Poruke: 12
95.180.70.*



Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...08.09.2011. u 13:18 - pre 152 meseci
Slucajno sam prilikom unosa koda na forum napisao
Code:

a==b[i]

...u kodu mi je ispravno i nece i dalje izbacuje istu gresku . Zaista sam probao dosta toga i nece, kao da funkcija za sortiranje a kasnije za ispis nije ispravna.


[Ovu poruku je menjao X Files dana 08.09.2011. u 14:52 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...08.09.2011. u 13:51 - pre 152 meseci
@nigth rider

Kod stavljaj u CODE tagove a ne u B tagove. Tada "indeks od i" nece biti protumacen kao ITALIC. Takodje, screenshotove najbolje uploaduj na ES server (Upload uz poruku).

Naslov teme (originalno: "Pomoc u resenju zadatka hitno !!!") daj tako da sugerise na sta se odnosi... Teme sa naslovom kako si napisao se najcesce brisu i bez citanja.


Hvala na razumevanju.
 
Odgovor na temu

miodrags
Miodrag Smiljevic
Inženjer projektant
ISC Contact d.o.o.
Beograd

Član broj: 90519
Poruke: 18
*.adsl-3.sezampro.rs.

Sajt: solair.eunet.yu/~miodrags


+1 Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...08.09.2011. u 13:57 - pre 152 meseci
U programu citaj na kraju dodaj naredbu :
Code:

a[i]='\0';


Miodrag Smiljević, dipl. ing. el.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...08.09.2011. u 14:16 - pre 152 meseci
Ma ne valja ti program ni malo.

Ovo što ti je miodrags predložio, popravilo bi stanje, ali to ne znači da je program mnogo bolji. Nizovi celih brojeva nemaju kao terminator NULL karakter ('\0') već je to samo kod char nizova.

Drugo, u zahtevu zadatka se kaže da se učitavaju nizvoi CELIH brojeva, a broj 0 pripada skupu celih brojeva, tako da se ne može koristiti kao terminator niza brojeva. Uveo si varijable n i m pa ih i koristi.

Kako ja shvatam zadatak, potrebno je napraviti niz koji je PRESEK dva skupa definisinah nizovima.
Primer, ako je niz a sastavljen od elemenata (1, 1, 1), a niz b od elemenata (1,2) tada bi program na izlazu trebalo da da (1), a u tvom slučaju bi (kada bi program zaista i radio) dobio (1,1,1).

Sreća da u ovaj deo programa nisi ni stigao:

Code:

void pisi(int *a)
{
    int i;
    for(i=0;a[i]!='\0';i++)
    {
        printf("Niz c je %d\t",a[i]);
    }
}


U svakom prolasku kroz petlju ispisuješ string "Niz c je ".

Program treba izmeniti tako da funkcija koja formira niz c izbacuje iz drugog niza (b) elemente koji su pronađeni da se nalaze i u nizu a
 
Odgovor na temu

nigth rider
Ilija Vucetic
Student

Član broj: 272951
Poruke: 12
95.180.70.*



Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...08.09.2011. u 17:57 - pre 152 meseci
Znam i sam da kod ne valja ali me interesuje da li neko moze da mi pomogne , naime funkcije citaj i pisi rade ali sortiraj nece nikako, e sada kada sam kod m i n , nizove nemogu da inicajilizujem tako cto su napisati int a[m], int b[m].

Moze li neko da mi pruzi neku konkretnu pomoc ?

Hvala .
 
Odgovor na temu

nigth rider
Ilija Vucetic
Student

Član broj: 272951
Poruke: 12
95.180.70.*



Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...08.09.2011. u 22:09 - pre 152 meseci
Pokusao sam zadatak da resim na drugi nacin preko funkcije malloc za dinamicko dodeljivanje velicine niza i izgleda ovako :

Code:
#include<stdio.h>
#include<stdlib.h>

main()
{
    int n,m,max;
    int *A,*B,*C;
    printf("Unesite broj clanova niza A:");
    scanf("%d",&n);
    A=citaj(n);

    printf("Unesite broj clanova niza B:");
    scanf("%d",&m);
    B=citaj(m);
    
    printf("***************************************************\n");
    pisi(n,A);
    printf("***************************************************\n");
    pisi(m,B);

    if(m>n){
          max = n;
     }else{
          max = m;
     }

    C=(int*)malloc(max*sizeof(int));
    getch();
}


int citaj(int n)
{
    int i;
    int *a;

    a=(int*)malloc(n*sizeof(int));

    if(a==0)
    {
        printf("Greska!!! Nema dovoljno memorije!!!");
        return 1;
    }

    for(i=0;i<n;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }
    return realloc(a,n * sizeof(int));
    
    
}

int pisi(int n,int *a)
{
    int i;

    for(i=0;i<n;i++)
        
    {
        printf("a[%d]=",i);
        printf("%d\n",a[i]);
    }
    
    
}



E sada interesuje me kako da napravim funkciju koja ce da poredi elemente dva niza i da iste elemente smesta u novi niz?
 
Odgovor na temu

miodrags
Miodrag Smiljevic
Inženjer projektant
ISC Contact d.o.o.
Beograd

Član broj: 90519
Poruke: 18
109.121.56.*

Sajt: solair.eunet.yu/~miodrags


+1 Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...09.09.2011. u 08:57 - pre 152 meseci
Mislim da nije uopšte bilo potrebno da radiš sa funkcijama za alociranje memorije. Samo je trebalo toj funkciji (spoji ili sortiraj ) da proslediš još dva ulazna argumenta m i n i da izostaviš poređenje sa '\0' jer ti to onda nije više potrebno.

Što se tiče sugestije da taj program ništa ne valja, to nije tako. Ono što je potrebno je da napišeš još dve funkcije i da ih pozoveš pre ili u samoj funkciji sortiraj. Prva od te dve funkcije bi trebalo da sortira već unete nizove u rastućem poretku npr. :

Code:

int sort(int n, int * a)
{
    int i,j,tmp;
    if(n<=0) return n;
    for(i=0;i<n-1;i++)
      for(j=i+1;j<n;j++)   // indeksi i<j
         if(a[i]>a[j])
             {
                 tmp=a[i];  // razmena a[i] i a[j]
                 a[i]=a[j];
                 a[j]=tmp;
             }
    return n;
}


Druga od te dve funkcije bi trebalo da izbaci višestruka ponavljanja istog elementa u nizu npr. :

Code:

int scan(int n, int * a)
{
    int i,j,k;
    if(n<=1) return n;
    for(i=0;i<n-1;i++)
      for(j=i+1;j<n;j++)   // indeksi i<j
         if(a[i]==a[j])
             {
                 n--;  // smanjujem duzinu niza za 1
                 for(k=j;k<n;k++) a[k]=a[k+1];  // pomeram sve ostale elemente za jedno mesto u levo
             }
    return n;
}


Funkcije vraćaju vrednost dužine niza n i ne rade za negativno n ili za n=0 !

Miodrag Smiljević, dipl. ing. el.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...09.09.2011. u 13:53 - pre 152 meseci
Uh, kako komplikujete. Evo koda koji radi to što treba sa test primerom:

Code (c):


int main() {

   int a[] = {1,1,2,2,3,4,5},
       m=7,
       b[] = {1,1,2,5,6},
       n = 5,
       c[10],
       i,k;

   k=intersect(a, m, b, n, c);

   printf("Rezultat:\n");
   for (i=0; i<k; i++)
      printf("c[%d]= %d\n", i, c[i]);

   exit(0);
}

int intersect( int *set1, int set_size1,
               int *set2, int set_size2,
               int *result) {

   int i,j,k;

   k=0;
   for (i=0; i<set_size1; i++)
      for (j=0; j<set_size2; j++)
         if( set1[i] == set2[j] ) {
            result[k++] = set1[i];
            set2[j] = set2[set_size2-1];
            set_size2--;
            break;
         };
   return k;
}
 


Funkcija intersect nalazi presek dva niza, tako što ide u glavnoj petlji po elementima prvog niza. U unutrašnjoj petlji ide po drugom nizu, i ako nađe da postoji isti element, taj element stavlja u rezultujući niz, uvećava broj elemenata rezultujećeg niza i element drugog niza koji je pronađen u prvom briše, tako što na njegovo mesto stavlja poslednji element drugog niza, a dužinu drugog niza umanjuje za 1. Nakon pronalaska elementa koji se poklapa prekida unutrašnju petlju komandom break.

Drugi niz se menja u ovoj funkciji, a ako ti on treba za kasnije, onda pošalji njegovu kopiju...
 
Odgovor na temu

nigth rider
Ilija Vucetic
Student

Član broj: 272951
Poruke: 12
95.180.70.*



Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...09.09.2011. u 16:37 - pre 152 meseci
Uspeo sam da resim zadatak naravno uz pomoc svih vas. Zadatak izgleda ovako , ali ponovo postoji mali problem koji cu da objasnim u daljem tekstu.

Code:
#include<stdio.h>
#include<stdlib.h>

main()
{
    int n,m,i,min;
    int *A,*B,*C;
    printf("Unesite broj clanova niza A:");
    scanf("%d",&n);
    A=citaj(n);
    sort(n,A);
    

    printf("Unesite broj clanova niza B:"); 
    scanf("%d",&m);
    B=citaj(m);
    sort(m,B);
    
    
    printf("***************************************************\n");
    printf("Clanovi niza A:\n");
    pisi(n,A);
    printf("\n");
    printf("Clanovi niza B:\n");
    pisi(m,B);

    if(m>n){
          min = n;
     }else{
          min = m;
     }

    C=(int*)malloc(min*sizeof(int));
    
    presek(A,n,B,m,C);
    realloc(C,min*sizeof(int));

     printf("\n");
     printf("***************************************************\n");
     printf("***************************************************\n");
     printf("Clanovi koji su isti u oba niza su:\n");
   for (i=0; i<min; i++)
      printf("c[%d]= %d\n", i, C[i]);
     printf("***************************************************\n");
     printf("***************************************************\n");
 
   free(A);
   free(B);
   free(C);
    
    getch();
}


int citaj(int n)
{
    int i;
    int *a;

    a=(int*)malloc(n*sizeof(int));

    if(a==0)
    {
        printf("Greska!!! Nema dovoljno memorije!!!");
        return 1;
    }

    for(i=0;i<n;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }
    return realloc(a,n * sizeof(int));
    
    
}

int pisi(int n,int *a)
{
    int i;

    for(i=0;i<n;i++)
        
    {
        printf("a[%d]=",i);
        printf("%d\n",a[i]);
    }
    
    
}

int sort(int n, int * a)
{
    int i,j,tmp;
    if(n<=0) return n;
    for(i=0;i<n-1;i++)
      for(j=i+1;j<n;j++)   // indeksi i<j
         if(a[i]>a[j])
             {
                 tmp=a[i];  // razmena a[i] i a[j]
                 a[i]=a[j];
                 a[j]=tmp;
             }
    return n;
}

int presek( int *A, int set_size1,
               int *B, int set_size2,int *rezultat) {

   int i,j,k;

   k=0;
   for (i=0; i<set_size1; i++)
      for (j=0; j<set_size2; j++)
         if( A[i] == B[j] ) {
            rezultat[k++] = A[i];
            B[j] = B[set_size2-1];
            set_size2--;
            break;
         };
   return k;
  
}



Slika ispod pokazuje rad programa kada se elementnti jednog niza nalaze u elementima drugog niza u potpunosti.



Slika ispod pokazuje problem kada se u niz C smesta manji broj elemenata nego sto se nalazi u bilo kom od dva niza koja se porede , tacnije problem je u delu koda kada niz C alociram preko malloc tako sto stavim da je duzina niza min*sizeof(int).



E sada to i niije toiliko strasno bitno mi je da je program proradio i da je zadatak resen ali mi je ruzno i nepotrebno da tako ostane.

Hvala svima na pomoci.
 
Odgovor na temu

Sonec

Član broj: 284879
Poruke: 892



+332 Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...09.09.2011. u 17:57 - pre 152 meseci
Hm, ja bih rekao da ti argumenti funkcija malloc i realloc nisu dobri, tacnije za funkciju realloc, jer npr. iz ovoga

Code:
 C=(int*)malloc(min*sizeof(int));
    
    presek(A,n,B,m,C);
    realloc(C,min*sizeof(int));

se vidi da su argumentri f-je mall i realloc isti (u 1, odnosno 2 argumentu), a ne bi trebalo (sem ako min nisi menjao usput, posle malloc), f-ja realloc bi trebalo (kako bih ja uradio) da sadrzi neki KORAK, pa bi ona u pozivu izgledala
Code:
realloc(C,(min+KORAK)*sizeof(int))

takodje, ona bi trebala da bude dodeljena tom nizu, tj.
Code:
C=realloc(C,(min+KORAK)*sizeof(int))


Takodje, kada radis sa dinamickom alokacijom, bilo bi dobro da imas neku funkciju koja ce proveravati pri svakom koraku dinamicku alokaciju...

Nesto vise, mozes videti na ovom primeru: OVDE

[Ovu poruku je menjao Sonec dana 09.09.2011. u 21:27 GMT+1]
Leonardo da Vinči

Nema istine u onim naukama u kojima se matematika ne primenjuje.

Milorad Stevanović

Bog postoji zato sto je matematika neprotivurečna.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...09.09.2011. u 20:03 - pre 152 meseci
Problem je u tome što funkcija presek (u mom primeru se zvala intersect) kao svoj rezultat vraća broj članova rezultujućeg niza. Ti tu vrednost nigde ne prihvataš, nego koristiš min kao dužinu niza.

Dakle, umesto:

Code (c):

    presek(A,n,B,m,C);
    realloc(C,min*sizeof(int));
 


uradi:

Code (c):

    min = presek(A,n,B,m,C);
    realloc(C,min*sizeof(int));
 


i sve će biti kako treba...
 
Odgovor na temu

nigth rider
Ilija Vucetic
Student

Član broj: 272951
Poruke: 12
95.180.70.*



Profil

icon Re: [Zadatak] Spajanje dva ucitana niza...12.09.2011. u 18:07 - pre 152 meseci
Hvala na pomoci , sada sve zaista radi odlicno.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Spajanje dva ucitana niza...

Strane: 1 2

[ Pregleda: 9919 | Odgovora: 22 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.