Programiranje u C-u

poruka: 216
|
čitano: 64.789
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
Re: Programiranje u C-u

Hvala, tek sam pocetnik pa se slabo snalazim oko toga.{#}

 

Za ovaj zadatak, znam da mi daje ispis BBBBAB isao sam preko F11 i gledao postupak jasno mi je kako dobije taj ispis, ali nije mi jasno čime je definirano da u ispisu bude A a zbog čega B, kako sam pisao na papir kod ostatka 0 daje ispis B, a kod ostatka 1 daje A, zasto?

 

#include<stdio.h>

void main()

{

int x,y;

for(x=0;x<2;x++)

for(y=0;y<3;y++)

if(x*y%2)

   printf("A");

else

   printf("B");

}

Poruka je uređivana zadnji put uto 19.7.2011 23:49 (Broken).
16 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...

ali nije mi jasno čime je definirano da u ispisu bude A a zbog čega B, kako sam pisao na papir kod ostatka 0 daje ispis B, a kod ostatka 1 daje A, zasto?

 

Pa sam se sebi odgovoria kad je jedan (if zadovoljen) ispisuje A u suprotnom B. Znaci uvjet je ovo unutar if-a (x * Y %2) 

 

Za prva 3 rezultata znas da ti je rezultat nula (i da ce ispisat b) jer je x nula znaci i umnozak je nula znaci i ostatak djeljenja je nula

 

Cetvrti rezultat je nula jer je y = 0 (opet umnozak 0)

 

Pet rezultat je jedino = 1 (1 * 1 = 1 znaci i ostata djeljenja sa 2 je 1) I sesti rezultat je opet  0 (1 * 2 = 2 ostatka nema (nula je))

14 godina
neaktivan
offline
Re: Programiranje u C-u

Hvala shvatio sam if je zadovoljen samo ako mi vraca neki ostatak, a posto je ostatak nula prelazi na drugu naredbu.

14 godina
neaktivan
offline
Programiranje u C-u

Napravite program koji će, koristeći funkciju, za zadani prirodan broj provjeriti je li prost.Zanima me kod ovakvog rjesavanja zadatka, kako dobiti ideju da se rjesi ispravno ovo mi izgleda komplicirano ovakvi zadatci ovog tipa.Na osnovu cega bih mogao zakljuciti ovu funkciju prost, pokusao sam na papir to "skicirati" pa da unesem u program tj. napraviti algoritam izvrsavanja, znam da su prosti brojevi djeljivi sa jedani sa samim sobom ali kako to napisati u obliku programa. Ovo je dolje kopiran dio koda (funkcija) koja je tocna za provjeru jel broj prost ili nije. Kako da uspijem svladati ovakve zadatke.


#include <stdio.h>

int prost(int x)

{

   int i;

   for(i=2;i<=x/2;i++)

    if(x%i==0)

        return 1;

   return 0;

}

void main()

{

   int a;

   printf("\nUpisite prirodan broj ");

   scanf("%d",&a);

   if (a<1)

     printf("\Broj mora biti >0");

   else

    {

     if(prost(a))

        printf("\nBroj %d NIJE prost broj!",a);

     else

        printf("\nBroj %d JE prost broj!",a);

    }

}

Poruka je uređivana zadnji put čet 21.7.2011 0:33 (Broken).
 
0 0 hvala 0
16 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...

 

 

Pretpostavljam da kod si copy paste kod od nekud sobzirom na pitanje gore. Nema tu konkretnog odgovora kako savladat neke zadatke sve je na tvojoj "kreativnosti". Razmislis kako bi taj zadatak rjesia na papiru i onda to samo pretoci u kod

 

Imas na wiki odlicno "objasnjenje" kako se vade prim brojevi sve sta treba je onda to pretocit u kod

 

http://hr.wikipedia.org/wiki/Datoteka:Sieve_of_Eratosthenes_animation.gif

 

Probaj skuzit to sa linka i onda ako sta nije jasno pitaj

14 godina
neaktivan
offline
Programiranje u C-u

Eratostenovo sito ce ti stvoriti matricu gdje ce ti biti samo prosti brojevi, pa na taj nacin mozes provjeriti jeli prost.

Programiranje ti je samo prevođenje određene ideje u kod.

Dakle znas da je prost broj samo onaj koji je djeljiv samim sobom i 1. Dakle sto moras napraviti. Provjeriti jeli to slucaj. Kako ?

Pa ides broj za broj do tog broja i gledas jeli ostatak od djeljenja jednak 0.

 

Sito je algoritam koji izbacuje sve visekratnike prostih brojeva iz nekakvog skupa brojeva, pa zato u skupu ostanu samo prosti.

 

EDIT : Ovo nije greska, ali mala nelogicnost. Tebi prost(x) vraca "true" za brojeve koji nisu prosti.

Poruka je uređivana zadnji put čet 21.7.2011 13:35 (Budimir).
 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C-u

Stigao sam do polja, ovdje mi je kod za funckiju kojom se definira upis elemenata niza, sad zanima me kako radi ovaj dio koda.

Ako unes broj elemenata niza n=5, petlja for ce mi brojati do tog elementa, sad me zanima kako varijabla int i moze biti koristena u petlji for i iza unos brojeva u niz a[], zanima me na koji nacin ovo radi  &a[i], ako i u petlji for broji od i=0 do i<n.

 

#include<stdio.h>

int n;

void upisi(int a[30])

{

   int i;

   for(i=0;i<n;i++)

     scanf("%d",&a[i]);

}

Poruka je uređivana zadnji put pet 22.7.2011 23:30 (Broken).
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...

Ako unes broj elemenata niza n=5, petlja for ce mi brojati do tog elementa, sad me zanima kako varijabla int i moze biti koristena u petlji for i iza unos brojeva u niz a[], zanima me na koji nacin ovo radi  &a[i], ako i u petlji for broji od i=0 do i<n.

To je klasicno indeksiranje clanova polja. Recimo string:

char c[]="hello world";

 

Ima 12 clanova (s time da je dvanaesti clan null znak kojeg inace nikada ne vidis, on samo sluzi za oznacavanja kraja stringa). Svaki od tih clanova je zapravo jedan char (znak). Zato za string u C programskom jeziku kazemo da je zapravo polje charova.

 

Kada upises npr c[N] dobivas N-ti element niza. Vazno je takoder napomenuti i da se pocinje brojati od nule, tako da prvi element ima indeks nula. Tako da ti je c[0] u ovom primjeru slovo "h", a c[4] je slovo "o".

 

Ova tvoja petlja radi jednostavnu stvar, varijablu "i" odbrojava od nule do n-1, te trazi korisnika za upis clana "i" tog polja. Znaci u biti se izvrsava ovo:

scanf("%d",&a[0]);

scanf("%d",&a[1]);

scanf("%d",&a[2]);

scanf("%d",&a[3]);

scanf("%d",&a[4]);

 

tada petlja zavrsava

So then I typed GOTO 500 - and here I am!
Poruka je uređivana zadnji put pet 22.7.2011 23:44 (rustweaver).
14 godina
neaktivan
offline
Re: Programiranje u C-u
rustweaver kaže...
Broken kaže...

Ako unes broj elemenata niza n=5, petlja for ce mi brojati do tog elementa, sad me zanima kako varijabla int i moze biti koristena u petlji for i iza unos brojeva u niz a[], zanima me na koji nacin ovo radi  &a[i], ako i u petlji for broji od i=0 do i<n.

To je klasicno indeksiranje clanova polja. Recimo string:

char c[]="hello world";

 

Ima 12 clanova (s time da je dvanaesti clan null znak kojeg inace nikada ne vidis, on samo sluzi za oznacavanja kraja stringa). Svaki od tih clanova je zapravo jedan char (znak). Zato za string u C programskom jeziku kazemo da je zapravo polje charova.

 

Kada upises npr c[N] dobivas N-ti element niza. Vazno je takoder napomenuti i da se pocinje brojati od nule, tako da prvi element ima indeks nula. Tako da ti je c[0] u ovom primjeru slovo "h", a c[4] je slovo "o".

 

Ova tvoja petlja radi jednostavnu stvar, varijablu "i" odbrojava od nule do n-1, te trazi korisnika za upis clana "i" tog polja. Znaci u biti se izvrsava ovo:

scanf("%d",&a[0]);

scanf("%d",&a[1]);

scanf("%d",&a[2]);

scanf("%d",&a[3]);

scanf("%d",&a[4]);

 

tada petlja zavrsava

Ne znam jesam li dobro shvatio ali ispravi me ako grjesim, for petlja mi pokazuje indekse polja, a &a[i] mi samo pokazuje ono sto cu unijeti ne pokazuje mi indekse neg ono sto je pohranjeno(upisano pod tim indeksom). 

npr.

(Ovo pod zagradama () mi je indeks niza)

for(i=0;i<5;i++)

scanf("%d",&a[(0)h]);

scanf("%d",&a[(1)e]);

scanf("%d",&a[(2)l]);

scanf("%d",&a[(3)l]);

scanf("%d",&a[(4)o]);

 

Vidio sam par primjera gdje se za dva, tri niza koristi ista varijabla  "i".

Npr. 

scanf("%d",&a[i]);

scanf("%d",&b[i]);

scanf("%d",&c[i]);

 

Bili mi bila greska da umjesto varijable "i" u tri niza stavim varijable "i,j,k"?

Ako program trazi zbrajanje 2 niza čiji zbroj daje 3 niz.

Tipa:

c[i]=a[j]+b[k];

c[i]=a[i]+b[i];

Jesu li oba slucaja tocna?

P.S Oprosti na ovakvim pitanjima ali zelim ovo sto bolje shvatiti i da ne pravim puno greski oko rjesavanja zadataka, hvala.

15 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...

Ne znam jesam li dobro shvatio ali ispravi me ako grjesim, for petlja mi pokazuje indekse polja, a &a[i] mi samo pokazuje ono sto cu unijeti ne pokazuje mi indekse neg ono sto je pohranjeno(upisano pod tim indeksom).

Ne, for petlja samo uvecava (ili smanjuje, naime petlja moze ici i unatrag) neku varijablu koju u tom slucaju nazivamo brojac (engl. counter). Petlja se ponavlja dok brojac ne dostigne svoju konacnu vrijednost koju je programer naveo i tada se prestaje izvrsavati.

 

A ti si u toj petlji koristio brojac da bi pristupio elementima polja. Da ti objasnim.

U tvojoj petlji varijabla "i" se uvecavala ovako:

0 1 2 3 4 - kraj petlje. Znaci gdje god si ti koristio tu varijablu koristio si njenu vrijednost u tom trenutku.

 

Kada si upisao:

scanf("%d",&a[i]);

 

Petlja se izvrsila 5 puta, pocevsi od nule pa do broja cetiri. Gdje god si koristio "i" unutar petlje, imao si broj 0 do 4. Znaci ti si imao napisano ovo:

 

scanf("%d",&a[i]);

 

Ali se zapravo dogodilo ovo:

 

scanf("%d",&a[0]);

scanf("%d",&a[1]);

...

scanf("%d",&a[4]);

 

Zato sto se vrijednost varijable "i" mjenjala kako je petlja napredovala. Znaci u prvom krugu petlje scanf je dodjelio nultom clanu polja a[0] neku vrijednost, pa onda prvom a[1], i tako dalje dok nije dosao do cetvrtog. Ovaj "&" znak vraca memorijsku adresu clana polja, zato sto scanf prima pointere kao argument.

 

Broken kaže...
Vidio sam par primjera gdje se za dva, tri niza koristi ista varijabla  "i".

Npr. 

scanf("%d",&a[i]);

scanf("%d",&b[i]);

scanf("%d",&c[i]);

To je zato da u jednoj petlji procesiras vise polja.

 

Lakse je pisati:

 

for (n=0; n<neki_broj; n++)

{

    scanf("%d", &a[i]);

    scanf("%d", &b[i]);

    scanf("%d", &c[i]);

}

 

nego:

 

for (n=0; n<neki_broj; n++)

{

    scanf("%d", &a[i]);

}


for (n=0; n<neki_broj; n++)

{

    scanf("%d", &b[i]);

}


for (n=0; n<neki_broj; n++)

{

    scanf("%d", &c[i]);

}

 

Naravno, ako koristis istu petlju za vise polja, tada sva polja moraju biti iste velicine, jer ces inace izletiti iz nekih od polja ako je brojac prevelik, ili neces doci do kraja nekih od polja ako je brojac premalen.

 

Broken kaže...
Bili mi bila greska da umjesto varijable "i" u tri niza stavim varijable "i,j,k"?

Ako program trazi zbrajanje 2 niza čiji zbroj daje 3 niz.

Tipa:

c[i]=a[j]+b[k];

c[i]=a[i]+b[i];

Jesu li oba slucaja tocna?

Ovisi imas li negdje deklarirane varijable "i, j, k", i jesu li im dodjeljene prave vrijednosti? Ako imas samo "i" onda ne mozes koristiti "j, k".

 

Recimo ovakva petlja:

 

for (i=0; i<neki_broj; i++)

{

    c[i]=a[j]+b[k];

}

 

je pogresna ako nigdje ne dodjelis varijablama "j" i "k" neku vrijednost.

 

Ali mozda ispred imas:

int j=0, k=0;

for (i=0; i<neki_broj; i++)

{

    c[i]=a[j]+b[k];

}

 

Tu sada imas jasno deklarirane varijable "j" i "k" kao i njihove vrijednosti. Sto ce ova petlja napraviti? Svakom "i" clanu polja "c" ce dodjeliti vrijednost zbroja clanova polja a[0] i b[0]. Varijable "j" i "k" u ovoje petlji se ne mijenjaju. Tj. dogada se ovo:

 

c[0]=a[0]+b[0];

c[1]=a[0]+b[0];

c[2]=a[0]+b[0];

...

 

Ako zelis napraviti petlju koja zbraja sve clanove polja "a" i "b" i to pohranjuje u "c" onda ces morati napraviti ovako:

 

int j=0, k=0;

for (i=0; i<neki_broj; i++)

{

    j=i;

    k=i;

    c[i]=a[j]+b[k];

}

 

Sada se dogada ovo:

c[0]=a[0]+b[0];

c[1]=a[1]+b[1];

c[2]=a[2]+b[2];

...

 

Ali zasto onda koristiti varijablu "j" i "k" kada one u biti imaju istu vrijednost kao i varijabla "i"? To je visak, pa ih izbacis i dobijes ovo:

 

for (i=0; i<neki_broj; i++)

{

    c[i]=a[i]+b[i];

}

 

I opet dobijes isti rezultat:

c[0]=a[0]+b[0];

c[1]=a[1]+b[1];

c[2]=a[2]+b[2];

...

 

So then I typed GOTO 500 - and here I am!
14 godina
neaktivan
offline
Programiranje u C-u

Zasto se danas vise uče jezici poput c++-a i C#-a, od C-a, koje su mogucnosti sa ovim jezicima, jel prije rada sa C++ i C# bolje znati C, jel on bolja podloga za navedene jezike?

 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C-u

To je pitanje za filozofske rasprave no ono kako je krenulo je C - proceduralni pristup, C++ - nadogradnja C-a koja osim proceduralnog nudi i objektni pristup, pa onda C# - nasljednik C++a koji je potpuno objektno orjentiran.

14 godina
neaktivan
offline
Programiranje u C-u

Prijatelj mi je dao knjigu za c-jezik, dosao sam do stingova sad imam za funkciju koja je deklarirana u datoteci u obliku:

size_t strlen(const char *s);

char *strcpy(char *s,const char *t);

int strcmp(const char *s, const char *t);

Zanima me znacenje ovog u zagradama const char *s npr. jel ovo *s pokazivač ili , sta mi znaci const char i ovo *strcpy jel i to pokazivač ili ?

 
0 0 hvala 0
17 godina
offline
Programiranje u C-u

"const char *" je, u ovom slučaju, pokazivač na neko konstantno polje znakova. S obzirom da su stringovi ustvari polja znakova, te s obzirom na to da se o poljima može razmišljati kao o pokazivačima na prvi element polja, o stringovima se može razmišljati kao o pokazivačima na prvi element polja (na prvo slovo). To objašnjava "char *". A "const" ispred govori da se ulazno polje shvaća kao nepromjenjivo, glavna želja je bila da se programeru poruči kako funkcija ostavlja string onakvim kakvim je bio, dakle nepromijenjen.

 

Kod "char *strcpy", char* je povratni tip, strcpy je naziv funkcije. "char*" je povratni tip jer funkcija vraća string (a o stringovima se može razmišljati kao o pokazivačima na prvo slovo).

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
1 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C-u

Ima li itko ista o kodiranju podataka u pdf ili zna gdje se moze naci na internetu, googlao sam ali ono sto sam nasao nije dovoljno meni treba opsirnije sa nekim primjerima zadataka...

 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C-u

Iz C-a teško. U C++u je moguće instalirati Acrobat Reader ActiveX dll.

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C-u

Napišite program za pogađanje broja generiranog od strane računala. Broji se broj pokušaja,
a pri svakom pokušaju računalo daje informaciju da li je broj veći, ili manji ili pogođen.
Ako je broj pogođen, izlazi se iz programa, uz ispis pogođenog broja te ukupnog broja pokušaja.

 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    int n,i,veci=0,manji=0,pogoden=0;
    srand((unsigned)time(NULL));
    printf("Unesite jedan prirodan broj: ");
    scanf("%d",&n);
    for(i=1;i<=10;i++)
      {
          printf("%d\n",rand());
          if(n>rand())
                manji++;
          if(n<rand())
                veci++;
          if(n==rand())
              pogoden++;
      }
printf("Vecih brojeva ima: %d\n",veci);
printf("Manjih brojeva ima: %d\n",manji);
printf("Pogodenih brojeva je: %d\n",pogoden);
    if(n==rand())
      printf("Pogodeni broj je: %d\n",n);
    else
      printf("Broj nije pronaden\n");
    getchar();
    getchar();
return 0;

}
Kada mi se izvrsi ako sam unio 33452 i kaze da je pogodeno 2 broja i izbaci mi da je pogoden broj 18978, sta trebam napraviti da mi izbaci pronadenu vrijednost ? Jesu li mi dobro postavljeni uvjeti unutar if-a.

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u

