Poslao: 29 Maj 2014 13:17
|
offline
- Pridružio: 29 Maj 2014
- Poruke: 54
|
Imam probleme sa par zadataka,pa ako neko zna i voljan je da mi pomogne bilo bi zaista lepo,pocetnik sam .
1.Napraviti matricu 4x4 koja ispisuje random brojeve od 15 do 35 ,ako jebroj 22 ili 33 onda ispisuje 0.Trebaju 2 ugnjezdene for petlje.
2.Program u koji se unosi string parnih slova,ako je je naparan trazi opet unos.Program treba da zameni prvi polovinu i drugu polovinu reci i ispise.
3.Trazi se unos 10 brojeva,koji ce biti zapamceni u niz.Program treba da sortira unete brojevi od najmanjeg do najveceg.Koristiti bubble sort algoritam.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 29 Maj 2014 14:24
|
online
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
1. Kako to matrica ispisuje brojeve? Misli se na to da su elementi matrice brojevi od 15 do 35? Ili bi matrica trebalo da predstavlja neku vrstu displeja?
2. "String parnih slova" je? Misli se na to da broj slova u stringu treba da bude paran?
Na kraju, šta si od ovoga ti uradio i gde si zapeo?
|
|
|
|
Poslao: 29 Maj 2014 14:31
|
offline
- Pridružio: 29 Maj 2014
- Poruke: 54
|
1.Misli se na elemente matrice,napraio sam for petlje i,j i to je to.
2.Da,paran broj slova u stringu.
|
|
|
|
Poslao: 29 Maj 2014 14:45
|
online
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Ok. Evo objašnjenja, pa ti probaj prema tome da uradiš zadatke.
1. U telu ugnježdene petlje najpre upiši neki random broj u int promenljivu. Random broj možeš da generišeš koristeći f-ju rand() iz biblioteke stdlib.h. Ova f-ja vraća random broj između 0 i vrednosti konstante RAND_MAX. Kako bi to skalirao na opseg koji tebi treba, od dobijenog broja uzmi ostatak pri deljenju (moduo) sa (35 - 15 + 1) = 21. U tom slučaju, random broj će biti neki random broj između 0 i 20. Kako bi to skalirao na opsek od 15 do 35, izračunatom broju dodaj 15 i to je to. U sledećoj liniji proveri da li je izračunati broj 22 ili 33, i ako jeste upiši u matricu 0, a ako nije upiši taj broj.
2. Najjednostavnije je da uvedeš jednu logičku promeljivu koja će da označava uspešan unos stringa sa parnim brojem slova. Dakle, sve dok taj uslov nije zadovoljen vrtiš (while) petlju i unosiš reči sa tastature. Kada uneseš odgovarajući string, samo pronađeš sredinu stringa, i u jednoj petlji izvršiš zamenu mesta elemenata pre i posle polovine. Tipa, ako je polovina na k-toj poziciji, u petlji koja ide od 0 do k-1 menjaš mesta elementima na i-toj i i+k-toj poziciji.
3. Za bubble sort imaš brdo algiritama na netu. Jesu li vam objasnili princip rada na predavanjima? Ono, cela suština je da uvek upoređuješ samo dva elementa, i u zavisnosti od njihovog poretka vršiš zamenu mesta (ili ne vršiš). Dok ne shvatiš princip rada, ne vredi pokušavati da napišeš kod.
|
|
|
|
Poslao: 01 Jun 2014 20:33
|
offline
- Pridružio: 29 Maj 2014
- Poruke: 54
|
krenuo sam ovako da pisem al sam zapeo ako imas vremena da mi pomognes
int _tmain(int argc, _TCHAR* argv[])
{
int mat[4][4],i,j;
for (i=0;i<4;i++) {
for(j=0;j<4;j++)
mat[i][j]==rand() %35 + 15;
}
printf("%d ",mat[i][j]);
return 0;
}
|
|
|
|
Poslao: 01 Jun 2014 20:54
|
online
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Napisano: 01 Jun 2014 20:47
Ovo si preskočio: vasa.93 ::U tom slučaju, random broj će biti neki random broj između 0 i 20. Kako bi to skalirao na opsek od 15 do 35, izračunatom broju dodaj 15 i to je to. U sledećoj liniji proveri da li je izračunati broj 22 ili 33, i ako jeste upiši u matricu 0, a ako nije upiši taj broj.Dakle, najpre generisani random broj upiši u neku pomoćnu promenljivu, a zatim proveri da li je ta promenljiva 22 ili 33, i ako jeste, u matricu (na poziciji mat[i][j]) upisuješ 0, a ako nije, u matricu upisuješ tu pomoćnu promenljivu.
Takođe, štampanje matrice se vrši u dve ugnježdene for petlje. Ovako kako si ti napisao nije ispravno jer podatak na lokaciji mat[4][4] nije alociran od strane tvog programa. Čak i da jeste, ta linja bi odštampala samo jedan podatak, a ne celu matricu.
Takođe, u drugoj ugnježdenoj for petlji ti stoji ==. == je operator poređenja, a ne operator dodele. Operator dodele je =.
Dopuna: 01 Jun 2014 20:54
I još ovo: vasa.93 ::Kako bi to skalirao na opseg koji tebi treba, od dobijenog broja uzmi ostatak pri deljenju (moduo) sa (35 - 15 + 1) = 21.
|
|
|
|
Poslao: 02 Jun 2014 22:31
|
offline
- Pridružio: 29 Maj 2014
- Poruke: 54
|
Napisano: 02 Jun 2014 22:19
opet sam zabo negde,ne znam sta mi fali u kodu
int matrica[i][j],tmp;
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
matrica[i][j]=rand()%15+35;
if ( tmp == 22 || tmp == 33 ) printf(" 0");
else printf(" %d", matrica[i][j]);
return 0;
Dopuna: 02 Jun 2014 22:31
drugi sam nekako ovako krenuo,nasao sam na netu nesto
string s1;
cout<<unesi string<<;
cin>>s1;
while (s1.length()%2!=0){
cin>>s1;
}
head = substr(0, s1.length()/2);
tail = substr(s1.length()/2, s1.length());
s1.replace (s1.length()/2, s1.length(), head);
s1.replace (0, s1.length(), tail);
cout<<s1;
|
|
|
|
Poslao: 02 Jun 2014 22:59
|
online
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Napisano: 02 Jun 2014 22:53
Druže, ništa me ne pratiš.
Pazi, ako ćeš odmah da štampaš, matrica ti nije neophodna. Znači, unutar dve ugnježdene for petlje možeš da generišeš random vrednost i da je štampaš ako je različita od 22 i 33, dok u suprotnom štampaš nulu. Dakle, može i tako, bez matrice, ali onda nemaš matricu.
Ajmo sad.
Blue Master ::int matrica[i][j],tmp;
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
matrica[i][j]=rand()%15+35;
if ( tmp == 22 || tmp == 33 ) printf(" 0");
else printf(" %d", matrica[i][j]);
return 0;
- Kolika će biti vrednost promenljive tmp u bilo kom trenutku izvršenja tvog programa?
- Gde dodeljuješ vrednost toj promenljivoj?
- Ako joj nigde ne dodeliš vrednost, zašto je porediš sa 22 i 33?
- Da li znaš šta radi operator %?
- Ako je rezultat izvršenja tog operatora ostatak pri deljenju sa 15, koje sve vrednosti može da izraz? Od 0 do 14, jel tako? Kada nuli dodaš 35, dobijaš 35. Kada broju 14 dodaš 35, dobijaš 49. Dakle, dobijaš opseg od 35 do 49.
- Da li je to ono što tebi treba? Nije.
-Dakle, još jednom, računaš ostatak pri deljenju sa 21. To može biti vrednost od 0 do 20. Kada tome dodaš 15, dobijaš vrednosti od 15 do 35.
- Da li je to ono što tebi treba? Jeste. Dakle, ono što tebi treba je:
tmp = rand() % 21 + 15;
Znači, najpre odluči da li ćeš da smeštaš vrednosti u matricu, pa tek onda da štampaš matricu, ili ćeš odmah da štampaš, bez matrice. I jedno i drugo rešenje je tačno. No, ako je svrha zadatka vežba rada sa indeksnim promenljivima, treba najpre upisati vrednosti u matricu, a zatim istu tu patricu odštampati.
Da ne dužim mnogo, evo koda zadatak koji radi upravo ono što treba:
#include <stdlib.h>
#include <stdio.h>
void main()
{
int mat[4][4], i, j, tmp;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
tmp = rand() % 21 + 15;
if (tmp == 22 || tmp == 33)
mat[i][j] = 0;
else
mat[i][j] = tmp;
}
}
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
printf("%d ", mat[i][j]);
printf("\n");
}
} Obzirom da su ovo osnove osnova, ukoliko ima nešto što ti nije jasno, slobodno pitaj kako bismo razjasnili.
Dopuna: 02 Jun 2014 22:59
Blue Master ::
cout<<unesi string<<;
cin>>s1;
while (s1.length()%2!=0){
cin>>s1;
}
head = substr(0, s1.length()/2);
tail = substr(s1.length()/2, s1.length());
s1.replace (s1.length()/2, s1.length(), head);
s1.replace (0, s1.length(), tail);
cout<<s1; Prva linija, a već sintaksna greška.
- Kako se obeležavaju stringovi? Između navodnika ("), jel da? Pa gde su?
- Zatim, << je operator, i to binarni (ima dva operanda). Jedan operand je sa leve strane, a drugi sa desne. Sa leve je tok (cout), a sa desne string koji treba da se štampa (između navodnika). Dakle, operator << na kraju, posle "unesite string" je suvišan.
Na kraju, ovaj kod bi trebalo da radi. Da li radi?
|
|
|
|
Poslao: 02 Jun 2014 23:30
|
offline
- Pridružio: 29 Maj 2014
- Poruke: 54
|
Hvala ti puno,interesuje me ovo programiranje,ali mozda nisam ja za to.Znam dosta bolje Javu,ali sintaksa je dosta drugacija.Sve u svemu hvala. Inace ne radi ovo sa stringovima nesto.
|
|
|
|
|