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

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

hvala sto si se potrudio ali i ovdje uvijek mi ispise niz je rastuci

To ovisi šta unosiš, unosi slijedno niz, recimo po jedan manje:

Ako ga onaj if gdje privjerava da li je član sa indeksom i manji od onoga sa indeksom i+1 jednom postavi na 1 varijabla jeste ostaje na 1, tako da nećeš dobiti željenu stvar.

Poruka je uređivana zadnji put čet 14.6.2012 21:13 (royalhero).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

unio sam ovako i opet pise da je rastuci

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

Nemoguce, evo sam stavio na pastebin kôd, kopiraj od tamo.
http://pastebin.com/LNbcfLGm

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

Gledajuci ovaj dio koda (najbitniji, jel):

for(int i=0; i<10; i++)
    {
       if(niz[i]<=niz[i+1])
       {
          jeste=1;
          break;
       }
    }

 

vidimo da se for petlja prekida cim naide na prvi broj koji je veci od prethodnog. Ako imas 1, 2, 3, petlja ce provjerit 1 i 2, 1 jest manje od 2 i petlja se breaka i to je to. Ista stvar je i za 1, 3, 2 recimo. Problem je ovdje ako se ne varam i ovaj sam uvjet provjere. Ako imamo recimo 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ovu zadnju 0 ce usporedivati s necim na indexu [10] koji zapravo ne postoji te imamo overflow u ovom slucaju.

 

Dalo bi se to bolje napraviti.

 

EDIT: Malo je zadatak blesav, jer nitko ne mora staviti tocno silazni ili uzlazni niz, vec moze mijesati brojeve, ali pretpostavimo da su nam dovoljna prva dva broja za odrediti kakav je niz, tad je dovoljno u ovoj for petlji staviti da ide do 9 recimo (da sprijecimo overflow i rijesimo taj bug).

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
Poruka je uređivana zadnji put čet 14.6.2012 21:24 (1domagoj1).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

ja sma to sad nesto malo prepravljo i to sad izgleda ovako i sad radi

 

#include<iostream>

#include<conio.h>

using namespace std;

int main (){

int jeste=true;

int niz[10],i;

for( i=1; i<=10; i++)

cin>>niz[i];

for( i=1; i<=9; i++)

if(niz[i]>=niz[i+1])

jeste=false;

if(jeste==true)

cout<<"Niz je rastuci!"<<endl;

else

cout<<"Niz nije rastuci"<<endl;

getch ();

}

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

Da, pogrješio sam u breaku što se izlaska tiče.
Pa kako bi rješili problem sa zadnjim članom?

13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
eagle05 kaže...

if(niz[i]>=niz[i+1])

 

Ponovo ostaje problem overflowa.

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

ne ostaje zato sto sam stavio do 9 , a ne do 10 .

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

ja sma to sad nesto malo prepravljo i to sad izgleda ovako i sad radi

 

 

#include<iostream>

#include<conio.h>

using namespace std;

int main (){

int jeste=true;

int niz[10],i;

for( i=1; i<=10; i++)

cin>>niz[i];

for( i=1; i<=9; i++)

if(niz[i]>=niz[i+1])

jeste=false;

if(jeste==true)

cout<<"Niz je rastuci!"<<endl;

else

cout<<"Niz nije rastuci"<<endl;

getch ();

}

 

Ako ti je varijabla jeste tipa int, onda i stavi integer, a ne boolean. Zapravo ti ovdje kompajler sam napravi konverziju tipa ako se ne varam ili C++ to dopusta, ne znam, treba Tracera pitati.

 

Znaci:

int jeste = 1; ili ako hoces boolean onda bool jeste = true;

isto tako

int jeste = 0 ili bool jeste = false;

 

int jeste = false; -> nikako

 

I pobogu daj to formatiraj malo, stavi viticaste zagrade da se zna sto spada u koji scope, a ne ovako...

 

Boldano: opet imas overflow. Stavi strogo manje, a ne manje-jednako.

royalhero kaže...

Ponovo ostaje problem overflowa.

Pogledaj moj EDIT gore.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
Poruka je uređivana zadnji put čet 14.6.2012 21:31 (1domagoj1).
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
eagle05 kaže...