Bojim se da ti ne razumijes bas rand() funkciju. Ta funkcija pri svakom pozivu vraca novi nasumicni (random) broj.

 

Recimo to se dobro vidi u ovoj petlji:

 

    for (i=1; i<=10; i++)    {        printf("%d\n", rand());        if (n>rand())            manji++;        if (n<rand())            veci++;        if (n==rand())           pogoden++;    }

Ti 10 puta ponavljas slijedece:

  • -stvoris random broj pa ga ispises
  • -stvoris novi random broj pa ga usporedis sa 'n', ako je 'n' veci povecas varijablu 'manji'
  • -stvoris novi random broj pa ga usporedis sa 'n', ako je 'n' manji povecas varijablu 'veci'
  • -stvoris novi random broj pa ga usporedis sa 'n', ako su brojevi jednaki onda uvecas varijablu 'pogoden'

 

Znaci ti sveukupno u petlji stvoris 40 random brojeva. Nigdje ne spremas broj koji si stvorio, uvijek stvaras novi, za svaku usporedbu.

 

I onda jos za konacnu usporedbu napravis novi random broj koji usporedis sa 'n'.

 

Za pocetak, da bi si olaksao, ogranici si raspon brojeva koje rand stvara. To mozes pomocu modulo operatora. Ovako:

