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

poruka: 7.285
|
čitano: 1.712.208
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...
nik_02 kaže...

  Mislim da bi kod ovoga rješenja trebalo napomenuti da elementi trebaju biti sortirani od manjih prema većima. Ako nije tako, onda funkcija neće ispisati sve permutacije jer će zanemariti permutacije koje dolaze dolaze leksikografski prije. Npr. ako promjenimo početni raspored brojeva promjenimo u 231, ova funkcija će ispisati samo:

3 1 2
3 2 1

A ako stavimo 321, onda funkcija neće ispisati ništa budući da je to posljedna permutacija.

 

I zbog načina na koji se računa sljedeća permutacija, ovaj način radi samo na elementima koji se mogu međusobno uspoređivati.

 

Imas li ideju, sta bi mi preporucio (ili neko drugi), ako zelim napraviti taj isti program, ali za neodredjeni broj cifara i da se ista cifra moze ponavljati u broju: npr, da za broj 1335 ispise sve permutacije: 1335, 1353, 1533, 5133, 5313, 5331, 3135, 3315 itd itd. 

Loyal to the game
Poruka je uređivana zadnji put sub 4.5.2013 13:11 (Simon Ghost Riley).
15 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
Simon Ghost Riley kaže...

Imas li ideju, sta bi mi preporucio (ili neko drugi), ako zelim napraviti taj isti program, ali za neodredjeni broj cifara i da se ista cifra moze ponavljati u broju: npr, da za broj 1335 ispise sve permutacije: 1335, 1353, 1533, 5133, 5313, 5331, 3135, 3315 itd itd.

  Pa jednostavno ubaci brojeve 1, 3, 3 ,5 u rjesenje od nik_02:

//.....
vector<int> data;
data.push_back(1);
data.push_back(3);
data.push_back(3);
data.push_back(5);
//.....

 

Poruka je uređivana zadnji put sub 4.5.2013 13:16 (captain_soap_McTawish).
14 godina
offline
Programiranje u C++-u - pitanja i odgovori

Hej ljudi. Ovako,imam jedan zadatak. Tekst zadatka glasi: Učitaj n brojeva u polje, ispiši sve brojeve neparne i veće od aritmetičke sredine svih učitanih brojeva. Upisao sam program, i izbacuje mi grešku da prije if petlje treba doći ) zagrada.

 