ne ostaje zato sto sam stavio do 9 , a ne do 10 .

i će biti 9, prema i+1, to znači 9+1=10, i[10]?

 

EDIT:

Npr., kod mene i[10] je -858993460

Poruka je uređivana zadnji put čet 14.6.2012 21:34 (royalhero).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

evo,jel sad ok ?

 

#include<iostream>

#include<conio.h>

using namespace std;

int main (){

int jeste=1;

int niz[10],i;

for( i=1; i<=10; i++){

cin>>niz[i];

           } 

for( i=1; i<=9; i++){

if(niz[i]>=niz[i+1]){

jeste=0;

           }

           }

if(jeste==true){

cout<<"Niz je rastuci!"<<endl;

        }

else{

cout<<"Niz nije rastuci"<<endl;

   }

 

getch ();

}

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

Sad vidim, ti i kod unosa radis overflow... Indexi krecu od NULE ne od 1. Ispravi to.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
 
1 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
eagle05 kaže...

evo,jel sad ok ?

E jesi ga ispravio, svaka ti dala...

Jedino da te editor ne zahebava?

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

Imam mali problemčić. Novi sam u C++-u, tek sam počeo, na Hello World razini sam :)

Ovo mi je kod:

 

 

#include <iostream>

using namespace std;

int main(void)

{

cout << "Hello World!";

return 0;

}

 

 

Kad idem debugati, kompajlira se ok i onda na djelic sekunde vidim konzolu (praznu) i ovaj error:

 

 

'Hello World.exe': Loaded 'C:\Users\HDM\Documents\Visual Studio 2010\Projects\Hello World\Debug\Hello World.exe', Symbols loaded.

'Hello World.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file

'Hello World.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file

'Hello World.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file

'Hello World.exe': Loaded 'C:\Windows\SysWOW64\msvcp100d.dll', Symbols loaded.

'Hello World.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded.

The program '[2136] Hello World.exe: Native' has exited with code 0 (0x0).

 

Gdje je problem?

Koristim Visual Studio 2010 Express.

 

 

Vrt trokuta, najsjevernije drvo, 5 stopala južno.
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Da li program pokrećeš preko Debug (F5) ili preko Start Without Debugging (Ctrl+F5) ?, pokreći sa Ctrl+F5, debugging ti u ovom slučaju nije potreban.
Ispod cout-a, stavi system("PAUSE");, da ti pauzira program nakon izvršavanja, ali to bi Visual Studio sâm trebao dodati.

Nakon cout-a, prije ; dodaj <<endl, time ćeš preći u novi red.

I ne treba ti void u zagradama maina.

Nisu mi baš najjasniji ti errori, probaj pokrenuti ovako kako sam ti rekao, dakle:

#include <iostream>
using namespace std;

int main()
{
   cout << "Hello World!"<<endl;
   system("PAUSE");
   return 0;

}

Poruka je uređivana zadnji put pet 15.6.2012 7:40 (royalhero).
14 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Moze malo da mi pojasnite sta je taj bool i true i false i gdje se koriste ??

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Intelovac123 kaže...

Moze malo da mi pojasnite sta je taj bool i true i false i gdje se koriste ??

ovdje ti se nalazi neki jednostavniji kod gdje je to objašnjeno - http://codepad.org/MUk8UFYb

 

bool ti se koristi za provjeru nekih vrijednosti, recimo ovdje se koristi za autorizaciju

 

u osnovi napraviš neku metodu sa kojom provjeravaš istinitost, i ona vraća true ili false - i kada kasnije sa nekim objektom pristupaš toj metodi, tako da njegove konstruktore ubaciš u nju - onda će se tek izvršiti ono ispod njega 

 

EDIT: ovdje treba malo bolje napraviti ova prava pristupa - public, private i sl., da bi bilo ozbiljnije, ali, to ovdje nije bitno sada

~21 god, ETFOS, Slavonac, linux and open source fan, net addict, želim znati više, interesi: web dev, svemir, glazba...
Poruka je uređivana zadnji put pet 15.6.2012 8:39 (kakapo).
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
nik_02 kaže...
@Rattner