n=rand()%nekibroj;

 

Od cega ti je nekibroj maksimalna vrijednost koju ce ti rand() dati umanjena za jedan.

 

Pogledaj recimo ovakav programcic:

#include <stdlib.h>#include <stdio.h>#include <time.h>


int main(){    int broj1=0, broj2=0, pokusaji=0;


    srand(time(NULL));    broj1=rand()%20+1;    do    {           printf ("Unesite jedan prirodan broj od 1 do 20: ");           scanf("%d", &broj2);           if (broj2>broj1)              printf("Uneseni broj je veci od zamisljenog\n");           if (broj2<broj1)              printf("Uneseni broj je manji od zamisljenog\n");


           pokusaji++;    }    while(broj1!=broj2);


    printf("\nCestitamo pogodili ste broj iz %d. pokusaja\n", pokusaji);    system("pause");     return 0;}

 

Nije bas tocno ono sto zelis (ne broji koliko je manjih a koliko vecih brojeva), ali ce ti dati neke smjernice.

So then I typed GOTO 500 - and here I am!
Poruka je uređivana zadnji put pet 12.8.2011 18:12 (rustweaver).
14 godina
neaktivan
offline
Programiranje u C-u

Hvala puno :)

 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C-u

Ubacio sam ovo broj= rand()%50+1, od 10 mogućih brojeva uvijek mi izbaci 10 istih brojeva, kako da mi izbaci različite brojeve trebam ubaciti u petlju ili.

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C-u