#include<stdio.h>
#define MAX 500
main(){
int n,i=0,a[MAX];
float ars;
printf("\n Koliko je n brojeva:");
scanf("%d",&n);
for(i=0;i<n;i++){
    scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
    ars=ars+a[i];
}
for(i=0;i<n;i++){
}
if((a[i]%2!=0) && ((a[i])>ars){
    }
printf("Rjesenje je:");
}

R.I.P. EnlightenedPhoenix 24.6.2011. Steve Jobs: 1955 - 2011
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
alen4430 kaže...

if((a[i]%2!=0) && ((a[i])>ars)

Nisi zatvorio zagradu za if

 

if( (a[i]%2!=0) && (a[i]>ars) )

Poruka je uređivana zadnji put ned 5.5.2013 11:33 (Hambrle).
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

U stvari nije loše naučiti tablicu prioriteta operatora kroz praksu. Mada vrijedi pravilo - ako nisi siguran stavi zagrade,

jer su zagrade na vrhu prioriteta, pa mi u stvari s njima "ručno" određujemo prioritet izvođenja operatoratra.

 

Pa se if uvjet može napisati i ovako kad se oslonimo na prioritet izvođenja operatora: if(a[i]%2!=0 && a[i]>ars)
1. operator modulo

2. operator usporedbe >

3. operator usporedbe !=

4. operator usporedbe boolean vrijednosti &&

Dakle, iz ovog prioriteta izvođenja operatora vidimo da je to ono što trebamo.

 

A ima još grešaka:

1. funkcija main() treba imati povratnu vrijednost int, a na kraju prekid sa return 0

2. varijablu ars treba kod deklaracije inicijalizirati na 0

3. nakon zbrajanja svih elemenata niza u varijablu ars, varijablu ars treba podijeliti sa brojem elemenata niza n da bi dobili aritmetičku sredinu

2. zadnja naredba printf treba biti u bloku if uvjeta i ispisati element niza ukoliko zadovoljava uvjet

 

Sljedeće stvari treba praktičnije napisati:

1. kod deklaracije varijablu i ne treba inicijalizirati na 0, pošto je inicijaliziramo u petlji i u petlji je jedino i koristimo

2. u petlji u kojoj se unose brojevi u niz odmah vršiti i zbrajanje elemenata niza u varijablu ars

3. ne trebaju vitičaste zagrade kod druge petlje kojom provjeravamo if uvjet jer ima samo jednu liniju koda - if uvjet

4. ne trebaju vitičaste zagrade kod if uvjeta jer ima samo jednu liniju koda - funkciju printf kojom ispisujemo elemente koji zadovolje uvjet

Poruka je uređivana zadnji put ned 5.5.2013 13:08 (Floki).
 
1 0 hvala 0
14 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ma naravno,naučit ću ja to. Samo,tek od ove godine imamo programiranje u C-u (C++-u) tako da nisam baš puno upoznati s njima. Da,primjetio sam. Ispravljam se tokom svakog budućeg zadatka. Što se tiče incijalizacije na 0, u školi nam govore da postoji mogućnost da se dogodi da neki broj ostane iz memorije, pa da bismo riješili tak (ne)očekivani problem, da radije stavimo 0. U redu, puno hvala Floki! :)

R.I.P. EnlightenedPhoenix 24.6.2011. Steve Jobs: 1955 - 2011
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Da, to što ne moraš inicijalizirati i kod deklaracije je zato jer taj i inicijaliziraš u petlji, i koristiš ga samo u petlji.

Uglavnom, ovdje ti je dovoljno samo jedno pravilo - iniciujalizirati varijablu prije upotrebe.

Poruka je uređivana zadnji put ned 5.5.2013 13:33 (Floki).
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
  1. #include <iostream> 
  2. using namespace std; 
  3.   
  4. void  ciklicno(char *zk1) { 
  5.   char *zk2 = zk1; 
  6.   char *zk3 = zk1; 
  7.   int broj = 1; 
  8.   bool ciklicno = true ; 
  9.    
  10.     while(*(zk3+1) != *zk2){ 
  11.      broj = broj +1; 
  12.      zk3 = zk3 +1; 
  13.               } 
  14.    
  15.     while(*(zk1+broj) != '\0'){ 
  16.      
  17.      if(*zk1 == *(zk1+broj)){ 
  18.        ciklicno = true;    
  19.        zk1 = zk1+1; 
  20.                  }
  21.        else { 
  22.        ciklicno = false; 
  23.        break; 
  24.          } 
  25.                   } 
  26.    
  27.     if(ciklicno == true) 
  28.     cout << "Red je ciklican sa duzinom:"<< broj << endl; 
  29.      
  30.      else 
  31.      cout << "Red se ciklicno ne ponavlja!"; 
  32.   
  33.    
  34.   
  35. int main() { 
  36.   char zk[80] ; 
  37.   cout << "Unesite red znakova:" << endl;
  38.   cin >> zk; 
  39. return 0; 
  40. }

 

Znaci zadatak je napraviti program koji ce za unesene znakove odrediti da li se ponavljaju "u krug" i kojom duzinom ako da, ili se ne ponavljaju. Kompajler mi ne izbacuje gresku, ali kada ukucam znakove ne izbacuje mi niti da se ponavlja niti da se ne ponavlja. Tek sam poceo sa funkcijama, sta jos moram unijeti. Da li u main funkciji nesto fali mozda?

Loyal to the game
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Nigdje nisi pozvao funkciju ciklicno.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
15 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...

U stvari nije loše naučiti tablicu prioriteta operatora kroz praksu. Mada vrijedi pravilo - ako nisi siguran stavi zagrade,

jer su zagrade na vrhu prioriteta, pa mi u stvari s njima "ručno" određujemo prioritet izvođenja operatoratra.

  Mislim da bi zagrade trebalo stavljati gotovo svugdje zato sto je tada kod puno lakse citati. Jer kada imas izraz koji nastoji sto manje koristiti zagrade, onda onaj tko cita , a ne zna tablicu prioriteta napament, mora svako malo gledati u tablicu sto je iritirajuce. A ako i zna tablicu, opet mu treba odredeno vrijeme u glavi razmisljati da shvati sto se u izrazu dogada. Kod slozenijih izraza to jako iritanto i postoji veca mogucnost pogreske. A kad dijelove izraza grupiras u smislene cjeline pomocu zagrada, onda je prilicno lako citati takav kod jer se na prvi pogled vidi sto taj izraz radi.

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...

Nigdje nisi pozvao funkciju ciklicno.

Hvala, kako sam to zaboravio pitam se.

 

Moze li neko pomoci napisati funkciju koja ce za dati broj izbaciti broj mogucnosti njegovog dobivanja sabiranjem.

Otprilike nesto ovako: broj 5=4+1=3+1+1=2+1+1+1=2+2+1=3+2=1+1+1+1+1 --------- 6 mogucnosti.

Loyal to the game
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Ne, nisam protiv zagrada, ali nije loše kad sjedu prioriteti, tu se dobije bonus za tri stvari:

 

- lakše se čita tuđi kod

- pišu se efikasniji algoritmi

- razumjevanje pojedinih operatora, npr operator -> je uveden da se ne bi pisalo (*instanca).metod(), nego instanca->metod(), uveden je da se izbjegnu zagrade, pošto . ima prioritet pred *

 

A što se tiče korištenja zagrada, da kod složenijih izraza svakako

Poruka je uređivana zadnji put ned 5.5.2013 14:52 (Floki).
 
0 0 hvala 0
15 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
Simon Ghost Riley kaže...
1domagoj1 kaže...

Nigdje nisi pozvao funkciju ciklicno.

Hvala, kako sam to zaboravio pitam se.

 

Moze li neko pomoci napisati funkciju koja ce za dati broj izbaciti broj mogucnosti njegovog dobivanja sabiranjem.

Otprilike nesto ovako: broj 5=4+1=3+1+1=2+1+1+1=2+2+1=3+2=1+1+1+1+1 --------- 6 mogucnosti.

http://pastebin.com/AxcTAvyB

 

#include <vector>
#include <iostream>

using namespace std;

long brojMogucnosti(int number){
      vector<int> mogucnosti(number+1, 0);
      mogucnosti[0] = 1;
      for(int i = 1; i < number; i++){
          for(int j = i; j <= number; j++)
              mogucnosti[j] = mogucnosti[j] + mogucnosti[j-i];
      }
      return mogucnosti[number];
}

int main(){
      cout << "Unesite broj!" << endl;
      int number;
      cin >> number;
      cout << brojMogucnosti(number) << endl;
      return 0;
}  

Floki kaže...

 

- pišu se efikasniji algoritmi

  Ovo mi već nije jasno. Možeš li dati neki konkrentan primjer?

Poruka je uređivana zadnji put ned 5.5.2013 15:08 (captain_soap_McTawish).
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

visok priortet prefiks operatora ++ i --

 

niz[++index]; 

niz[index++];

 

na takve stvari sam mislio

Poruka je uređivana zadnji put ned 5.5.2013 15:15 (Floki).
 
1 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...
Simon Ghost Riley kaže...
1domagoj1 kaže...

Nigdje nisi pozvao funkciju ciklicno.

Hvala, kako sam to zaboravio pitam se.

 

Moze li neko pomoci napisati funkciju koja ce za dati broj izbaciti broj mogucnosti njegovog dobivanja sabiranjem.

Otprilike nesto ovako: broj 5=4+1=3+1+1=2+1+1+1=2+2+1=3+2=1+1+1+1+1 --------- 6 mogucnosti.

http://pastebin.com/AxcTAvyB

 

#include <vector>
#include <iostream>

using namespace std;

long brojMogucnosti(int number){
    vector<int> mogucnosti(number+1, 0);
    mogucnosti[0] = 1;
    for(int i = 1; i < number; i++){
      for(int j = i; j <= number; j++)
        mogucnosti[j] = mogucnosti[j] + mogucnosti[j-i];
    }
    return mogucnosti[number];
}

int main(){
    cout << "Unesite broj!" << endl;
    int number;
    cin >> number;
    cout << brojMogucnosti(number) << endl;
    return 0;
}  

Floki kaže...

 

- pišu se efikasniji algoritmi

  Ovo mi već nije jasno. Možeš li dati neki konkrentan primjer?

Ovo bi odgovaralo, samo sto je problem to sto jos nisam stigao do vektora.  Evo pokusavam petljama ali mi javlja uvijek gresku. Mozes li mi samo reci, za sta tacno sluze vektori, i kada ih koristimo, jer sam vidio da ih vi iskusniji cesto koristite.

Loyal to the game
15 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
Simon Ghost Riley kaže...

Ovo bi odgovaralo, samo sto je problem to sto jos nisam stigao do vektora.   Evo pokusavam petljama ali mi javlja uvijek gresku. Mozes li mi samo reci, za sta tacno sluze vektori, i kada ih koristimo, jer sam vidio da ih vi iskusniji cesto koristite.

  Vektor ti je klasa za nizove.   Vektor mogucnosti ti je ustvari polje tipa  int.  Ja sam gore koristio vektor samo zato sto mogu odmah vrlo lako sve clanove polja staviti na nulu. Ti ga mozes vrlo lako zamijeniti poljem. Umjesto linije  vector<int> mogucnosti(number+1, 0); napisi ovo:

int mogucnosti[number+1];
for(int i = 0; i < number +1; i++)
    mogucnosti[i] = 0;

Prvom linijom deklariramo polje mogucnosti, a pomocu for petlje, sve njegove clanove postavimo na 0.

 

17 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Laicki receno, vektori su ti polja koja se automatski smanjuju ili povecavaju.

Kad napravis polje, moras tocno unaprijed znati koliko to polje treba biti veliko. Kod vektora ne trebas, jer kad god dodas element u vektor on se automatski poveca ili kad izbrises element iz vektora, vektor se automatski smanji. U vecini slucajeva najbolje je koristiti vektore, pogotovo jer se slazu s RAII idiomom.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
 
3 0 hvala 3
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...
Simon Ghost Riley kaže...

Ovo bi odgovaralo, samo sto je problem to sto jos nisam stigao do vektora.   Evo pokusavam petljama ali mi javlja uvijek gresku. Mozes li mi samo reci, za sta tacno sluze vektori, i kada ih koristimo, jer sam vidio da ih vi iskusniji cesto koristite.

  Vektor ti je klasa za nizove.   Vektor mogucnosti ti je ustvari polje tipa int. Ja sam gore koristio vektor samo zato sto mogu odmah vrlo lako sve clanove polja staviti na nulu. Ti ga mozes vrlo lako zamijeniti poljem. Umjesto linije vector<int> mogucnosti(number+1, 0); napisi ovo:

int mogucnosti[number+1];
for(int i = 0; i < number +1; i++)
   mogucnosti[i] = 0;

Prvom linijom deklariramo polje mogucnosti, a pomocu for petlje, sve njegove clanove postavimo na 0.

 

E hvala ti puno, i na zadatku i na objasnjenju. Puno si mi pomogao zadnje dvije sedmice.

Loyal to the game
12 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

moze li mi neko pomoci u vezi ovog zadatka znam da je dug ali ako iko ima vremena danas treba da ga predam
fabrika
proizvodi 5 proizvoda
-prodaje ili po veleprodajnim i maloprodajnim cijenama
-ima racun u banci
-ima 10 zlatnih klijenata koji se mogu zaduziti max.10 000KM
-Zlatni klijent se postaje ukoliko se ostvari promet od 50 000 KM,a ostaje se klijent ako se svaki put uplati min.1000KM prilikom kupovine-jednog mjeseca
-Max. 20 klijenata moze traziti pamcenje svog prometa sa navedenom firmom i konkurisati u 10 klijenata
-postajes zlatni klijent ako ostvaris navedeni promet od 50 000 KM i bude bilo slobodno mjesto u 10 zlatnih;
Dok cekas prolaz u zlatne sa ostvarenim prometom od 50 000 KM,svaka narudzba je jeftinija za 20% od standardne veleprodajne cijene
Na upit korisnika programa treba imati mogucnost ispisa o podacima :
1.o zlatnim clanovima
2. o stanju robe u magacinu
3.o 20 srebrenih clanova
4. o cjenama artikala
za ispis imatu samo jednu f-ju;
voditi racuna o ispravnosti unosa zlatnih clanova (dakle ne moze biti vise puta ista firma), analogno za svake clanove.
-imati f-ju za ispravnost unosa koja je drugacija u zavisnosti od toga sto unosimo

evo sta sam ja uradila dosad
#include <iostream>
using namespace std;

klijenti(int klijenat[20]){
for(int j=0;j<20 ;j++) {
klijenat[j]=

zlatniklijenat()

zaduzenje ( da se zaduzi i

int hiljadarka(int k,int k1)
k1=0;
k1=k1+k;
if(k1=>1000)
cout<<"uplacena je"<<k1<<"Km";
else (k1<1000)
cout<<"nisi vise zlatni clan";

}

informisanje()

void uvod( int x){
cout<<"Ako zelite vise informacija o nasem poslovanju pritisnite 1, ako zelite kupovati pritisnite 2"<<endl ;
cin>>x ;
if(x==1){ informisanje();}
else if(x==2) { kupovina();}
else cout<<"unijeli ste pogresan broj" ;}

prodaja( int novac ,int cijena, int novac1){
int racun ;
novac1=novac1 + novac ;
novac=artikal[i]*cijena[i];
if(racun==racun-novac1)

double racun( int & cijena, int){
int racun=50000,novac1 ;
racun=racun-novac1;
if(novac1=>50000){
cout<<"vi ste zlatni clan";

void kupovina(int & cijena){
char e,f ;
e=da; f=ne;
cout<<"da li ste zlatni clan, da ili ne";
cin>>x;

if(x==e){

double azuriranje( int stanje,int artikal,int cijena,int&a){
for (int i=0;i<5;i++){ stanje [i]=100 ;
artikal[i]=a;
cijena[i]=500;
stanje[i]=stanje[i]-a;} }

double velemalo(int & cijena,char e ,char f){
cout<<"da li zelite malo ili veleprodaju.ako je ovo prvo odgovorite sa da a ako je drugu odgovorite sa ne";
cin>>x;
if(x==e){ cijena[i]=cijena[i];}
else if(x==f){ cijena[i]=cijena[i]-(cijena[i]/2)*100 ;}
else cout<<"unijeli ste pogresan broj" ; }

 
0 0 hvala 0
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ima li ko da mi da hint kakav. U pitanju je pravljenje programa koji bi trebao izbaciti vrijednost n-te cifre broja "pi". Npr za : n=1 ----3, n=2------ 1, n=3 -------4 itd itd. Kako definisemo "pi" u c++ i da li je ta definicija uopste potrebna. Da li postoji mogucnost da program sam izracuna koliko iznosi ta n-ta cifra? Hvala unaprijed.

Poruka je uređivana zadnji put sri 8.5.2013 11:58 (pocetnik_amater).
13 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ja koliko znam nema a što bi bila jednostavno definiraš konstantu, staviš vrijednost "pi" i koristiš.

 

EDIT: Pa to ti je lakse napravis niz, uneseš redom vrijednosti pi i eto.

It's not how good you are, it's how good you want to be.
Poruka je uređivana zadnji put sri 8.5.2013 12:08 (Artem).
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Mislis da rucno unesem vrijednost pi u program? Tu je problem sto taj dati broj n uvijek moze biti veci od broja cifri koje sam ja unio. :/
Vidio sam da neki na netu preporucuju konstantu 4.0*(atan1.0) , probat cu prvo sa tim da vidim sta ce biti.
13 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori

Ma ne rucno nisam se dobro izrazio :D, moraš napravit niz, jer vrijednost pi je zaokruzena na 64 decimale, ako misliš i ti ići na 64 decimale ne postoji u C++ toliki tip podatka(najveci je 8 bajta), znači ne možeš iskoristiti 4atan(1) ili nešto slično. 

It's not how good you are, it's how good you want to be.
13 godina
offline
Programiranje u C++-u - pitanja i odgovori

 

Evo par linija koda:

 

#include<iostream>

using namespace std;

 

void main()

{

 int n;

 int pi[65] = {3,1,4,1,5,9,2,6,5,3,5,8,9,7,9,3,2,3,8,4,6,2,6,4,3,3,8,3,2,7,9,5,

0,2,8,8,4,1,9,7,1,6,9,3,9,9,3,7,5,1,0,5,8,2,0,9,7,4,9,4,4,5,9,2,3}; 

 cout << "Unesite n: ";

 cin >> n;

 cout << pi[n-1];

}

 

It's not how good you are, it's how good you want to be.
Poruka je uređivana zadnji put sri 8.5.2013 12:50 (Artem).
Moj PC  
0 0 hvala 1
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

mislis, n ne moze biti veci od 64? ako je tako onda mislim da je ovo jedini nacin. hvala ti puno na vremenu, i ja kontam kako da mu uradim ovaj zadatak, jer ne postoji definicija pi- a pa sam ga uputio ovdje.

Loyal to the game
Poruka je uređivana zadnji put sri 8.5.2013 12:56 (Simon Ghost Riley).
13 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Simon Ghost Riley kaže...

mislis, n ne moze biti veci od 64? ako je tako onda mislim da je ovo jedini nacin. hvala ti puno na vremenu, i ja kontam kako da mu uradim ovaj zadatak, jer ne postoji definicija pi- a pa sam ga uputio ovdje.

pa može se tu još dodati uslov recimo ako korisnik unese veci n od 64 pa da onda ispiše odgovarajcu poruku...

It's not how good you are, it's how good you want to be.
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Artem kaže...
Simon Ghost Riley kaže...

mislis, n ne moze biti veci od 64? ako je tako onda mislim da je ovo jedini nacin. hvala ti puno na vremenu, i ja kontam kako da mu uradim ovaj zadatak, jer ne postoji definicija pi- a pa sam ga uputio ovdje.

pa može se tu još dodati uslov recimo ako korisnik unese veci n od 64 pa da onda ispiše odgovarajcu poruku...

Da naravno, mene najvise iznenadjuje da ne postoji nikakva predefinisana vrijednost pi u c++. Ali to je vjerovatno zbog tog ogranicenja od maksimalnih 64 cifara. 

Loyal to the game
Poruka je uređivana zadnji put sri 8.5.2013 13:05 (Simon Ghost Riley).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Simon Ghost Riley kaže...

Ali to je vjerovatno zbog tog ogranicenja od maksimalnih 64 cifara. 

Kakvog ograničenja? Polje može biti onoliko koliko prostora na stacku imaš. A to ti je u praksi puno, puno više od 64 bajta, ili 256 bajta koliko zauzima ovo polje...

0xBADC0DE
Poruka je uređivana zadnji put sri 8.5.2013 14:33 (rustweaver).
15 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
Simon Ghost Riley kaže...

Da naravno, mene najvise iznenadjuje da ne postoji nikakva predefinisana vrijednost pi u c++. Ali to je vjerovatno zbog tog ogranicenja od maksimalnih 64 cifara.

Preciznost ovisi o tipu podataka. Koliko znam, najvecu preciznost od 18 decimalnih znamenki ima tip long double velicina 10 bajta. No to ovisi o prevoditelju i o procesoru na kojem se program izvrasava. Ako ti je bas potrebna potpuna preciznost, onda nemoj koristiti ugradene tipove. Koristi neku biblioteku poput GMP gdje je preciznost i velicina broja samo ogranicena memorijom racunala. No mislim da bi u tvom slucaju znamenke bilo najbolje pohranjivati kao polje.

 

Ako hoces racunati broj pi u programu, onda trebas samo neki algoritam za racunanje broja pi. Istrazi malo o tome. Za racunanje tocno odredene znamenke broja pi postoji Bailey–Borwein–Plouffe formula 

Poruka je uređivana zadnji put sri 8.5.2013 16:07 (captain_soap_McTawish).
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

Evo pi sa 1000 000 decimala. Spremi to u text file, ucitaj u program u jedan string, te izvuci preko indeksa znamenku i pretvori je u broj.

 

http://newton.ex.ac.uk/research/qsystems/collabs/pi/pi6.txt

Lack of money is the root of all evil. George Bernard Shaw
 
1 0 hvala 0
E-mail:
Lozinka:
 
vrh stranice