Koristi što više STL C++-a.Ovdje imaš svoju verziju sorta , kontejner kroz matricu ... , program radi i daje neki rezultat. ali može to  sigurnije , brže , preglednije ... kroz STL C++-a. On je sastavni dio jezika i lupaj po njemu što više i u sve svrhe. Nećeš biti zakinut za "ispod haube znanje" jer učenjem STL-a naučit ćeš sve homemade verzije čega se god sjetiš ali izvedene na najbži i najoptimizarniji način a u pozadini svakog  #include // stdTempLib C++   leži low-level.

http://www.java2s.com/Tutorial/Cpp/0100__Development/ABubblesort.htm ovo tu bi bio "standardni" bubble sort?
Sva literatura koju koristim je na engleskom pa pretpostavljam da je matrica isto sto i array?
Za STL sam nasao ovo http://www.cplusplus.com/reference/algorithm/ pa cu poceti uciti to polako.

Znam da je post malo duzi ali ako netko moze odvojiti malo vremena i pogledati kod puno bi mi pomoglo.
Evo i druga verzija programa; u biti tvoja + jos neke stvari i par promjena:

 

#include <iostream>
using namespace std;
 
class Monster
{
   private:
       string m_Name;
       int m_Health;
       int m_Strenght;
     
   public:
      Monster () { cout << "Building a Monster." << endl; }
      ~Monster () { cout << "Destroying a Monster." << endl; }
     
      string GetName () { return m_Name; }
      void SetName (string x) { m_Name = x; }
     
      int GetHealth () { return m_Health; }
      void SetHealth (int x) { m_Health = x; }
     
      int GetStrenght () { return m_Strenght; }
      void SetStrenght (int x) { m_Strenght = x;}
};
 
class Dragon : public Monster
{
   public:
      Dragon () { cout << "Building a Dragon." << endl; }
      ~Dragon () { cout << "Destroying a Dragon." << endl; }
     
      void Fire()
      {
        cout << "Dragon breathing fire!" << endl;
      }
};
 
//---------------------------------------------------------------------------//
 
 
 
void Health(Dragon *array, int *size, bool (*pComparison)(int, int))
{
   bool swap = true;
   while(swap)
   {
     swap = false;
     int yTMP;
     int zTMP;
     string strTMP;
     for (int iii=0; iii<*size-1; iii++)
     {
      if(pComparison(array[iii].GetHealth(), array[iii+1].GetHealth() ))
       {
         strTMP = array[iii].GetName();
         array[iii].SetName(array[iii+1].GetName());
         array[iii+1].SetName (strTMP);
 
         yTMP = array[iii].GetHealth();
         array[iii].SetHealth (array[iii+1].GetHealth());
         array[iii+1].SetHealth (yTMP);
 
         zTMP = array[iii].GetStrenght();
         array[iii].SetStrenght (array[iii+1].GetStrenght());
         array[iii+1].SetStrenght (zTMP);
 
         swap = true;
 
       }
     }
         
   }  
}
 
void Strenght(Dragon *array, int *size, bool (*pComparison)(int, int))
{
   bool swap = true;
   while(swap)
   {
     swap = false;
     int yTMP;
     int zTMP;
     string strTMP;
     for (int iii=0; iii<*size-1; iii++)
     {
      if(pComparison(array[iii].GetStrenght(), array[iii+1].GetStrenght() ))
       {
         strTMP = array[iii].GetName();
         array[iii].SetName(array[iii+1].GetName());
         array[iii+1].SetName (strTMP);
 
         yTMP = array[iii].GetHealth();
         array[iii].SetHealth (array[iii+1].GetHealth());
         array[iii+1].SetHealth (yTMP);
 
         zTMP = array[iii].GetStrenght();
         array[iii].SetStrenght (array[iii+1].GetStrenght());
         array[iii+1].SetStrenght (zTMP);
 
         swap = true;
 
       }
     }
         
   }  
}
 
bool Ascending(int nX, int nY)
{
   return nY < nX;
}
 
bool Descending(int nX, int nY)
{
   return nY > nX;
}
 
//---------------------------------------------------------------------------//

void Print(Dragon *array, int *size)
{
   for(int iii=0 ; iii<*size ; iii++)  
   {
       cout << endl;   
       cout << "Name: " << array[iii].GetName() << endl;
       cout << "Health: " << array[iii].GetHealth() << endl;
       cout << "Strenght: " << array[iii].GetStrenght() << endl;
       cout << endl;
   }    
}