Sto si tocno napravio? Jesi li pozvao srand() prije koristenja rand() funkcije?

 

Mozes staviti source, pa da vidim tocno sto se dogada?

So then I typed GOTO 500 - and here I am!
14 godina
neaktivan
offline
Re: Programiranje u C-u

Rjesio sam, samo ovdje gdje je ovaj dio koda ako mi ne nade broj stavio sam da ga trazi ponovo pomocu goto, sve dok ga ne nade i ispise mi jer bez goto ako mi ne nade broj javlja mi uvijek gresku, mislio sam preko if-elsa ali nemam ideje kako bi, ovako mi za sad radi.

 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int n,i,veci=0,manji=0,pogoden=0,broj,broj1;
srand((unsigned)time(NULL));
printf("Unesite jedan prirodan broj: ");
scanf("%d",&n);
for(i=1;i<=10;i++)
{
ponovo:
broj=rand()%20+1;
printf("%d\n",broj);
if(n>broj)
manji++;
if(n<broj)
veci++;
if(n==broj)
{
broj1=broj;
pogoden++;
}
else
goto ponovo;

}

printf("Vecih brojeva ima: %d\n",veci);
printf("Manjih brojeva ima: %d\n",manji);
printf("Pogodenih brojeva je: %d\n",pogoden);
printf("Pogodeni broj je: %d\n",broj1);
getchar();
getchar();
return 0;

}

