Armstrongovi brojevi

1

Armstrongovi brojevi

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

Pokusao sam da uradim program u C-u koji ce mi izbaciti za uneti broj n, sve armstrongove brojeve do tog broja(brojevi ciji je zbir kubova jednak samom broju)
Uradio sam ga ovako, ali nesto mi ne stima.... ova promenljiva kraj sluzi samo da mi ne izadje odmah iz programa dok ne unesem nesto... ali kad ukucam gornju granicu nista se ne pojavi, i ne moze da mi bilo sta prihvati
Pocetnik sam jos uvek u c-u, moguce da sam na nekoj gluposti napravio gresku
kod je sledeci:
i nije mi ovo domaci, i ne trazim da mi ga uradite, nisam nikad to ni trazio, vec samo pogledate zasto nece da radi.
Inace ovaj kod prolazi kompajliranje....
#include<stdio.h> int jednak_kubu(int n); int kub(int k); main(){ int kraj; int gornjagranica; //gornja granica dokle ce se kretati petlja int i; //brojac printf("Uneti gornju granicu=\n"); scanf("%d", &gornjagranica); printf("Brojevi ciji je kub cifara jednak samom broju su:\n"); for(i=10; i<=gornjagranica; i++) { if(jednak_kubu(i)==1) //poziva funkciju za proveru da li mu je zbir kubova cifara jednak samoj cifri printf("%d\n", i);            } scanf("%d", &kraj);        }         int jednak_kubu(int n){ int p=0;    //ukoliko je p=0 onda nije jednak zbiru kubova, ukoliko jeste p ce se promeniti na 1 int zadnjacifra=0, prvacifra=1; //prvacifra sam postavio na 1 da bi bila razlicita od nule, posle ce se njena vrednost promeniti int proizvod=1, zbir=0; while(prvacifra!=0)                    {                    zadnjacifra=n%10;                    zadnjacifra=kub(zadnjacifra);                    zbir +=zadnjacifra;                    prvacifra=n/10;                                       } if(zbir==n)  //provera da li je zbir kubova jednak sa samom ciform, ukoliko jeste p se menja na 1 p=1; return p; } int kub(int k) //racunanje kuba broja {  int trecistepen=1;     trecistepen=k*k*k;     return trecistepen; }



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 30 Maj 2005
  • Poruke: 1014
  • Gde živiš: Mbabane

Kod mene radi, (u Visual Studio 6), ne znam da li radi dobro, jer ne znam ni sta treba da radi ... ali ... bar ispise sve sto se od njega ocekuje. Sto bi rekli ljudi, program je desavac Smile

Predlazem da gore dodas
#include<conio.h>

i onda mozes koristiti funkciju getch() koja kada program dodje do nje jednostavno ceka da bilo koji karakter bude unesen, a tek potom program ide dalje ... mnogo je zgodnije tako Wink

Dalje, main funkcija ... ona u tvom slucaju treba da izgleda ovako :

int main(void)
{
....
....

return 0;
}

To je praksa koju moras imati. Uvijek navesti tip povratne vrijednosti i parametre, a ako ih nema stavi void i smatraj to obaveznim Smile Isto tako na kraju main-a vratiti neku vrijednost (U tvom slucaju 0, sto znaci kao sve je proslo OK Smile )

Eto toliko za pocetak ...



offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

Meni opet ne radi

sta ti pise recimo kad pokrenes i kad ukucas za gornju granicu neki broj tipa 12345?

offline
  • Pridružio: 30 Maj 2005
  • Poruke: 1014
  • Gde živiš: Mbabane

Pa ispise se ono pod sledecom printf naredbom ... Smile nisam te pitala u cemu radis i sta se tebi zapravo tacno desi kad pokrenes program?

offline
  • Pridružio: 16 Jun 2005
  • Poruke: 2392
  • Gde živiš: Beograd

Evo ovako:

#include<stdio.h> int jednak_kubu(int n); int kub(int k); void main(){ int gornjagranica; int i; printf("Uneti gornju granicu=\n"); scanf("%d", &gornjagranica); printf("Brojevi ciji je kub cifara jednak samom broju su:\n"); for(i=10; i<=gornjagranica; i++) { if(jednak_kubu(i)) printf("%d\n", i);            } getchar(); getchar();        }         int jednak_kubu(int n){ int p=n,zadnjacifra=0,zbir=0; while(p){                zadnjacifra=p%10;                    zadnjacifra=kub(zadnjacifra);                    zbir +=zadnjacifra;                p/=10;                                   } if(zbir==n) p=1; return p; } int kub(int k) {  int trecistepen;     trecistepen=k*k*k;     return trecistepen; }

Blago modifikovan tvoj kod, onako nije radio...
prvacifra ti je stalno bila n/10, jer n nije dobijao vrednost n/10 Wink
Ako ti nesto nije jasno, pitaj...

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

tacno tacno tacno...
hvala ti, pretpostavio sam da sam napravio neku logcku gresku ali nisam primetio koja je.
Hvala ti

offline
  • Pridružio: 16 Jun 2005
  • Poruke: 2392
  • Gde živiš: Beograd

Nema na cemu, nije tesko da se pomogne kad znam i kada neko ima konkretan problem... Wink

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

jedino mi nije prihvatalo void main(){ jer kaze da mora da vraca int

offline
  • Pridružio: 16 Jun 2005
  • Poruke: 2392
  • Gde živiš: Beograd

Koji kompajler koristis ?verovatno je do toga, microsoft visual studio prihvata i ovako, mada su to sitnice...

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

Koristim Dev c++, tj. sad sam ga tu kompajlirao, inace kucam ga pod linux-om skoro uvek, i koristim njegov kompajler, sad sam zurio pa me mrzelo da prelazim u linux.

hvala jos jednom

Ko je trenutno na forumu
 

Ukupno su 896 korisnika na forumu :: 50 registrovanih, 4 sakrivenih i 842 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _commandos_, A.R.Chafee.Jr., AleksaRadojicic, Arhiv, Bahuss, bato, baza, blue, bojanM84, boki199777, branko72, BSD, croato, Cvijo_ue, cvrle312, DENA, dogodine, doom83, dozorni, filiplukac1337, Georgius2, gorangogs88, goxin, ivica976, Koca Popovic, Kožedub, lacko2, Lazarus, Lieutenant, ljuba, Lucije Kvint, LUDI, majorgaspar, Marko Marković2, mean_machine, Metanoja, Mihajlo2, Mirage 2000N, MORAVA1, Oluj2.1, ostoja2, pavle_pzs, radionica1, rovac, TheChains, Viceroy2, virked, Vzor50, Warhawk, Zandar2