//---------------------------------------------------------------------------//

int main()
{
   cout << "Enter the number of dragons you want to create:" << endl;
   int *size = new int;
   cin >> *size;
   Dragon* array = new Dragon[*size];
 
 
 
   for (int iii=0; iii<*size; iii++)
   {
     cout << "Enter the name of the " << iii+1 << ". dragon:" << endl;
     string name;
     cin>> name;

     cout << "Enter " << name  << "'s health:" << endl;
     int x;
     cin >> x;
  
     cout << "Enter " << name  << "'s strenght:" << endl;
     int y;
     cin>> y;
 
     array[iii].SetName(name);
     array[iii].SetHealth(x);
     array[iii].SetStrenght(y);
   }
 
   Print(array, size);
 
   char * YN = new char;
   cout << "Would you like to sort the array? <Y/N>" << endl;
   do
   {
       cin >> *YN;
       if (*YN != 'y' && *YN != 'Y' && *YN != 'n' && *YN != 'N')
       {
           cout << "Invalid input." << endl;
       }
 
   } while ( *YN != 'y' && *YN != 'Y' && *YN != 'n' && *YN != 'N' );
   if( *YN == 'n' || *YN == 'N' )
       exit(1);
 
   int *aaa = new int;
   cout << "Sort by: " << endl;
   cout << "1. Health" << endl;
   cout << "2. Strenght" << endl;
   do
   {
       cin >> *aaa;
       if (*aaa != 1 && *aaa != 2)
       {
          cout << "Invalid input." << endl;
       }
   } while ( *aaa != 1 && *aaa != 2);
 
   int * bbb = new int;
   cout << "Sort in:" << endl;
   cout << "1. Ascending order" << endl;
   cout << "2. Descending order" << endl;
   do
   {
       cin >> *bbb;
       if (*bbb != 1 && *bbb != 2)
       {
         cout << "Invalid input." << endl;
       }
   } while ( *bbb != 1 && *bbb != 2);
 
   if( *aaa == 1 && *bbb ==1 )
   {
       Health(array, size, Ascending); 
       Print(array, size);  
   }
   else if ( *aaa ==1 && *bbb == 2 )
   {
       Health(array, size, Descending);
       Print(array, size);    
   }
   else if ( *aaa ==2 && *bbb == 1 )
   {
       Strenght(array, size, Ascending);
       Print(array, size);    
   }
   else if ( *aaa ==2 && *bbb == 2 )
   {
       Strenght(array, size, Descending);
       Print(array, size);    
   }
     
   delete []array;
   delete size;
   delete YN;
   delete aaa;
   delete bbb;
     
   system("pause");
   return 0;      
}

 

Dodao sam Print funkciju, vecinu toga stavio na heap (koristim englesku literaturu, ne znam nas naziv), dodao sam exit funkciju kod onoga gdje pita da li zelimo sortirati podatke (sto sam prije zaboravio). Onaj cin.ignore() sam morao vratiti jer inace program pri unosu razmaka izbaci SVE cout-ove u programu i dode na kraj. Vec sam bio pitao tu na forumu za taj problem i nista, i dalje koristim taj ignore.

Imam jos nekoliko pitanja:

1. U "drugom dijelu", gdje su dvije funkcije za sortiranje, Health i Strenght, se moze to nekako elegantnije napisati? Ne mislim na sam algoritam sortiranja vec da li se moze to nekako spojiti bez pretjeranog kompliciranja?
2. Pretpostavljam da bi zbog preglednosti bilo dobro ovaj kod napisati u vise fajlova? U jedan staviti klase, u drugi sortiranje itd.?
3. Po ovom tutorialu

(na 13:26 pocinje taj dio) je objasnjeno da se stavljanje mreze klasnih objekata (ili kako vec) na heap radi ovako i nemam razloga sumnjati da to nije tocno:

   cout << "Enter the number of dragons you want to create:" << endl;
   int * size = new int;
   cin >> *size;
   Dragon *array[*size];
   for(int iii=0; iii<*size; iii++)
   {
       array[iii] = new Dragon();       
   }

Ali, kada to ubacim u svoj program se javljaju dva problema:

1. Iako je to sada na heapu, van glavne funkcije u kojoj je to i proglaseno ne prihvaca -> nego se mora koristiti tocka. Zasto?
2. Ako prilagodim kod tome, i program se pokrene znaci sto se tice sintakse sve je ok, cim pozove Print funkciju program se srusi. Isto tako ako se odabere silazno (descending) sortiranje. Evo i ta verzija (osim gore navedenoga, identicna je onoj prvoj, koja radi bez greske):

#include <iostream>
using namespace std;
 
class Monster
{
   private:
       string m_Name;
       int m_Health;
       int m_Strenght;
     
   public:
      Monster () { cout << "Building a Monster." << endl; }
      ~Monster () { cout << "Destroying a Monster." << endl; }
     
      string GetName () { return m_Name; }
      void SetName (string x) { m_Name = x; }
     
      int GetHealth () { return m_Health; }
      void SetHealth (int x) { m_Health = x; }
     
      int GetStrenght () { return m_Strenght; }
      void SetStrenght (int x) { m_Strenght = x;}
};
 
class Dragon : public Monster
{
   public:
      Dragon () { cout << "Building a Dragon." << endl; }
      ~Dragon () { cout << "Destroying a Dragon." << endl; }
     
      void Fire()
      {
        cout << "Dragon breathing fire!" << endl;
      }
};
 
//---------------------------------------------------------------------------//
 
 
 
void Health(Dragon *array, int *size, bool (*pComparison)(int, int))
{
   bool swap = true;
   while(swap)
   {
     swap = false;
     int yTMP;
     int zTMP;
     string strTMP;
     for (int iii=0; iii<*size-1; iii++)
     {
      if(pComparison(array[iii].GetHealth(), array[iii+1].GetHealth() ))
       {
         strTMP = array[iii].GetName();
         array[iii].SetName(array[iii+1].GetName());
         array[iii+1].SetName (strTMP);
 
         yTMP = array[iii].GetHealth();
         array[iii].SetHealth (array[iii+1].GetHealth());
         array[iii+1].SetHealth (yTMP);
 
         zTMP = array[iii].GetStrenght();
         array[iii].SetStrenght (array[iii+1].GetStrenght());
         array[iii+1].SetStrenght (zTMP);
 
         swap = true;
 
       }
     }
         
   }  
}
 
void Strenght(Dragon *array, int *size, bool (*pComparison)(int, int))
{
   bool swap = true;
   while(swap)
   {
     swap = false;
     int yTMP;
     int zTMP;
     string strTMP;
     for (int iii=0; iii<*size-1; iii++)
     {
      if(pComparison(array[iii].GetStrenght(), array[iii+1].GetStrenght() ))
       {
         strTMP = array[iii].GetName();
         array[iii].SetName(array[iii+1].GetName());
         array[iii+1].SetName (strTMP);
 
         yTMP = array[iii].GetHealth();
         array[iii].SetHealth (array[iii+1].GetHealth());
         array[iii+1].SetHealth (yTMP);
 
         zTMP = array[iii].GetStrenght();
         array[iii].SetStrenght (array[iii+1].GetStrenght());
         array[iii+1].SetStrenght (zTMP);
 
         swap = true;
 
       }
     }
         
   }  
}
 
bool Ascending(int nX, int nY)
{
   return nY < nX;
}
 
bool Descending(int nX, int nY)
{
   return nY > nX;
}
 
//---------------------------------------------------------------------------//

void Print(Dragon *array, int *size)
{
   for(int iii=0 ; iii<*size ; iii++)  
   {
       cout << "Name: " << array[iii].GetName() << endl;
       cout << "Health: " << array[iii].GetHealth() << endl;
       cout << "Strenght: " << array[iii].GetStrenght() << endl;
       cout << endl;
   }    
}

//---------------------------------------------------------------------------//