15 godina
neaktivan
offline
Re: Programiranje u C-u

Iskreno, gledam taj tvoj kôd, i uopce mi nije jasno sto si htio postici. Mislim, vidim sto kôd radi, ali to mi nema nikakvog smisla...

 

Ako nista drugo, pokazujes napredak u ucenju, samo nastavi...

So then I typed GOTO 500 - and here I am!
14 godina
neaktivan
offline
Re: Programiranje u C-u
rustweaver kaže...

Iskreno, gledam taj tvoj kôd, i uopce mi nije jasno sto si htio postici. Mislim, vidim sto kôd radi, ali to mi nema nikakvog smisla...

 

Ako nista drugo, pokazujes napredak u ucenju, samo nastavi...

  Gore sam postao kako glasi zadatak, uglavnom radi mi i zdaovoljan sam :)

15 godina
neaktivan
offline
Re: Programiranje u C-u
Broken kaže...

Gore sam postao kako glasi zadatak, uglavnom radi mi i zdaovoljan sam :)

Taj tvoj program ne radi ovo:

Napišite program za pogađanje broja generiranog od strane računala. Broji se broj pokušaja,
a pri svakom pokušaju računalo daje informaciju da li je broj veći, ili manji ili pogođen.
Ako je broj pogođen, izlazi se iz programa, uz ispis pogođenog broja te ukupnog broja pokušaja.

