|
22.08.2009., 18:16 | #2 |
E Pluribus UNIX
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,608
|
__________________
Programer
Rok od dva mjeseca u stvari znači četiri, ali nikako ispod šest. |
|
|
Oglas
|
|
22.08.2009., 18:37 | #3 |
Registered User
Datum registracije: Oct 2007
Lokacija: Zagreb
Postovi: 16
|
#include <stdio.h> #include <stdlib.h> main(){ int a,i,br=0; printf("\nUpisi broj:"); scanf("%d",&a); for(i=2;i<a;i++) { if(a%i==0) br++; if(br!=0) printf("\nBroj nije prost"); else printf("\nBroj je prost"); system("pause"); }} al ne reagira bas,izbaci cmd kod ispisa rezultata... |
22.08.2009., 18:54 | #4 |
Premium
Datum registracije: Mar 2003
Lokacija: Split
Postovi: 695
|
Ovo sam iskopa iz svojih starih mailova koje smo slali kad bi završili vježbu, čini mi se da je to Code:
#include <stdio.h> void main() { int i,j; bool prost; printf("\n"); for(i=1;i<=100;i++) { prost=true; for(j=2;j<i;j++) { if((i%j)==0) prost=false; } if(prost==true) printf(" %d", i); } printf(" \n\n"); } |
22.08.2009., 19:26 | #6 | |
E Pluribus UNIX
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,608
|
Citiraj:
Evo ti nekoliko opaska: Opcenito: - svi recentni C standardi zahtijevaju eksplicitno navodjenje funkcije main, a i opcenito je to prilicno dobra navika. Navedi povratni tip (integer, po standardu) te argument funkcije (u svom slucaju - void). Code:
int main (void) - izbjegavaj, osim ako nemas jako dobar razlog, koristenje funkcije system. Ti ga u ovom konkretnom slucaju nemas ni pod razno i kao takva ti je potpuno nepotrebna. Uz sve to, nisi naveo ni potrebnu knjiznicu za tu funkciju - stdlib.h - kod ti je "na oko" ruzan. Iako je "stil" pisanja koda personalan, tvoj je u svakom slucaju ruzan i necitljiv. Pazi na to, pogotovo ako trazis pomoc u nekom vecem komadu koda. A sada konkretno, prisao si samom problemu prilicno lose. S matematicke strane, u ovakvom jednostavnom algoritmu dovoljno je da provjeris je li broj prost tako da imas iteracija do njegovog korijena. Ako pak ne zelis implementirati (ili ne smijes) korjenovanje, dovoljno je provjeriti ostatke pri dijeljenju do njegove polovice. Ako mislis da je to trivijalno i nepotrebno, pogledaj ovo (Tualatin 1.4 GHz): Code:
bubba@korea:~/threads$ time ./a.out Unesite broj: 2147483647 Broj 2147483647 je prost. real 0m59.879s user 0m59.316s sys 0m0.052s bubba@korea:~/$ time ./a.out Unesite broj: 2147483647 Broj 2147483647 je prost. real 0m0.211s user 0m0.008s sys 0m0.000s Programerski, nisi bas usvojio svo to petljanje i ifovanje do kraja. Razmisli o rjesavanjeu na slijedeci nacin; kreni provjeravati ostatke pri dijeljenu u for petlji, pa ako dobijes ostatak 0, broj je djeljiv i nema potrebe provjeravati dalje jer sigurno nije prost. Ako broj kroz citavu petlju ne bude dijeljiv, onda je sigurno prost. Obrati takodjer paznju da su prosti brojevi po definiciji prirodni, pa mozes koristiti, kako bi povecao opseg provjere, i unsigned intregere. Pogledaj ovaj kod: Code:
#include <stdio.h> int main (void) { int broj, i; printf ("Unesite broj: "); scanf ("%d", &broj); for (i = 2 ; i <= broj / 2 ; i++) if (broj % i == 0) { printf ("Broj %d nije prost.\n", broj); return 0; } printf ("Broj %d je prost.\n", broj); return 0; } Code:
#include <stdio.h> #include <math.h> int main (void) { unsigned int broj, i; printf ("Unesite broj: "); scanf ("%u", &broj); for (i = 2 ; i <= (int)(sqrt(broj)) ; i++) if (!(broj % i)) { printf ("Broj %u nije prost.\n", broj); return 0; } printf ("Broj %u je prost.\n", broj); return 0; }
__________________
Programer
Rok od dva mjeseca u stvari znači četiri, ali nikako ispod šest. |
|
14.03.2014., 09:53 | #8 |
Registered User
Datum registracije: Mar 2014
Lokacija: Banja Luka
Postovi: 1
|
Pozdrav, Ja imam jedan problem sa slicnim algoritmom, zadatak glasi da se ispisu svi prosti brojevi u nekom unesenom intervalu, tj. unosi se broj od kojeg pocinje da ispisuje proste brojeve i broj do kojeg ih ispisuje. E sad to sam uradio, sada pokusavam ispisem najmanji i najveci prost broj u tom intervau ? Tu nastaje problem, najveci sam uspio, ali najmanji ne mogu nikako, pokusao sam da napravim novu petlju koja ide od krajnjeg intervala do pocetnog pa da min dobije vrijednost yadnjeg prostog broja ali nece da radi, jel ima neko ideju, ako treba poslacu program koji sam pisao. Unaprijed hvala! |
18.03.2014., 08:54 | #9 | |
E Pluribus UNIX
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,608
|
Citiraj:
__________________
Programer
Rok od dva mjeseca u stvari znači četiri, ali nikako ispod šest. |
|
05.03.2016., 11:04 | #10 |
Registered User
Datum registracije: Mar 2016
Lokacija: Zagreb
Postovi: 8
|
c
Imam problem sa 1 zadatkom.Potrebno je ucitati 100 cijelih brojeva i za svaki ispisati koliko ima znamenki.Od korisnika traziti upis cijelog broja sve dok upisuje brojeve koji nisu cijeli. #include<stdio.h> int main(){ float br; int i, n = 0; for (i = 1; i <= 100; i++){ do{ printf("Upisi %d. broj", i); scanf("%f", &br); } while (!(br == (int)br)); while (br !=0){ br / 10; n++; } printf("\nBroj ima %d znamenki", n); } return 0; } |
|
|
Oglas
|
Oglasni prostor
|
05.03.2016., 19:37 | #11 | |
Registered User
Datum registracije: May 2015
Lokacija: Zagreb
Postovi: 20
|
Citiraj:
|
|
06.03.2016., 15:55 | #12 |
Registered User
Datum registracije: Mar 2016
Lokacija: Zagreb
Postovi: 8
|
|
06.03.2016., 16:44 | #13 |
Registered User
Datum registracije: Mar 2016
Lokacija: Zagreb
Postovi: 8
|
|
07.03.2016., 01:06 | #14 |
Registered User
Datum registracije: May 2015
Lokacija: Zagreb
Postovi: 20
|
isto tako radi, samo moras dobro posloziti tipove podataka da ti vracaju dobre brojeve, pomocu modula jednostavno radis kao sto sam naveo ako je br%10 manji od 1 to znaci da ima jednu znamenku, onda if else ako je br%100 ima 2 i tako dalje, ovo tvoje je jednostavnije dosta, samo kazem moze se dogoditi da tipa ukoliko je ostatak 0.5 a program to zaokruzi na 1 dodat ce ti jos jedan br++ i na kraju ces imati krivi broj (ps. nisam testiro program, govorim na pamet ali opet) |
07.03.2016., 16:45 | #15 |
Premium
Datum registracije: Jul 2015
Lokacija: ZG
Postovi: 284
|
Šta nije modulo za ostatak kod dijeljenja? Ne znam da sa njime možeš odrediti broj znamenki. Recimo broj 50 ima dvije znamenke, a 50%10 je nula, dakle manje od 1 i po tebi ima jednu znamenku. |
07.03.2016., 17:45 | #16 | |
only fool, not a horse
Datum registracije: Apr 2008
Lokacija: near zgb
Postovi: 1,280
|
Citiraj:
@acmevagabundo Može se i koristeći modulo odrediti koliko broj ima znamenki. Neka je "broj" uneseni broj, ako je broj%(10^x)=broj, tada broj ima x znamenki (10^x predstavlja "10 na x", potenciju..). Npr. 25 = 25%10^2 => 25 ima dvije znamenke.. |
|
21.04.2016., 21:50 | #18 |
only fool, not a horse
Datum registracije: Apr 2008
Lokacija: near zgb
Postovi: 1,280
|
Sigurno da može. |
23.04.2016., 17:56 | #20 |
crnjo
Datum registracije: Mar 2003
Lokacija: Zagreb
Postovi: 1,901
|
Budes ti rijesio. Ako zapnes, Bubba ce pomoc. On ti je dobri samaritanac za ove koji zapnu s konkretnim problemom i ne mogu nac gresku u kodu. I zna programirat koliko vidim. Ove druge koji misle da ce im pisati zadace, obicno zakuca u pod s kreativnim uvredama koje ih dirnu toliko duboko da se kane i Excela/Worda, kamoli C(++)-a. A nerijetko si u suzama namapiraju u hosts datoteci ovako: "127.0.0.1 forum.pcekspert.com" da im ne padne na pamet vise pitat tu
__________________
sound powered by B&W/Denon |
24.04.2016., 13:49 | #22 |
TossACoinToYourWitcher!
Datum registracije: Oct 2005
Lokacija: Slavonski Brod
Postovi: 2,802
|
|
24.04.2016., 17:34 | #23 |
E Pluribus UNIX
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,608
|
__________________
Programer
Rok od dva mjeseca u stvari znači četiri, ali nikako ispod šest. |
27.04.2016., 19:16 | #25 |
Registered User
Datum registracije: Mar 2016
Lokacija: Zagreb
Postovi: 8
|
#include<stdio.h> #include<string.h> int main(){ char rec[100]; int i, n, max = 0,br=0; printf("Upisi recenicu\n"); gets(rec); n = strlen(rec); for (i = 0; i < n; i++){ if (rec[i] != " "&& rec[i]!='\0'){ br++; } if (rec[i] == ' '){ if (br > max){ max = br - 1; } br = 0; } if (rec[i] == '\0'){ if (br > max){ max = br - 1; } } } printf("\nNajdulja rijec ima %d slova", max); return 0; } evo radi dobro jedino ako posljedna rijec ima najvise slova onda neradi dobro.Neznam kako dalje |
27.04.2016., 19:17 | #26 | |
Registered User
Datum registracije: Mar 2016
Lokacija: Zagreb
Postovi: 8
|
Citiraj:
|
|
27.04.2016., 22:16 | #27 | |
Premium spammer
Datum registracije: Aug 2010
Lokacija: D.Zagora
Postovi: 771
|
LOL @ Bubba Citiraj:
Ako ti ovaj if prode: Code:
if (rec[i] != " "&& rec[i]!='\0'){ - ukloni provjeru s '\0' jer si napravio ovo: n = strlen(rec); ** a tebi for ide do "i < n" **ne hvata ti zadnju rijec jer provjera ide do zadnjeg znaka, ne ukljucujuci '\0', tako da je i zbog toga provjera s '\0' nepotrebna jer nikada nece provjeriti. Vise o strlen: http://www.tutorialspoint.com/c_stan...ion_strlen.htm ako stavis: n = strlen(rec) + 1; onda provjera s '\0' ima smisla. moze i ovako: budem postao link ponovo kada sam popravis i rjesis (da me inace nebi Bubba zatukao ) *https://i.ytimg.com/vi/jAqFGhHDyiA/hqdefault.jpg |
|
01.05.2016., 23:12 | #28 |
Registered User
Datum registracije: Mar 2016
Lokacija: Zagreb
Postovi: 8
|
Hvala sad sam skombo i radi #include<stdio.h> #include<string.h> int main(){ char rec[100]; int i, n, max = 0, br = 0; printf("Upisi recenicu\n"); gets(rec); n = strlen(rec); for (i = 0; i <=n; i++){ if (rec[i] != ' '&&rec[i]!='\0'){ br++; } if (rec[i] == ' '){ if (br > max){ max = br; } br = 0; } if (rec[i] =='\0'){ if (br > max){ max =br; } } } printf("\nNajdulja rijec ima %d slova", max); return 0; } Zadnje izmijenjeno od: depay22. 02.05.2016. u 10:32. |
15.05.2016., 23:16 | #29 |
Registered User
Datum registracije: Mar 2016
Lokacija: Zagreb
Postovi: 8
|
#include<stdio.h> int main(){ char znk[6], br[6], mala[6], velika[6], ost[6]; int i; for (i = 0; i < 6; i++){ printf("\nUpisi %d.znak", i + 1); scanf(" %c", &znk[i]); if (znk[i] >= 'a'&&znk[i] <= 'z'){ mala[i] = znk[i]; velika[i] = 'a'; br[i] = 'a'; ost[i] = 'a'; } else if (znk[i] >= 'A'&&znk[i] <= 'Z'){ mala[i] = 'A'; velika[i] = znk[i]; br[i] = 'a'; ost[i] = 'a'; } else if (znk[i] >= '0'&&znk[i] <= '9'){ mala[i] = 'A'; velika[i] = 'a'; br[i] = znk[i]; ost[i] = 'a'; } else{ mala[i] = 'A'; velika[i] = 'a'; br[i] = 'a'; ost[i] = znk[i]; } } printf("\nMala slova iz prvog polja:"); for (i = 0; i < 6; i++){ if (mala[i] != 'A'){ printf("\n%c", mala[i]); } } printf("\nVelika slova iz prvog polja:"); for (i = 0; i < 6; i++){ if (velika[i] != 'a'){ printf("\n%c", velika[i]); } } printf("\nZnamenke iz prvog polja:"); for (i = 0; i < 6; i++){ if (br[i] != 'a'){ printf("\n%c", br[i]); } } printf("\nOstali znakovi iz prvog polja:"); for (i = 0; i < 6; i++){ if (ost[i] != 'a'){ printf("\n%c", ost[i]); } } return 0; } Dali se ovo da jednostavnije rijesit.Zadatak glasi da se ucita 6 znakova i da se razvrstaju u zasebno polje mala slova velika slova znamenke i ostali znakovi. |
16.05.2016., 19:46 | #30 |
only fool, not a horse
Datum registracije: Apr 2008
Lokacija: near zgb
Postovi: 1,280
|
Prvo malo prouči https://en.wikipedia.org/wiki/Indent_style Da taj kod bude lakši za čitat. Zatim možeš sve provjere obavit u jednoj petlji: Code:
for i.....n if (uvjet1) {...} else if (uvjet2) {...} .... |
|
|
Oglas
|
|
|
|