Petlje i njihova primjena u C++?

poruka: 36
|
čitano: 11.566
|
moderatori: XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Re: Zadatak

A evo da demantujem sebe, hehehehe... Uspio sam ovako:

 

 

#include <iostream>

#include <cstdlib>

 

using namespace std;

 

int main()

{

  int n, rezultat;

  cin >> n;

  rezultat=(n/100)*((n%100)/10)*((n%100)%10);

  cout << "Rezultat je:" << endl << rezultat <<endl;

  system("pause");

 

}

 

Ali ovo radi samo sa trocifrenim brojevima... Ako želimo uključiti i brojeve sa više cifara (3,4,5,6,7,8,9,10,11,12), onda bi samo trebali postaviti IF - ELSE IF - ELSE grananje sa uslovima. Na primjer uslov ako je uneseni broj trocifren bi bio radi ovo  rezultat=(n/100)*((n%100)/10)*((n%100)%10);  ako je varijabla "n" veča od 99, a manja od 1000... Kad budem imao više vremena prekucaču čitav kod, ili ako neko drugi stigne prije mene... 

 

Znam puno, ali ne i dovoljno...
Poruka je uređivana zadnji put ned 18.11.2012 23:27 (dachoxl).
15 godina
neaktivan
offline
Re: Zadatak
dachoxl kaže...

A evo da demantujem sebe, hehehehe... Uspio sam ovako:

#include <stdio.h>

int main()
{
    int umnozak=1, broj=245;
   
    while (broj)
    {
          umnozak*=broj%10;
          broj/=10;
    }
    printf("%d\n", umnozak);
   
    getchar();
    return 0;
}

 

Broj samo krešeš odozada, znamenku po znamenku, dok ti ne ostane nula...

0xBADC0DE
Poruka je uređivana zadnji put pon 19.11.2012 1:10 (rustweaver).
15 godina
offline
Re: Zadatak
dachoxl kaže...
andrey999 kaže...

Pozdrav! Može li mi tko riješiti ovaj zadatak na najjednostavniji mogući način? U c++ naravno. Bio bih jako zahvalan jer mi ovo stvarno neide.

 

Unosi se n prirodan broj, program treba ispisati produkt znamenaka od n. (npr. n=245, program treba ispisati 40 (jer je 2*4*5=40))

Nisam siguran da se ovo može riješiti, a baš bih volio da vidim ako neko zna i razuvjeri me... jer kada uneseš neki broj (npr 245) onda je varijabla poprimila tu vrijednost... Sada bi dalje trebalo matematički rješavati... Kojom matematičkom formulom dobiti iz broja 245 broj 40, a da ta formula bude primjenjiva i da daje željeni tačan rezultat sa svim ostalim prirodnim brojevima, (dvocifrenim, trocifrenim, četverocifrenim....n)....

  Pa mi tocno iznad ovoga tvoga posta raspravljamo o rjesenju, a ti najednom pitas moze li se to rjesiti? Pa nije mi jasno kako si to mogao promasiti.

rustweaver kaže...

#include <stdio.h>

int main()
{
      int umnozak=1, broj=245;
     
      while (broj)
      {
                  umnozak*=broj%10;
                  broj/=10;
      }
      printf("%d\n", umnozak);
     
      getchar();
      return 0;
}

 

Broj samo krešeš odozada, znamenku po znamenku, dok ti ne ostane nula...

  Mislim da bi bilo puno bolje da ovdje koristimo do-while petlju, jer ako je broj 0, ispisat ce da je umnozak 1 sto nije tocno.

do{
    umnozak*=broj%10;
    broj/=10;
}while(broj);

 

 

I would love to change the world, but they won't give me the source code
17 godina
offline
Petlje i njihova primjena u C++?

Evo gledam i ne mogu da vjerujem koje gluposti valjam, od sada u sitne nocne sate koliko god mi nesto sumljivo bilo ne komentarisem.

Izvinjavam se na glupom postu.

 

Najbolje bi bilo kad bi to admin izbrisao nacisto da ne dovedem u zabludu nekoga.

Poruka je uređivana zadnji put pon 19.11.2012 11:31 (cober).
 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Zadatak
captain_soap_McTawish kaže...
dachoxl kaže...
andrey999 kaže...

