c,c++ pomoc oko zadataka

1

c,c++ pomoc oko zadataka

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.
offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • 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?



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.

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • 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.

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;
}

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • 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.

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;

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

Napisano: 02 Jun 2014 22:53

Druže, ništa me ne pratiš. Very Happy

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. smešak

Ajmo sad. Very Happy
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. Mr. Green
- Kako se obeležavaju stringovi? Između navodnika ("), jel da? Pa gde su? Very Happy
- 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?

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. Smile Inace ne radi ovo sa stringovima nesto.

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

Napisano: 02 Jun 2014 23:37

Java i C++, hmmm. Very Happy
Using C++ over Java is analogous to driving a manual car over an automatic one for car racing. A manual car is used because it has more control to make tighter turns to go faster, similarly C++ has more lower and finer level of control and can run much faster than Java. Its much more easier to use Automatic for the purposes to get to the final destination, similarly using Java can develop higher level applications much more easily. One can easily misuse a manual car compared to an automatic one just as you can easily crash in C++. Šta znam, meni su ok i jedan i drugi. Java mi je daleko jednostavnija, ali kod C++ imam veću kontrolu. Sve u svemu, poznavanje načina razmišljanja je mnogo bitnije od jezika. Very Happy

Dopuna: 02 Jun 2014 23:39

Blue Master ::Inace ne radi ovo sa stringovima nesto.Ja to ne bih odradio koristeći string, eć bih odradio samostalno, koristeći indeksirane promenljive. Very Happy

Ko je trenutno na forumu
 

Ukupno su 820 korisnika na forumu :: 39 registrovanih, 5 sakrivenih i 776 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 8u47, A.R.Chafee.Jr., Andrija357, Apok, babaroga, Bane san, Bobrock1, BRATORIII, Dannyboy, Denaya, FileFinder, FOX, Georgius, hologram, ILGromovnik, Karla, Kubovac, kybonacci, ljubacv, Lošmi, M1los, maiden6657, Mihajlo, Mlav, mocnijogurt, Mravce, nemkea71, nick79, pein, rodoljub, sap, Sirius, slonic_tonic, Steeeefan, theNedjeljko, Trpe Grozni, VJ, VP6919, zillbg