Korisnik moze samo jednom upisati broj, a treba imati vise pokusaja. Gdje ti korisniku pises da li je broj manji ili veci? Zasto koristis for petlju sa 10 iteracija i goto skok unutar nje? Umjesto da napravis random broj van petlje i onda unutar petlje trazis korisnika da unosi broj dok ga ne pogodi, ti trazis korisnika van petlje da unese jedan broj, a onda stvaras random brojeve dok se ne poklope sa korisnikovim. Takoder ne brojis pokusaje, nego brojis manje, vece i pogodene brojeve.

 

Onaj moj program koji sam stavio radi tocno ovo sto zadatak trazi. Pokreni ga pa vidi kako bi to trebalo izgledati, pa onda za usporedbu vidi sto tvoj program radi.

So then I typed GOTO 500 - and here I am!
14 godina
neaktivan
offline
Re: Programiranje u C-u

Promjenit cu hvala sto si objsnio, mislio sam da se trazi ono sto sam napisao.{#}

17 godina
offline
Programiranje u C-u

Ajde napiši istu stvar sa while petljom - čisto radi vježbe.

 

Kad napišeš - onda provjeri (usporedi) sa ovim:

(htio sam reći da je u gornjim do-while petljama nužna samo inicijalizacija brojača na nulu kod deklaracije - druge dvije varijable nije - pošto se inicijaliziraju u programu.

ovdje je radi jednostavnosti programa i prirode while petlje incijalizacija varijable uneseniBroj izvršena na 0 (time se omogćuje ulaz u while petlju), a inicijalizacija na 0 varijable slucajniBroj kod deklaracije nije potrebna)

 

 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>


int main()
{
    int uneseniBroj = 0, slucajniBroj, brojPokusaja = 0;
    srand(time(NULL));
    slucajniBroj = rand()%20 + 1;
   
    while(uneseniBroj != slucajniBroj)
    {
       printf("Unesi broj u rasponu 1 - 20: ");
       scanf("%d", &uneseniBroj);
       brojPokusaja++;
       if(uneseniBroj < slucajniBroj)
       {
          printf("Uneseni broj je manji od trazenog!\n");
       }
       else if(uneseniBroj > slucajniBroj)
       {
          printf("Uneseni broj je veci od trazenog!\n");
       }
       else
       {
          printf("Broj je pogodjen iz %d. pokusaja\n", brojPokusaja);
       }
    }
   

}

Poruka je uređivana zadnji put sub 13.8.2011 22:52 (Floki).
 
0 0 hvala 0
14 godina
neaktivan
offline
Programiranje u C-u

Hvala, lakse je nego sa for petljom rjesiti.

 
0 0 hvala 0
17 godina
offline
Re: Programiranje u C-u
Broken kaže...

Hvala, lakse je nego sa for petljom rjesiti.

Ne možeš to ni riješiti sa for petljom - pošto imaš nepoznati broj ponavljanja (u stvari možeš - da prekineš izvođenje petlje sa break i zadaš neki veliki broj ponavljanja) - a to je kompliciranje

petlja for se uvijek koristi za poznati broj ponavljanja

a kad imaš neki nepoznati broj ponavljanja kao sada - (ponavljaš dok ne pogodiš) - uvijek koristiš do-while ili while.

s tim da je ovdje do-while pogodnija - ona se uvijek izvodi bar jednom - pošto ima uvjet izvođenja na kraju petlje

while je ovdje malo teže primjeniti - ona ima uvjet izvođenja na početku - zato sam ti i rekao da to probaš - cilj i jest naučiti rješavati probleme.

 

 

Dakle - da ti je zadato da moraš pogoditi iz 10 pokušaja - koristio bi for petlju,

pošto je zadato da pogađaš dok ne pogodiš - onda do-while ili while petlja.

Poruka je uređivana zadnji put sub 13.8.2011 23:14 (Floki).
17 godina
offline
Programiranje u C-u

Usput, vrijedi while(x) = for(;x;)...

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice