Programiranje u C++-u - pitanja i odgovori izdvojena tema

poruka: 7.285
|
čitano: 1.701.539
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...

Da, palo je i meni jutros na pamet da stavim bool, te da ide petlja do n/2 i da povecavam za jedan, ako prode do n/2 i bude zadovoljeno onda nebi trebao imati prirodan broj kao korijen

 Ovo ti je čisto dovoljno.

Inače ako se želiš igrati s tim možeš i faktorizacijom broja na prim brojeve. Ako broj ima paran broj prim faktora i ako kraćenjem istih dobiješ prazan skup, kvadratni korjen broja je cijeli broj.

Neka nikog ne buni što nisam uključio math biblioteku u zaglavlje, ovaj VS je munjen sto posto, čim sam stavio iostream biblioteku mogu se dokopati svih funkcija, intellisense mi ih nudi sam.

 

#include<iostream>
using namespace std;


int main()
{
   int broj;
   double korjen;
   
   do
   {
      cin >> broj;
      korjen = sqrt(broj);
   } while (korjen - (int)korjen != 0);
   return 0;
}

Poruka je uređivana zadnji put pet 6.3.2015 13:00 (Floki).
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

#include<iostream>
using namespace std;

int main(){
   int n;
   bool pbr=false;
   do{
   cin>>n;
   for(int i=1; i<n/2 && pbr==false; i++){
      if(i*i==n)
         pbr=true;   
   }}
   while(pbr==false);
            cout<<n<<" ";
   return 0;   
   }
   


dakle došao sam do ovoga riješenja, ali kako napravit, da unosim brojeve, a ne da unesem

broj i da ga on provjeri? I zašto kada npr unesem 9 opet ispiše 9 te tek onda zaustavi program

 

@Floki zašto mi neda tako kad hoću sqrt

piše mi ovo: ambiguous call to overloaded function
   

Poruka je uređivana zadnji put pet 6.3.2015 13:04 (Makić).
Moj PC  
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...

#include<iostream>
using namespace std;

int main(){
   int n;
   bool pbr=false;
   do{
   cin>>n;
   for(int i=1; i<n/2 && pbr==false; i++){
      if(i*i==n)
         pbr=true;   
   }}
   while(pbr==false);
            cout<<n<<" ";
   return 0;   
   }
   


dakle došao sam do ovoga riješenja, ali kako napravit, da unosim brojeve, a ne da unesem

broj i da ga on provjeri? I zašto kada npr unesem 9 opet ispiše 9 te tek onda zaustavi program

 

@Floki zašto mi neda tako kad hoću sqrt

piše mi ovo: ambiguous call to overloaded function
   

 Ja koristim VS i sve prolazi OK, dakle, stavi math biblioteku u zaglavlje ili deklariraj broj kao double, kod tvog rješenja ti ne treba while petlja, sve radiš u for petlji.

Ali ovo rješenje matematički gledano ti je prekomjerno granatiranje, preko kvadratnog korjena nema smisla ispitivati, i rješenje opisano prije ide do kvadratnog korjena.

Poruka je uređivana zadnji put pet 6.3.2015 13:23 (Floki).
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

znam da će raditi ako stavim double, al kao ograničenje je

da broj bude int. Možeš mi malo pojasnit ovo da maknem while

jer ako imam do da radi nešto sve dok je zadovoljen uvijet u while

ako to maknem kako onda zna da stane s unosom.

Moj PC  
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...

znam da će raditi ako stavim double, al kao ograničenje je

da broj bude int. Možeš mi malo pojasnit ovo da maknem while

jer ako imam do da radi nešto sve dok je zadovoljen uvijet u while

ako to maknem kako onda zna da stane s unosom.

 Pa castaj int u double u sqrt funkciji, ali ovog rješenja do n/2 se okani, onda napravi ono koje ti je onaj prije mene napisao, i to rješenje ide do kvadratnog korjena.

Poruka je uređivana zadnji put pet 6.3.2015 13:28 (Floki).
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

stavio sam n/2 jer nema smisla da ide preko toga jer niti jedan broj poviše toga ne može korijen unešenog broja

Moj PC  
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...

stavio sam n/2 jer nema smisla da ide preko toga jer niti jedan broj poviše toga ne može korijen unešenog broja

 E vidiš, u tome i jest bit, uzmi broj 15

 

2 X 2 = 4

3 X 3 = 9

4 X 4 = 16

 

Čemu ići do 7

16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...
Makić kaže...

stavio sam n/2 jer nema smisla da ide preko toga jer niti jedan broj poviše toga ne može korijen unešenog broja

 E vidiš, u tome i jest bit, uzmi broj 15

 

2 X 2 = 4

3 X 3 = 9

4 X 4 = 16

 

Čemu ići do 7

 aha, moja greška, hvala!

17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...
Floki kaže...
Makić kaže...

stavio sam n/2 jer nema smisla da ide preko toga jer niti jedan broj poviše toga ne može korijen unešenog broja

 E vidiš, u tome i jest bit, uzmi broj 15

 

2 X 2 = 4

3 X 3 = 9

4 X 4 = 16

 

Čemu ići do 7

 aha, moja greška, hvala!

 Nije greška, samo bliže teoremima matematike, istu stvar si napravio kad si rekao za n/2, dakle na tragu si toga. Ako mene pitaš, ono što sam stavio je dovoljno, izlučiti cijeli dio realnog broja, ako postoji ostatak razlike realnog broja i njegovog cijelog dijela nije kvadratni korjen

Poruka je uređivana zadnji put pet 6.3.2015 13:53 (Floki).
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

to sam skužio, još samo ono da npr kad unosim

 2 5 7 9

došlo do 9 prekine

ja šta imam do sad je bilo da unosim broj i stisnem enter pa novi sve dok ne dođe 9

Moj PC  
0 0 hvala 0
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Mislim da kužim zašto ti prevoditelj daje da je sqrt neodređen.

Ne postoji preopterećenje za int argument te funkcije, a postoji za double i float, kad mu uneseš int ne zna koju funkciju će potegnuti, pošto sve imaju jedan argument.

Tomu možeš doskočiti da castas argument int u double. Što god netko rekao na VS, Redmond je to riješio, valjda poteže double verziju kad stavim int argument.

 
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...

to sam skužio, još samo ono da npr kad unosim

 2 5 7 9

došlo do 9 prekine

ja šta imam do sad je bilo da unosim broj i stisnem enter pa novi sve dok ne dođe 9

 Pa kako drukčije, od kud program zna da 9 ima cijeli broj za kvadratni korjen ako ga ne ispita.

16 godina
offline
Programiranje u C++-u - pitanja i odgovori

ajmo reć da sam to uhvatia i onaj drugi zadatak šta nisam zna evo uspia sam riješiti

 

#include<iostream>
using namespace std;
int main(){

   int n,s,d, br=0;
   cout<<"unesi koliko puta cen unjeti broj:"<<endl;
   cin>>d;
   while(d>0){
      cin>>n;
   int z=n%10;
   while (n>0){
         s=n%10;
         n/=10;
   }

   if(s%2!=0 && z%2!=0)
      br++;
   d--;
   }
   cout<<"ukupno brojeva koji imaju neparnu prvu i zadnju znamenku je: "<<br;
      return 0;
}

Moj PC  
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...

ajmo reć da sam to uhvatia i onaj drugi zadatak šta nisam zna evo uspia sam riješiti

 

#include<iostream>
using namespace std;
int main(){

   int n,s,d, br=0;
   cout<<"unesi koliko puta cen unjeti broj:"<<endl;
   cin>>d;
   while(d>0){
      cin>>n;
   int z=n%10;
   while (n>0){
         s=n%10;
         n/=10;
   }

   if(s%2!=0 && z%2!=0)
      br++;
   d--;
   }
   cout<<"ukupno brojeva koji imaju neparnu prvu i zadnju znamenku je: "<<br;
      return 0;
}

 Umjesto while petlje za unos koristi for petlju, preglednije je inače nemam zamjerki, jest da bi ja dobio prvu znamenku preko broja znamenki, ali i ovo je OK, čisto solidno.

