Umetanje

1

Umetanje

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Imam jedan problem sa jednim zadatkom. Trebam da umetnem elemente jednog niza u drugi niz izmedju k-tog i k+1-tog elementa. Evo kako sam ja poceo, ali nikako ne uspevam da ga lepo napisem.

#include <stdio.h> #include <stdlib.h> int main() {    while(1){    int a[51], b[105], k, i, n, n1;    printf("Broj elemenata prvog i drugog niza: ");    scanf("%d %d", &n, &n1);    if(n <= 0 || n1 <= 0)       break;    printf("\nElementi prvog niza: ");    for(i = 0; i < n; i++)       scanf("%d", &a[i]);    printf("\nElementi drugog niza: ");    for(i = 0; i < n1; i++)       scanf("%d", &b[i]);    printf("\nk: ");    scanf("%d", &k);    for(i = 0; i < n; i++)       b[k++] = a[i];    printf("\nUredjen niz: ");    for(i = 0; i < n + n1; i++)       printf("%d ", b[i]);    printf("\n\n\n");    }    system("PAUSE");    return EXIT_SUCCESS; }

Mozete li mi pomoci i reci gde gresim i kako da ispravim?

Pokusao sam da pronadjem gresku preko dibagera, ali jos nisam to dobro savladao tako da mi i ne ide bas dobro.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14828
  • Gde živiš: Niš

Umetanje elemenata u niz podrazumeva redimenzionisanje niza. Ako imaš niz od 10 elemenata u koji umećeš niz od 5 elemenata nakon umetanja dobijaš niz od 15 elemenata. Dakle, to bi bio ispravan način. Ako si radio dinamičku alokaciju, iskoristi to. Zatim, kod umetanja moraš ostatak prvog niza od pozicije k da pomeriš za n1 pozicija. Taj korak prethodi umetanju, a posle toga petlja koju si napisao može da završi posao.

Svakako, ovo su elementarne stvari. Stavi to na papir i prođi kroz par primera. Kada shvatiš šta treba da uradiš onda ćeš videti da je prelako... Very Happy



offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Znam da sve to treba da se uradi, ali ne znam kako da to pretvorim u kod. Pokusavao sam sve zivo da ostatak prvog niza pomerim napred, ali mi nikako ne ide. Kako bih to trebao da uradim?Very Happy

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14828
  • Gde živiš: Niš

Jedna petlja, od k do n-1, A[i+n1] = A[i] i to je sve.

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Ne kapiram. Gde treba da stoji ta petlja i kako da izgleda?

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14828
  • Gde živiš: Niš

vasa.93 ::Zatim, kod umetanja moraš ostatak prvog niza od pozicije k da pomeriš za n1 pozicija. Taj korak prethodi umetanju, a posle toga petlja koju si napisao može da završi posao.A drugo pitanje - wtf?

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Napisano: 20 Jul 2014 14:12

Ma ne kapiram kako bih trebao da ostatak prvog niza od pozicije k pomerim za n1 pozicija. Kako to da uradim?

Dopuna: 20 Jul 2014 15:05

vasa.93 ::Jedna petlja, od k do n-1, A[i+n1] = A[i] i to je sve.

Ja ne kapiram ovo uopste. Gde trebam da stavim a[i+n1] = a[i]?

Dopuna: 20 Jul 2014 15:29

Ne kapiram sta znaci ovo od k do n - 1. Kako da to pretvorim u kod?Very Happy

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14828
  • Gde živiš: Niš

Zezaš me? Shocked Govorim o običnoj for petlji, for(i=k;i<n;i++)...

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Ali opet nece. Opet ne ispisuje dobre rezultate. Evo, pogledaj ceo kod:

#include <stdio.h> #include <stdlib.h> int main() {    while(1){    int a[51], b[105], k, i, n, n1;    printf("Broj elemenata prvog i drugog niza: ");    scanf("%d %d", &n, &n1);    if(n <= 0 || n1 <= 0)       break;    printf("\nElementi prvog niza: ");    for(i = 0; i < n; i++)       scanf("%d", &a[i]);    printf("\nElementi drugog niza: ");    for(i = 0; i < n1; i++)       scanf("%d", &b[i]);    printf("\nk: ");    scanf("%d", &k);    for(i = k; i < n - 1; i++)       a[i+n1] = a[i];    for(i = 0; i < n; i++)       b[k++] = a[i];    printf("\nUredjen niz: ");    for(i = 0; i < n + n1; i++)       printf("%d ", b[i]);    printf("\n\n\n");    }    system("PAUSE");    return EXIT_SUCCESS; }

Gde sada gresim?

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14828
  • Gde živiš: Niš

Grešiš u tome što menjaš oba niza, totalno bespotrebno. Ja sam niz A uzeo kao primer, nisam ga poistovetio sa tvojim nizom a. Pre svega odluči koji ćeš niz da umećeš, i u koji ćeš niz da umećeš elemente. Menjaš jedino niz u koji umećeš elemente!

Imaš niz 1, 2, 3, 4, 5 (dimenzija mu je n1=5) u koji hoćeš da umetneš niz 8, 9 (n2=2) počevši od pozicije 3 (posmatrajmo sada sa logičke strane, znači pod pozicijom podrazumevam poziciju u nizu počevši od 1. U ovom slučaju na poziciji 3 je broj tri (k je 3-1=2). Najpre treba pomeriti sve elemente prvog niza za dva (n2) mesta. To postižeš prvom petljom. Tada dobijaš ovakav niz: 1, 2, _, _, 3, 4, 5. Nakon toga samo prepišeš ceo drugi niz počevši odpozicije k. To postižeš drugom petljom i to je cela poenta.

Ko je trenutno na forumu
 

Ukupno su 626 korisnika na forumu :: 72 registrovanih, 9 sakrivenih i 545 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, 8u47, 9k38, _Sale, A.R.Chafee.Jr., ALEXV, Andrija357, Apok, BrcakRS, Bvp, Ciri1994, Cirkon, Dioniss, Dogma21, Dragan7777, Duh sa sekirom, ElvisP, g_g, gasa97, Gogi_avio, goxin, HrcAk47, Jeremiah, Jester, jodzula, JOntra, kaisarevic1, Kichma, Kobrim, Lucije Kvint, luka35, Marko Marković, mercedesamg, Miki281, milenko crazy north, Miler88, Milos ZA, MiroslavD, Mis uz pusku, MK10, mocnijogurt, Morava71, mrm, MunzeKonze, nikola11, Nmr, Nobunaga, Perudin_92, Piani Jazzer, Promising0, Qvazimodo, RED4G-304, repac, Rupert, samo_citam, Sevetar, Tafocus, Tankosić, theNedjeljko, Tila Painen, Tristan_Bantam, username_25, v82, vaci, VanZan, vidra1, Vlada76, Volkhov-M, Vujkeu, xAlex2, Zanzibar, ČOBAN