Poslao: 02 Okt 2017 17:50
|
offline
- Milos ZA

- Super građanin
- Pridružio: 31 Dec 2015
- Poruke: 1300
|
Pozdrav!
Potrebna mi je pomoc oko zadatka sa nizovima. Zadatak kaze da treba da unesemo dva niza i da od njih napravimo jedan. Znaci da poslednji niz treba da sadrzi sve elemente iz prethodna dva. Ja cu vam dati kod dokle sam stigao i reci gde sam zapeo.
#include<stdio.h>
main()
{
int n,i,m,j;
printf("Unesi broj elemenata 1. niza: ");
scanf("%i",&n);
int a[n];
for(i=0;i<n;i++)
{
printf("Unesi element 1. niza: ");
scanf("%i",&a[i]);
}
printf("Unesi broj elemenata 2. niza: ");
scanf("%i",&m);
int b[m]
for(j=0;j<m;j++)
{
printf("Unesi element 2. niza: ");
scanf("%i",&a[i]);
}
for()
}
Znaci zapeo sam kad treba da sastavim ta dva niza u jedan. Ne shvatam kako. Gledao sam na internetu i vidim da ima lakih resenja koja se svode na ubacivanje novih komandi i biblioteka, ali to ovde nije cilj, odnosno, zadatak treba uraditi preko FOR ciklusa.
Hvala svakom ko pokusa da mi pomogne.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 02 Okt 2017 19:38
|
offline
- Sale.S

- Elitni građanin
- Pridružio: 06 Feb 2012
- Poruke: 1872
|
Prvo je potrebno da deklarises taj treci niz. Njegova dimenzija ce biti n+m. I onda ga samo "popunis" elementima.
Ako ne znas kako da u jednoj for petlji to uradis, mozes to i sa dvije for petlje. Prvu "vrtis" n-puta, a drugu m-puta. U prvoj petlji elemente dodajes na i-tu lokaciju (petlja ide od 0 do n), a u drugoj petlji elemente dodajes na lokaciju n+i, pri cemu su granice petlje od 0 do m.
To je mozda nacin na koji ces najlakse shvatiti.
*Nevezano za ovaj zadatak, moja preporuka ti je da promenljive koje ces koristiti kao brojace u petljama, deklarises u samoj petlji (kao lokalne promenljive) te da onda ne provlacis te promenljive kroz cijeli zadatak (do kraja izvrsavanja koda). Ili opcionalno ako vec zelis tako, dosta ti je jedan brojac (osim ako ne koristis ugnjezdene petlje).
*Takodje nisam siguran da li je novijim standardima omoguceno da se na kraju main-a ne pise kljucna rec return i povratna vrednost 0.
*Preporuka:
printf("Unesi %d element 1. niza: ", i+1); // pri cemu je i brojac petlje
PS.nisi naveo tip funkcije main.
|
|
|
|
Poslao: 02 Okt 2017 20:24
|
offline
- Milos ZA

- Super građanin
- Pridružio: 31 Dec 2015
- Poruke: 1300
|
Napisano: 02 Okt 2017 21:02
Evo, uradio sam nesto. Na kraju dobijam tacno resenje, ali mislim da zadatak nisam dobro odradio. Koliko vidim, ja sam na kraju samo ponovo odstampao prva dva niza, jel tako? Nesto mi ne ide. Ne razumem kako Citat:U prvoj petlji elemente dodajes na i-tu lokaciju (petlja ide od 0 do n), a u drugoj petlji elemente dodajes na lokaciju n+i, pri cemu su granice petlje od 0 do m.. Ako mozes to malo da mi pojasnis recima ili pak kodom da mi napises pa da ja probam da shvatim.
Inace ono sto si rekao da nisam naveo tip funkcije main. Ja stvarno ne znam na sta mislis. Ja idem u skolu u kojoj imamo casove programiranja i nismo nista radili oko funkcije main. Receno nam je samo da to treba tu i tako da stoji. Ja sam vidjao po netu da ima neke veze sa void, ako se ne varam, ali nemam pojma sta to znaci. Na kraju imam scanf("%i"), jer mi to omogucava da mi se ekran ne ugasi posto se program zavrsi. Tako sam naucio u skoli.
#include<stdio.h>
main()
{
int i,j,k,n,m;
printf("Unesi broj elemenata 1. niza: ");
scanf("%i",&n);
int a[n];
for(i=0;i<n;i++)
{
printf("Unesi %i element 1. niza: ",i);
scanf("%i",&a[i]);
}
printf("Unesi broj elemenata 2. niza: ");
scanf("%i",&m);
int b[m];
for(j=0;j<m;j++)
{
printf("Unesi %i element 2. niza: ",j);
scanf("%i",&b[j]);
}
int c[n+m];
for(k=0;k<n;k++)
printf("%i",a[k]);
for(k=0;k<m;k++)
printf("%i",b[k]);
scanf("%i");
}
Dopuna: 02 Okt 2017 21:24
Evo, uradio sam. Ajde molim te da mi proveris da li mi je dobro posto dobijam dobar rezultat. Ne mogu vise da gledam ocima ovaj ekran koliko mi se spava. Mucim se sa ovim celo vece.
#include<stdio.h>
main()
{
int i,j,k,n,m;
printf("Unesi broj elemenata 1. niza: ");
scanf("%i",&n);
int a[n];
for(i=0;i<n;i++)
{
printf("Unesi %i element 1. niza: ",i);
scanf("%i",&a[i]);
}
printf("Unesi broj elemenata 2. niza: ");
scanf("%i",&m);
int b[m];
for(j=0;j<m;j++)
{
printf("Unesi %i element 2. niza: ",j);
scanf("%i",&b[j]);
}
int c[n+m];
for(k=0;k<n;k++)
{
c[i]=a[k];
printf("%i",c[i]);
}
for(k=0;k<m;k++)
{
c[j]=b[k];
printf("%i",c[j]);
}
scanf("%i");
}
|
|
|
|
Poslao: 02 Okt 2017 20:46
|
online
- vasa.93

- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14825
- Gde živiš: Niš
|
Napisano: 02 Okt 2017 21:44
Nije dobro. Da probaš da odradiš sa razumevanjem? Ovo si samo nabacao komande, nema nikakvog smisla...
Dopuna: 02 Okt 2017 21:46
Citat:int c[n+m];
for(k=0;k<n;k++)
{
c[i]=a[k];
printf("%i",c[i]);
}
for(k=0;k<m;k++)
{
c[j]=b[k];
printf("%i",c[j]);
} Nigde ne menjaš promenljive j i i u druge dve for petlje. Štampanje ti jeste dobro, jer uvek štampaš elemente prva dva niza, ali ti treći niz nije ono što ti treba, pošto u njemu setuješ samo dva elementa - c[i] i c[j], a ne svaki.
|
|
|
|
|
Poslao: 02 Okt 2017 20:49
|
offline
- Sale.S

- Elitni građanin
- Pridružio: 06 Feb 2012
- Poruke: 1872
|
Nisi me dobro razumeo.
Taj brojac "i" koji sam ja naveo je bio samo primer. Ako si ti uzeo za brojac "k", onda koristis njega, a ne "i".
Znaci ne c[i]=a[k], nego c[k]=a[k].
Dalje, u drugoj petlji sam vec rekao da dodajes na poziciju "brojac+n", tj. c[k+n]=b[k].
Isto i kod ispisa: printf("%d",c[k+n]);
Ovdje nisi dobro prepisao: printf("Unesi %i element 1. niza: ",i+1);
|
|
|
|
|
Poslao: 02 Okt 2017 20:53
|
offline
- Milos ZA

- Super građanin
- Pridružio: 31 Dec 2015
- Poruke: 1300
|
Napisano: 02 Okt 2017 21:50
Pa jesi, ali smo pisali u isto vreme .
Dopuna: 02 Okt 2017 21:53
Znaci treba ovako?
#include<stdio.h>
main()
{
int i,j,k,n,m;
printf("Unesi broj elemenata 1. niza: ");
scanf("%i",&n);
int a[n];
for(i=0;i<n;i++)
{
printf("Unesi %i element 1. niza: ",i+1);
scanf("%i",&a[i]);
}
printf("Unesi broj elemenata 2. niza: ");
scanf("%i",&m);
int b[m];
for(j=0;j<m;j++)
{
printf("Unesi %i element 2. niza: ",j+1);
scanf("%i",&b[j]);
}
int c[n+m];
for(k=0;k<n;k++)
{
c[k]=a[k];
printf("%i",c[k]);
}
for(k=0;k<m;k++)
{
c[k+n]=b[k];
printf("%i",c[k+n]);
}
scanf("%i");
}
|
|
|
|
Poslao: 03 Okt 2017 20:39
|
offline
- Sale.S

- Elitni građanin
- Pridružio: 06 Feb 2012
- Poruke: 1872
|
Napisano: 03 Okt 2017 21:36
To je bila samo jedna ideja. Naravno da se zadatak može rešiti na druge načine.
Pokreni program i proveri da li radi ono što se traži tekstom zadatka.
Dopuna: 03 Okt 2017 21:39
Milos ZA ::Na kraju imam scanf("%i"), jer mi to omogucava da mi se ekran ne ugasi posto se program zavrsi.
Ovo zavisi od razvojnog okruženja koje koristiš. Nije neophodno u svakom okruženju.
|
|
|
|
Poslao: 03 Okt 2017 20:57
|
offline
- Milos ZA

- Super građanin
- Pridružio: 31 Dec 2015
- Poruke: 1300
|
Program radi kako treba, ali sam pitao da li je i kod dobar, posto sam u jednom od postova postavio kod koji mi na kraju odstampa prva dva niza tj. ne napravi treci niz, a rezultat na ekranu je dobar.
Da ima vise resenja, to znam. Googlao sam malo i video drugacija resenja, ali ta resenja se ne uklapaju u gradivo koje ucimo u skoli tako da ja ne smem previse da se odmacinjem od onoga sto radimo na casovima.
Ovo oko scanf komande sam rekao da bih pojasnio zasto sam je postavio tamo.
|
|
|
|