14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...

ajmo reć da sam to uhvatia i onaj drugi zadatak šta nisam zna evo uspia sam riješiti

 

 

 #include <iostream>

using namespace std;

int main()
{
    int n;
    cin>>n;
    int niz[n];
    for (int i = 0;i < n;i++)
    {
        cin>>niz[i];
    }
    int br=0;
    for (int i = 0; i < n;i++)
    {
        if (((niz[i]%10)%2)!=0 && niz[i]%2!=0)
        {
            br++;
        }
    }
    cout<<br<<endl;
    return 0;
}

16 godina
offline
Programiranje u C++-u - pitanja i odgovori

moram upisati dva broja i onda ako je zbroj znamenki 10

da ispiše svaki takav broj u njihovom rasponu

 

#include<iostream>
using namespace std;
int main(){
   int n,m,ost, t,zb=0;
   cout<<"unesi prirodan broj:"<<endl;
   cin>>n;
   cout<<"Unesi broj koji je veci od broja koji si unio:"<<endl;
   cin>>m;
   if(m>n){
      for(int i=n; i<m; i++){
         t=i;
            while(t>0){
            ost=t%10;
            zb+=ost;
            t/=10;
            if(zb==10)
               cout<<i<<" ";
            }
            zb=0;
         }
      }
   else
      cout<<"nema";
   return 0;
}

 

 

sada ja upišem 150 i 180

ali mi izbaci 154 155 163 164 172 173

a teba samo 154 163 172

Moj PC  
0 0 hvala 0
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...

moram upisati dva broja i onda ako je zbroj znamenki 10

da ispiše svaki takav broj u njihovom rasponu

 

#include<iostream>
using namespace std;
int main(){
   int n,m,ost, t,zb=0;
   cout<<"unesi prirodan broj:"<<endl;
   cin>>n;
   cout<<"Unesi broj koji je veci od broja koji si unio:"<<endl;
   cin>>m;
   if(m>n){
      for(int i=n; i<m; i++){
         t=i;
            while(t>0){
            ost=t%10;
            zb+=ost;
            t/=10;
            if(zb==10)
               cout<<i<<" ";
            }
            zb=0;
         }
      }
   else
      cout<<"nema";
   return 0;
}

 

 

sada ja upišem 150 i 180

ali mi izbaci 154 155 163 164 172 173

a teba samo 154 163 172

 Taj if uvjet izmakni iz while petlje, provjeru sume znamenki vrši tek kad u zbroj znamenki staviš sve znamenke.

Ako mene pitaš riješi se ovih ispisa unesi ovo ili ono, u žargonu to zovemo kićenje programa, za algoritam treba opis, input, output i to je dovoljno.

Poruka je uređivana zadnji put pet 6.3.2015 17:20 (Floki).
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

obično ne pišem, al sad sam stavio da se vidi,

hvala Floki

Moj PC  
0 0 hvala 0
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

U intervalu [n, m] gdje je n>0 i m>n ispiši brojeve čiji je zbir znamenki 10.

 

input

150 180

 

output

154 163 172

 

#include<iostream>
using namespace std;
int main(){
   int n, m, ost, t, zb = 0;
   cin >> n >> m;
   if (m>n){
      for (int i = n; i<=m; i++){
         t = i;
         while (t>0){
            ost = t % 10;
            zb += ost;
            t /= 10;
         }
         if (zb == 10) cout << i << " ";
         zb = 0;
      }
   }
   else
      cout << "nema";
   return 0;
}

 

 

 Ovako se zadaje zadatak, i ne pišu se oni dodaci upiši ovo ili ono. Pogledaj ovaj interval, pošto su uglate zagrade intervala, granice intervala su uključene, da su obične zagrade granice intervala ne bi bile uključene.

Poruka je uređivana zadnji put pet 6.3.2015 17:38 (Floki).
 
0 0 hvala 0
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

