Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 20 odgovora
  • 8.278 pregleda

Najnovija ↓

popmoc pri pocetnim primerima C jezika 02.08.2004. u 14:06 · pre 270 meseci #1
ne mogu da shvatim, u cemu je problem odnosno zasto program ne radi ispravno...
#include <stdio.h>
#include <math.h>
main()
{
int n, b=2, p, d;
L0:printf("Koliko prostih brojeva da se ispise? ");
scanf("%d", &n);
if(n<0)
{
printf("Treba prirodan broj, valjda!");
goto L0;
}
while(n)
{
d=3;
p=(((b%2)==1)||(b==2));
while(p&&d<=sqrt((float)b));
{
p=((b%d)!=0);
d+=2;
}
if(p)
{
printf("%d ", b);
n--;
}
b++;
}
getchar();
getchar();
}
Re: popmoc pri pocetnim primerima C jezika 02.08.2004. u 14:09 · pre 270 meseci #2
Kako se utvrđuje da program radi neispravno? Šta treba da da, a šta daje?

f
Re: popmoc pri pocetnim primerima C jezika 02.08.2004. u 18:39 · pre 270 meseci #3
treba da ispise prvih n prostih brojeva, a meni ispisuje brojeve koji nisu prosti, i pored toga ne ispise ih onoliko koliko se zada!
usput, ako je bitno, koristim Dev C++ razvojno okruzenje.
Re: popmoc pri pocetnim primerima C jezika 02.08.2004. u 22:24 · pre 270 meseci #4
Evo tvog koda sa jednom izmenom:
Code:

#include <stdio.h>
#include <math.h>
main()
{
    int n, b=2, p, d;
    L0:printf("Koliko prostih brojeva da se ispise? ");
    scanf("%d", &n);
    if(n<0)
    {
        printf("Treba prirodan broj, valjda!");
        goto L0;
    }
    while(n)
    {
        d=3;
        p=(((b%2)==1)||(b==2));
        while(p&&d<=sqrt((float)b))    //; ovo Tacka-Zarez je mislim visak?!
        {
            p=((b%d)!=0);
            d+=2;
        }
        if(p)
        {
            printf("%d ", b);
            n--;
        }
        b++;
    }
    getchar();
    getchar();
} 
Dakle jednan znAk TACKA-ZAREZ mnogo stvari moze da izmeni. Kada ga uklonis trebalo bi da dobijes to sto hoces.
Citat:
usput, ako je bitno, koristim Dev C++ razvojno okruzenje.

Nije bitno ali je lepo jer ga i ja koristim.
BTW ovo je mali primer, ali pokusaj da u nekom vecem programu izbegnes naredbu goto bas mi bode oci.
Re: popmoc pri pocetnim primerima C jezika 02.08.2004. u 23:29 · pre 270 meseci #5
ne mogu da verujem da sam to napisao, ; posle while...
znam za goto, ali zadatak je bio da se napise program sa iskljucivo while naredbom, inace znam neke osnovne stvari... kao...

sledeci primer:
#include <stdio.h>
main()
{
int n, i, j, b=0;
char x;
L0:printf("Uneti prirodan broj:\n");
scanf("%d", &n);
if(n<1)
{
printf("Budalo to nije prirodan broj!\n'Ajd, molim te, pokusaj ponovo!");
goto L0;
}
i=n;
j=n;
L1:if(i-1)
{
j*=i-1;
i--;
goto L1;
}
printf("%d!=%d\n", n, j);
b++;
printf("Zelite li jos? 1/0\n");
scanf("%s", &x);
if(x=='D')
goto L0;
printf("Faktorijel se ukupno racunao %d puta", b);
getchar();
getchar();
}
inace treba da se koristi samo if petlja, a zadatak je da se racunaju faktorijeli, i da se daje izbor ponovnog racunanja, a na kraju da izpise koliko puta se racunao faktorijel.. ne stima mi if(x=='D') uvek mi zbaci da se racunao faktorijel jednom, pokusao sam sa brojevima 1 za nastavak 0 za prekid, radi .. a sa znakovima nece, zasto?
unapred hvala
Re: popmoc pri pocetnim primerima C jezika 09.08.2004. u 22:03 · pre 270 meseci #7
ok, moze li neko da mi objasni sta ovde nije u redu. odnosno zasto nece da ispise ucitane nizove...
#include <stdio.h>
#define max 100
void citaj(int *niz, int *n);
void sort(int *niz, int n, int smer);
void pisi(int *niz, int n);
main()
{
int a[max], b[max], i, j;
printf("1. NIZ:\n");
do
{
printf("Koliko ima elemenata: ");
scanf("%d", &i);
}
while((i<1)||(i>max));
citaj(a,&i);
printf("2. NIZ:\n");
do
{
printf("Koliko ima elemenata: ");
scanf("%d", &j);
}
while((j<1)||(j>max));
citaj(b,&j);
sort(a,i,1);
sort(b,j,0);
printf("1. NIZ: ");
pisi(a,i);
printf("2. NIZ: ");
pisi(b,j);
getchar();
getchar();
}
void citaj(int *niz, int *n)
{
int k=0;
printf("Unesite niz: ");
do
{
scanf("%d", *(&niz[k++]));
}
while(k!=*n);
}
void sort(int *niz, int n, int smer)
{
int i, j, rb, pom;
if(smer)
{
for(i=0;i<n;i++)
{
for(rb=i,j=i+1;j<n;j++)
if(*(niz+rb)<*(niz+j))
rb=j;
if(rb-i)
{
pom=*(niz+rb);
*(niz+rb)=*(niz+i);
*(niz+i)=pom;
}
}
}
else
{
for(i=0;i<n;i++)
{
for(rb=i,j=i+1;j<n;j++)
if(*(niz+rb)>*(niz+j))
rb=j;
if(rb-i)
{
pom=*(niz+rb);
*(niz+rb)=*(niz+i);
*(niz+i)=pom;
}
}
}
}
void pisi(int *niz, int n)
{
int i;
for(i=0;i<n;i++)
printf("%d", *(niz+i));
printf("\n");
}
Re: popmoc pri pocetnim primerima C jezika 18.08.2004. u 21:13 · pre 270 meseci #8
jednostruko povezana linerarna lista...