int main()
{
   cout << "Enter the number of dragons you want to create:" << endl;
   int * size = new int;
   cin >> *size;
   Dragon *array[*size];
   for(int iii=0; iii<*size; iii++)
   {
       array[iii] = new Dragon();       
   }
 
   for (int iii=0; iii<*size; iii++)
   {
     cout << "Enter the name of the " << iii+1 << ". dragon:" << endl;
     string name;
     cin.ignore();
     getline(cin, name);
     cout << "Enter " << name  << "'s health:" << endl;
     int x;
     cin >> x;
     cout << "Enter " << name  << "'s strenght:" << endl;
     int y;
     cin>> y;
 
     array[iii]->SetName(name);
     array[iii]->SetHealth(x);
     array[iii]->SetStrenght(y);
   }
 
   //Print(*array, size);
   for (int iii = 0; iii<*size; iii++)
   {
       cout << endl;
       cout << "Name: " << array[iii] -> GetName() << endl;
       cout << "Health: " << array[iii] -> GetHealth() << endl;
       cout << "Strenght: " << array[iii] -> GetStrenght() << endl;
       cout << endl;
   }
   
   char * YN = new char;
   cout << "Would you like to sort the array? <Y/N>" << endl;
   do
   {
       cin >> *YN;
       if (*YN != 'y' && *YN != 'Y' && *YN != 'n' && *YN != 'N')
       {
           cout << "Invalid input." << endl;
       }
 
   } while ( *YN != 'y' && *YN != 'Y' && *YN != 'n' && *YN != 'N' );
   if( *YN == 'n' || *YN == 'N' )
       exit(1);
      
      
   int *aaa = new int;
   cout << "Sort by: " << endl;
   cout << "1. Health" << endl;
   cout << "2. Strenght" << endl;
   do
   {
       cin >> *aaa;
       if (*aaa != 1 && *aaa != 2)
       {
          cout << "Invalid input." << endl;
       }
   } while ( *aaa != 1 && *aaa != 2);
 
   int * bbb = new int;
   cout << "Sort in:" << endl;
   cout << "1. Ascending order" << endl;
   cout << "2. Descending order" << endl;
   do
   {
       cin >> *bbb;
       if (*bbb != 1 && *bbb != 2)
       {
         cout << "Invalid input." << endl;
       }
   } while ( *bbb != 1 && *bbb != 2);
 
   if( *aaa == 1 && *bbb ==1 )
   {
       Health(*array, size, Ascending); 
       //Print(*array, size);  
   }
   else if ( *aaa ==1 && *bbb == 2 )
   {
       Health(*array, size, Descending);
       //Print(*array, size);    
   }
   else if ( *aaa ==2 && *bbb == 1 )
   {
       Strenght(*array, size, Ascending);
       //Print(*array, size);    
   }
   else if ( *aaa ==2 && *bbb == 2 )
   {
       Strenght(*array, size, Descending);
       //Print(*array, size);    
   }
   
   for (int iii = 0; iii<*size; iii++)
   {
       cout << endl;
       cout << "Name: " << array[iii] -> GetName() << endl;
       cout << "Health: " << array[iii] -> GetHealth() << endl;
       cout << "Strenght: " << array[iii] -> GetStrenght() << endl;
       cout << endl;
   }
   
   delete size;
   delete [] array;
   delete YN;
   delete aaa;
   delete bbb;
  
   system("pause");
   return 0;      
}       



Tu sam iskomentirao te pozive za Print jer inace ne bi ni doslo do sortiranja.
Sto se tice ovoga:

nik_02 kaže...

...program radi i daje neki rezultat. ali može to  sigurnije , brže , preglednije ... kroz STL C++-a. On je sastavni dio jezika i lupaj po njemu što više i u sve svrhe. Nećeš biti zakinut za "ispod haube znanje" jer učenjem STL-a naučit ćeš sve homemade verzije čega se god sjetiš ali izvedene na najbži i najoptimizarniji način a u pozadini svakog  #include // stdTempLib C++   leži low-level.

Sta tocno se moze izvesti sigurnije, brze i preglednije? Ne trazim napisan kod, samo na koji dio mog koda se to odnosi i kako to napraviti. Dalje cu se snac googlanjem, a ako zapnem cu opet pitat ovdje. Namjeravam ove godine upisati informatiku tako da kad vec ucim nesto sto ce mi trebati, da ucim sve redom, bez preskakanja.

Hvala. :)

16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

 

@Rattner

Pišem s posla i gibam za par min. pa samo ukratko o jednom dijelu i to u par riječi.

 

 

