Pomoc oko zadatka

Pomoc oko zadatka

offline
  • Pridružio: 25 Feb 2007
  • Poruke: 167
  • Gde živiš: Cacak,Vapa

Treba mi pomoc,ako može?!


2)Broj je „dobar“ ako mu je svaka cifra veća od zbira cifara, koje se nalaze desno od nje. Na primer, dobri brojevi su 7, 531 i 8421, a brojevi 33, 287 i 321 nisu dobri. Napisati program kojim se unose prirodni brojevi, dok se ne unese 0, a ispisuje se najveći dobar broj. Ako takav broj među unetim brojevma ne postoji, dati odgovarajuću poruku.
Primer: za ulaz 430, 4842, 972, 521, 0, rezultat je 842.


Unapred hvala!!!!!!!!



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Gledaj, nece niko da se prihvati toga da ti resi ceo zadatak.
Drugo je kada ti nesto probas, pa zapne negde i onda ovde postavis ono sto si uradio da ti neko uradi korekciju.



offline
  • Đuro Glumac
  • dipl. ing. informatike
  • Pridružio: 08 Feb 2004
  • Poruke: 3640
  • Gde živiš: ApAtIn

Pokusaj da uradis, pa ako "zaglavis" obrati se ovde...
Ali evo prva ideja sto mi je pala na pamet:

- Uneses broj
- Konvertujes ga u string
- Iscitavas znak po znak i ukoliko je "dobar" i veci od MAX postavis da on bude MAX.
- Na kraju samo ispises max promenljivu.
- Ukoliko je max na kraju programa 0, onda isptises poruku da nisu uneti "dobro" brojevi

To je jedan od "skolskih" predloga za resenje takvog zadatka.

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Ne mora da konvertuje u string, posto to u C++ nije tako jednostavno kao u Pascalu (treba da importuje STL). Broj moze da se raslani na cifre celobrojnim deljenjem. Nije bas jednostavno, ali nije ni komplikovano.

offline
  • Pridružio: 24 Mar 2004
  • Poruke: 3962
  • Gde živiš: Zemun

ovde bi trebalo koristiti recimo moduo 10
dakle %10 i dobijas odvojene cifre i posle proveris da li zadnja (koja se dobije inace prva cifra kada se pise) veca od zbira ostalih cifara, ako jeste onda je to dobar broj, ako nije onda ispitas isto to sa predzadnjim cifrom, i tako do kraja, kada nadjes dobar broj sacuvas ga i posle ispitujes koji je veci od dobrih i radis ispisivanje

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

Mozes nesto ovako (verovatno moze to "lepse", ali ovako napamet):

#include <stdio.h> int pravi(int broj){ int l,t; for(l=1;n/l;l*=10); for(;l>1&&t;l/=10) t=(broj%l)>(broj%l-broj%(l/10)); return t;} int najveci_pravi(){ int i,max=0; scanf("%i",&i); while(i){ if(pravi(i)&& max<i) max=i; scanf("%i",&i);} return max;}

sastavi main ili modifikuj ovu drugu funkciju da ti bude main, kako hoces, i to je to, ako sam slucajno napravio neku gresku ja se izvinjavam...

offline
  • PoP  Male
  • Ugledni građanin
  • Pridružio: 17 Apr 2003
  • Poruke: 420
  • Gde živiš: Pozega

#include<iostream.h> typedef unsigned long int ulint; //tek na kraju skontah da int unesi(ulint x[])         //broj nema sanse da premasi {                       //int...    int i=0;    cout<<"x[0]=";    cin>>x[0];    while(x[i++]!=0)    {       cout<<"x["<<i<<"]=";       cin>>x[i];       if(x[i]==0)          break;    }    return i; } void umanji(ulint &y,unsigned int &zbir,unsigned int &cifra) {    zbir+=cifra;    y=y/10;    cifra=y%10; } int ispitaj(ulint x) {    unsigned int zbir=x%10,cifra=x/10%10;    ulint y=x/10;    if(x<10)       return 1;    do    {       if(cifra>zbir)       umanji(y,zbir,cifra);    else       return 0;    }    while(y>0);    return 1; } void main() {    int i,dobar,brC;    ulint niz[100],max=0;    brC=unesi(niz);    for(i=0;i<brC;i++)    {       dobar=ispitaj(niz[i]);       if(dobar)          if(niz[i]>max)             max=niz[i];    }    if(max==0)       cout<<"nema dobrih"<<endl;    else       cout<<max<<endl; }
naravno moglo je i bez nizova al' nekako mi ovako elegantnije...

offline
  • Pridružio: 25 Feb 2007
  • Poruke: 167
  • Gde živiš: Cacak,Vapa

Hvala svima!!!!!!!!

Ko je trenutno na forumu
 

Ukupno su 818 korisnika na forumu :: 7 registrovanih, 1 sakriven i 810 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: bladesu, draggan, Koridor, M1los, MB120mm, Penzula, Vlajman1957