promijenio sam odmah kad si prvi puta odg,

samo je trebalo if staviti iza

Moj PC  
0 0 hvala 0
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

Napiši program koji unosi prirodan broj i ispisuje srednju znamenku ako broj

ima neparan broj znamenaka, ili pak srednje dvije ako ima paran broj znamenaka.

 

Ako odredim broj znamenaka i preko toga jeli broj ima paran ili neparan.

Sada da se radi o stringovim i nizovima, čak i imam neke ideje, al kako se

radi bez njih ne znam kako bi

Moj PC  
0 0 hvala 0
11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...

Napiši program koji unosi prirodan broj i ispisuje srednju znamenku ako broj

ima neparan broj znamenaka, ili pak srednje dvije ako ima paran broj znamenaka.

 

Ako odredim broj znamenaka i preko toga jeli broj ima paran ili neparan.

Sada da se radi o stringovim i nizovima, čak i imam neke ideje, al kako se

radi bez njih ne znam kako bi

Pa jel mora biti bez stringova i nizova?

 

16 godina
offline
Programiranje u C++-u - pitanja i odgovori

a to su ti početnički zadaci, pa onda ide bez njih

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

I što sada čekaš? Da ti netko pokloni rješenje, ili što točno tražiš?

 

Dakle, ako ne možeš preko stringa onda prvim "preletom" kroz broj odredi broj znamenki, a u drugom "preletu" ispiši one srednje kada izračunaš da li je jedna ili dvije.

Poruka je uređivana zadnji put sub 7.3.2015 0:11 (TracerCPP).
11 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ovo ti je sve kaj ti treba:

 

Dobivanje broja znamenki:

while(n>0){
n/=10;
znamenka += 1;
}

 

Rastavljanje na znamenke:

int ost,cj = n;

while (cj > 0){
ost = cj %10;
cj/=10;

cout << ost;

}

Moj PC  
0 0 hvala 0
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

ma znam rastaviti na znamenke i napravit njihov brojač,

ono što me muči je, kako kroz tu drugu petlju  izvest.

ako stavim for(int i=c/2; i<=c/2+1;i++)

ovako nešto tako da izbaci samo tu jednu znamenku

 

Poruka je uređivana zadnji put sub 7.3.2015 0:31 (Makić).
Moj PC  
0 0 hvala 0
11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...

ma znam rastaviti na znamenke i napravit njihov brojač,

ono što me muči je, kako kroz tu drugu petlju to izvest.

 

 Pa ako je neparan broj znamenki onda imas 1 broj za ispisati, dobis sredinu znaci sredina=znemenka/2, i u petlji gdje rastavljas broj na znamenke dodas neki brojac koji se poveca svaki put za +1 kad rastavis broj i kad taj brojac bude na brojac==sredina sam ispises i break-as. Isto tako i za parne samo sto onda imas 2 sredina, jedna je ista kao i prije a druga je sredina_2=sredina+1, samo sto ces ovdje prije nego rastavis broj brojacu dodati +1 i kad (brojac==sredina || brojac==sredina_2) ispises tu znamenku 

16 godina
offline
Programiranje u C++-u - pitanja i odgovori

jedina stvar što je kod neparnog broja trebalo dodat još

  if(zna%2!=0)
      sre=zna/2+1;

Moj PC  
0 0 hvala 0
11 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Makić kaže...

jedina stvar što je kod neparnog broja trebalo dodat još

  if(zna%2!=0)
      sre=zna/2+1;

 Ovisi na kojem mjestu postavis da se brojac poveca +1, ako stavis prije rastava na znamenke onda je sredina = (znamenka/2)+1, ako poslije onda je sredina = znamenka/2

16 godina
offline
Programiranje u C++-u - pitanja i odgovori

Isto sam promjenia prvo redosljed znamenki kod ispisa parnog broja

jer kad rastavlja na znamenke onda ide odzada.

Pa ću pitat jel bio još neki drugi način bez da to radim?

Moj PC  
0 0 hvala 0
E-mail:
Lozinka:
 
vrh stranice