/*Sta tocno se moze izvesti sigurnije, brze i preglednije? Ne trazim napisan kod, samo na koji dio mog koda se to odnosi i kako to napraviti. Dalje cu se snac googlanjem, a ako zapnem cu opet pitat ovdje. Namjeravam ove godine upisati informatiku tako da kad vec ucim nesto sto ce mi trebati, da ucim sve redom, bez preskakanja. */

 

 

Koristi STL kontejnere , vidi koji ti paše , imaš na novom standardu c++11 jo 6 novih , +stari = 17 kontejnera. Trpaj podatke u njih , uzmi jedan npr list , prouči manipulaciju iteratorima -> imaš daleko sigurniji i jednostavniji rad nego baratajući s golim matricama (array).

Dakle goli stari array , ne C++11 novi STL kontejner <array>. Vidi u <algorithm> sort , malo prokontaj kako radi , samo ubaci kondicije kroz func.object ili još bolje razradi kroz  C++11 lambdu  i to spojeno s c++ kontejnerom će ti skkratiti kod za dosta linija (brže) , alokacija putem STL-a brine za tebe o dinamičkom širenju i sužavanju kontejnera + rad s iteratorima (sigurnije)  = bit će čitljivije i preglednije.

 

Sad gibam.

 

 

 

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

Jedno pitanje - zašto koristite te besmislene (aaa) nazive varijabli? Šta nije pametnije dati joj normalan naziv a ne a, b, c, x, y...?

http://nighthawk-software.blogspot.com/
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Sum_of_all_fears kaže...

Jedno pitanje - zašto koristite te besmislene (aaa) nazive varijabli? Šta nije pametnije dati joj normalan naziv a ne a, b, c, x, y...?

A to su ti novaci :D, tek uce ;)

 

Kad kodiram, jedine su mi "slovne" varijable i u for petlji i eventualno ako je ugnjezdena petlja jos i k, ostalo su sve opisna imena, sva sreca na completionu inace bi poludio da moram stalno utipkavati tolike dugacke nazive...

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
Poruka je uređivana zadnji put pet 15.6.2012 17:15 (1domagoj1).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Sum_of_all_fears kaže...

Jedno pitanje - zašto koristite te besmislene (aaa) nazive varijabli? Šta nije pametnije dati joj normalan naziv a ne a, b, c, x, y...?

Zato što tako piše u osnovama pisanja neodrživog koda:

 

 

 

If you call your variables a, b, c, then it will be impossible to search for instances of them using a simple text editor. Further, nobody will be able to guess what they are for. If anyone even hints at breaking the tradition honoured since FØRTRAN of using i, j, and k for indexing variables, namely replacing them with ii, jj and kk, warn them about what the Spanish Inquisition did to heretics.

bez uvrede ikome, ofc, svi to radimo :) 
btw, ima jedan tekst iz programiranja koji me uvijek nasmije: klik
sorry na offtopic

 

~21 god, ETFOS, Slavonac, linux and open source fan, net addict, želim znati više, interesi: web dev, svemir, glazba...
Poruka je uređivana zadnji put pet 15.6.2012 18:45 (kakapo).
15 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
kakapo kaže...

 

If you call your variables a, b, c, then it will be impossible to search for instances of them using a simple text editor. Further, nobody will be able to guess what they are for. If anyone even hints at breaking the tradition honoured since FØRTRAN of using i, j, and k for indexing variables, namely replacing them with ii, jj and kk, warn them about what the Spanish Inquisition did to heretics.

bez uvrede ikome, ofc, svi to radimo :) 
btw, ima jedan tekst iz programiranja koji me uvijek nasmije: klik
sorry na offtopic

 

Meni je ovo najdraze:

Åccented Letters

Use accented characters on variable names. E.g.

    typedef struct { int i; } ínt;

where the second ínt's í is actually i-acute. With only a simple text editor, it's nearly impossible to distinguish the slant of the accent mark.

Twitter- @capttawish Linux/GNU live forever.
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pozdrav 

 

Radim neke zadatke u C++ i zastadoh na jednom zadatku, nemogu da ga rijesim, pa ako moze pomoci neko ili ako ima neki primjer uradjen ovome slican :)

 

