Poslao: 20 Jul 2014 11:48
|
offline
- crusher
- Ugledni građanin
- 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.
|
|
Poslao: 20 Jul 2014 13:32
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- 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...
|
|
|
|
Poslao: 20 Jul 2014 13:34
|
offline
- crusher
- Ugledni građanin
- 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?
|
|
|
|
Poslao: 20 Jul 2014 13:38
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Jedna petlja, od k do n-1, A[i+n1] = A[i] i to je sve.
|
|
|
|
|
Poslao: 20 Jul 2014 14:04
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- 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?
|
|
|
|
Poslao: 20 Jul 2014 15:29
|
offline
- crusher
- Ugledni građanin
- 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?
|
|
|
|
Poslao: 20 Jul 2014 16:42
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Zezaš me? Govorim o običnoj for petlji, for(i=k;i<n;i++)...
|
|
|
|
Poslao: 20 Jul 2014 19:29
|
offline
- crusher
- Ugledni građanin
- 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?
|
|
|
|
Poslao: 20 Jul 2014 21:21
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- 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.
|
|
|
|