Pozdrav! Može li mi tko riješiti ovaj zadatak na najjednostavniji mogući način? U c++ naravno. Bio bih jako zahvalan jer mi ovo stvarno neide.

 

Unosi se n prirodan broj, program treba ispisati produkt znamenaka od n. (npr. n=245, program treba ispisati 40 (jer je 2*4*5=40))

Nisam siguran da se ovo može riješiti, a baš bih volio da vidim ako neko zna i razuvjeri me... jer kada uneseš neki broj (npr 245) onda je varijabla poprimila tu vrijednost... Sada bi dalje trebalo matematički rješavati... Kojom matematičkom formulom dobiti iz broja 245 broj 40, a da ta formula bude primjenjiva i da daje željeni tačan rezultat sa svim ostalim prirodnim brojevima, (dvocifrenim, trocifrenim, četverocifrenim....n)....

  Pa mi tocno iznad ovoga tvoga posta raspravljamo o rjesenju, a ti najednom pitas moze li se to rjesiti? Pa nije mi jasno kako si to mogao promasiti.

 

rustweaver kaže...

#include <stdio.h>

int main()
{
    int umnozak=1, broj=245;
   
    while (broj)
    {
          umnozak*=broj%10;
          broj/=10;
    }
    printf("%d\n", umnozak);
   
    getchar();
    return 0;
}

 

Broj samo krešeš odozada, znamenku po znamenku, dok ti ne ostane nula...

  Mislim da bi bilo puno bolje da ovdje koristimo do-while petlju, jer ako je broj 0, ispisat ce da je umnozak 1 sto nije tocno.

 

do{
   umnozak*=broj%10;
   broj/=10;
}while(broj);

 

 

Pošto nisam neki znalac i ovdje sam došao da naučim, mene nije sramota da kažem da neznam da upotrijebim ovaj dio koda koji ste napisali. Ako Vam nije problem da napišete čitav kod koji bi kompajlirao i provjerio kako radi. Ja sam uspio riješiti ovaj zadatak na svoj način i evo čitav kod koji rješava zadatak dvocifrenih, trocifrenih, četverocifrenih i petocifrenih brojeva. Ukolko želimo da ovaj program obrađuje i brojeve sa više od 5 cifara, može se dodati još koda, ali me je mrzilo da kucam više. Uglavnom... Iskopirajte kod, iskopajlirajte ga i on radi.

 

#include <iostream>

#include <cstdlib>

 

using namespace std;

 

int main()

{

int n, rezultat;

  cin >> n;

 

if (n>9 && n<100)//Racuna ako je n dvocifren

{

  rezultat=((n/10)*(n%10));

  cout << "Rezultat je:" << endl << rezultat <<endl;

  system("pause");

}

else if (n>99 && n <1000)//Racuna ako je n trocifren

{

  rezultat=(n/100)*((n%100)/10)*((n%100)%10);

  cout << "Rezultat je:" << endl << rezultat <<endl;

  system("pause");

}

else if (n>999 && n <10000)//Racuna ako je n cetverocifren

{

  rezultat=(n/1000)*((n%1000)/100)*(((n%1000)%100)/10)*(((n%1000)%100)%10);

  cout << "Rezultat je:" << endl << rezultat <<endl;

  system("pause");

}

else if (n>9999 && n <100000)//Racuna ako je n petocifren

{

  rezultat=(n/10000)*((n%10000)/1000)*(((n%10000)%1000)/100)*((((n%10000)%1000)%100)/10)*((((n%10000)%1000)%100)%10);

  cout << "Rezultat je:" << endl << rezultat <<endl;

  system("pause");

}

 //*I tako dalje, samo redas esle if...*//

Znam puno, ali ne i dovoljno...
15 godina
neaktivan
offline
Re: Zadatak
dachoxl kaže...

Pošto nisam neki znalac i ovdje sam došao da naučim, mene nije sramota da kažem da neznam da upotrijebim ovaj dio koda koji ste napisali. Ako Vam nije problem da napišete čitav kod koji bi kompajlirao i provjerio kako radi.

Pa moj je kod kompletan zar ne vidiš? Samo uzmi petlju koju je satnik stavio (zato što moja verzija ima problem u slučaju kada je broj nula).

0xBADC0DE
Nova poruka
E-mail:
Lozinka:
 
vrh stranice