Zadatak je:  Razviti klasu vektor za rad sa jednodimenzionalnim matricama te klasu matrix za rad sa matricama.

 

 Hvala.

sale
 
0 0 hvala 0
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pogledao sam taj list i ne ide mi bas {#}

#include <iostream>
#include <list>
using namespace std;

int main()
{
    list<int> myList(5,0);
    list<int>::iterator it = myList.begin();
    cout << "In which element do you want to store a value?" << endl;
    int x;
    cin >> x;
    advance(it, x);
    cout << "Enter the value you wish to store in it: " << endl;
    cin >> *it;
   
    list<int>::iterator output;
    cout << "The list:" << endl;
    for(output = myList.begin(); output != myList.end(); output++)
    {
        cout << *output << endl;          
    }
   
    system("pause");
    return 0;   
}

 

Evo, do ovdje sam uspio shvatiti. Mene zanima kako umjesto liste integera napraviti listu nekih klasa. Npr. ako imam ovo

 

class Monster
{
   private:
       string name;
       int health;
       int strenght;
     
   public:
      Monster () { cout << "Building a Monster." << endl; }
      ~Monster () { cout << "Destroying a Monster." << endl; }
     
      string getName () { return name; }
      void setName (string x) { name = x; }
     
      int getHealth () { return health; }
      void setHealth (int x) { health = x; }
     
      int getStrenght () { return strenght; }
      void setStrenght (int x) { strenght = x;}
};

 

deklaracija liste bi bila list<ime klase> nekoIme;?
Ako netko moze napisati kod kako bih preko liste od npr. 5 Dragon objekata spremio broj u health varijablu treceg objekta.

 

Hvala.

 
0 0 hvala 0
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

umm neznam gdje sam napravio gresku

 

#include <iostream>
#include <cmath>
#include <cstdlib>

int main(){
    using namespace std;
   
    double x;
    x = pow(3, 3);
    cout << x;
    cout << endl;
    cin.get();
    return 0;
   
}

 

 

ma sta probao uvijek mi kaze da je x=pow(3,3); greska

 

MOARR
Moj PC  
0 0 hvala 0
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
GamerMaster2041 kaže...

umm neznam gdje sam napravio gresku

 

#include <iostream>
#include <cmath>
#include <cstdlib>

int main(){
    using namespace std;
   
    double x;
    x = pow(3, 3);
    cout << x;
    cout << endl;
    cin.get();
    return 0;
   
}

 

 

ma sta probao uvijek mi kaze da je x=pow(3,3); greska

 

 

#include <iostream.h>

#include <math.h>

 

using namespace std;

 

int main(){

 

   double x = pow(3,3);

   cout << x<<endl;

   system("PAUSE");

   return 0; 

 

}

 

AC Milan - IL CLUB PIU' TITOLATO AL MONDO
Poruka je uređivana zadnji put pon 18.6.2012 12:32 (emerik).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
emerik kaže...
GamerMaster2041 kaže...

umm neznam gdje sam napravio gresku

 

#include <iostream>
#include <cmath>
#include <cstdlib>

int main(){
    using namespace std;
   
    double x;
    x = pow(3, 3);
    cout << x;
    cout << endl;
    cin.get();
    return 0;
   
}

 

 

ma sta probao uvijek mi kaze da je x=pow(3,3); greska

 

 

#include <iostream.h>

#include <math.h>

 

using namespace std;

 

int main(){

 

   double x = pow(3,3);

   cout << x<<endl;

   system("PAUSE");

   return 0; 

 

}

 

hvala.

Kako je njemu to radilo onda

 

MOARR
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

#include <iostream>
#include <cmath>
#include <cstdlib>

using namespace std;
int main()

{
    double x;

    double baza=3;
    x = pow(baza, 3);
    cout << x;
    cout << endl;
    cin.get();
    return 0;
}

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

#include <iostream>
#include <cmath>
#include <cstdlib>

using namespace std;
int main()

{
    double x;

    double baza=3;
    x = pow(baza, 3);
    cout << x;
    cout << endl;
    cin.get();
    return 0;
}

hvala

nego zasto rand stalno daje broj 41?

MOARR
E-mail:
Lozinka:
 
vrh stranice