Napisati proram koji formira jednostruko povezanu lineranu listu od n celobrojnih podataka, a zatim ispisuje m prvih podataka iz te liste.

Bio bih mnogo zahvalan kadd bi mi neko ovo objasnio, , odnosno kako se koriste linerne liste u kombinaciji sa funkcijom malloc?
Re: popmoc pri pocetnim primerima C jezika 20.08.2004. u 21:23 · pre 270 meseci #10
Elem...

1) Kod za 1. primer bez goto (!@#$%):
Code:

    n = -1;
    while (n < 0)
    {
        printf("Koliko prostih brojeva da se ispise? ");
        scanf("%d", &n);
        if(n < 0)
            printf("Treba prirodan broj, valjda!\n");
    }


2) Probaj sa:
Code:
if (x=='D' || x=='d') ...


3) Ovde je bilo do..while, ; ne smeta.
U citanju clanova niza treba:
Code:
scanf("%d", &niz[k++]);
Re: popmoc pri pocetnim primerima C jezika 20.08.2004. u 22:02 · pre 270 meseci #11
Iako non-stop vicu kako je goto los-a komanda, ja mogu da izvucem neke primere gde se goto koristi za veoma jasna i efikasna resenja. Ne treba ga izbegavati bas uvek...
Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: popmoc pri pocetnim primerima C jezika 20.08.2004. u 23:16 · pre 270 meseci #13
Bezuslovno grananje - goto je najkorisnije u odredjenim slucajevima 'cupanja' iz visestruko ugnjezdjenih petlji. Mada, da se cika Bjorne setio, mogao je da uvede break(level), gde bi level oznacio broj petlji koje je potrebno terminirati. Dodatno, break(0) bi mogao da ima funkcionalnost continue, a break(-1) return.
Moglo se ici i na to da broj sukcesivnih break instrukcija oznacava broj petlji koje je potrebno terminirati iz tacke prve break instrukcije, posto po postojecem standardu dve ili vise break instrukcije nema smisla koristiti.
Potpis
O_o
Re: popmoc pri pocetnim primerima C jezika 22.08.2004. u 02:19 · pre 270 meseci #15
Koliko vidim, Knutovi argumenti iz tog članka se odnose na tadašnje srtukturme jezike. Kod savremenih programskih jezika ima više mogućnosti za kontrolu toka koršćenjem strukturnih naredbi, pa mu argumenti teže prolaze kada se primene na današnje jezike. U jeziku C++ se ikakanje iz nekoliko ugneždenih petlji može postići "nenamenskom" upotrebom naredbi try, throw i cath.

Inače, K&R su u svojoj čuvenoj knjizi "Programski jezik C" napomenuli da postoje takvi stavovi, izneli argumente koji se najčešće navode i predložili čitaocu da zauzme sopstveni kritički stav o tome.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Re: popmoc pri pocetnim primerima C jezika 22.08.2004. u 03:32 · pre 270 meseci #16
Citat:
Nedeljko: U jeziku C++ se ikakanje iz nekoliko ugneždenih petlji može postići "nenamenskom" upotrebom naredbi try, throw i cath.


Može, ali je to 100% gore nego goto.
Potpis
IOCC
Re: popmoc pri pocetnim primerima C jezika 28.08.2004. u 15:43 · pre 269 meseci #20
zar nemozes ti/vi jednostavno da mi kazete koji os da instairam i sta jos treba
aaa
Potpis
ahaa
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme