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

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

Mozete li mi reci u cemu je problem izbacuje mi error za ovu liniju koda int matrica[M][N]

Statičko polje mora imati konstantu (konkretnu brojčanu vrijednost) kao veličinu a ne varijablu. To što ti želiš se rješava dinamičkom alokacijom. Npr.:

 

int **matrica;

matrica = new int*[M]; //polje pokazivača
for(int i=0; i< M; i++)
    matrica[i] = new int[N];

tek sada možeš to koristiti u obliku matrica[i][j]. S time da ovo na kraju trebaš i dealocirati:

 

for(int i=0; i< M; ++i)
    delete[] matrica[i]; //dealociraj svaki pojedini redak matrice
delete[] matrica; // dealociraj polje pokazivača na retke

 

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Poruka je uređivana zadnji put sri 8.1.2014 21:37 (TracerCPP).
12 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
eagle05 kaže...

Determinantu matrice 5x5 sam izracunao na tezi nacin, tj. La Place-ovom transformacijom. Ali sad mi je problem kako naci inverznu matricu od ove.

Znam da je formula A-1=1/detA * adjug. A

Ali problem je sto je u mene matrica 5x5, pa kad bih isao istim putem kao i sto sam determinantu racunao za svaki kofaktor racunao matricu 4x4, imao bih 25 takvih kofaktora odnosno 25 * 4x4 matrice, a to nije malo za napisati i sigurno bi se nasla neka greska u kodu koju bi bilo teze naci nego napisati sve ispocetka.

Sve sto nadjem na netu je radjeno rekurzivnom funkcijom, a ja to nisam radio tako da to nikako ne razumijem i ne mogu tako uraditi zadatak.

Mene zanima da li se moze na neki jednostavniji nacin uraditi sa nekim for petljama bez  neceg sto znaju iskusniji programeri, ja sam ipak pocetnik i ne razumijem jos sve.

Bio bih vam zahvalan na pomoci, ako bi neko objasnio kako napisati taj dio koda za izracun adjugovane matrice ili da napise taj dio koda, jer ostatak znam uraditi.

Dalo bi se i bez rekurzije, ali mislim da je puno jednostavnije shvatit rekurziju, negoli petljat bez nje. Ili pogledaj LU faktorizaciju i/ili kako je radjeno u gotovom libraryju.
Kazes da si pocetnik, ako je skolski zadatak, cini mi se malo tesko za pocetnika. Ako je nesto sto ti treba u praksi, onda je bolje ili koristit gotov library, ili ne racunat inverz uopce jer je rijetko kad to potrebno.

 

 

srky.du kaže...

Mislim da ti je najlakše napravit trokutastu matricu i onda pomnožit elemente na glavnoj dijagonali.

 

P.S. pogledaj svojstvo 6

Matrica ili je trokutasta ili nije, ne mozes ju napravit trokutastom.

 

17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
CyberK kaže...
Matrica ili je trokutasta ili nije, ne mozes ju napravit trokutastom.

Ma jel, otkad to? Pogledaj kako su ovdje izracunali determinantu 4x4 matrice (primjer prije Exercise 1). Ili kako je ovdje lik izracunao determinantu.

Elementarnim transformacijama moguce je matricu svesti na gornju/donju trokutastu. Kako bi inace izracunao determinantu npr., matrice reda n? Sumnjam da bi Laplaceov razvoj u beskonacnost?

Govorimo o kvadratnim matricama, ofc.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
Poruka je uređivana zadnji put čet 9.1.2014 0:50 (1domagoj1).
12 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
CyberK kaže...
Matrica ili je trokutasta ili nije, ne mozes ju napravit trokutastom.

Ma jel, otkad to? Pogledaj kako su ovdje izracunali determinantu 4x4 matrice (primjer prije Exercise 1). Ili kako je ovdje lik izracunao determinantu.

Elementarnim transformacijama moguce je matricu svesti na gornju/donju trokutastu. Kako bi inace izracunao determinantu npr., matrice reda n? Sumnjam da bi Laplaceov razvoj u beskonacnost?

Govorimo o kvadratnim matricama, ofc.

LU dekompozicija je produkt dvije trokutaste matrice, a ne jedna trokutasta, i spomenuo sam LU u svom postu. Plus, nije svaku invertibilnu matricu moguce faktorizirat na gornju/donju, a kamoli samo na trokutastu:
http://en.wikipedia.org/wiki/Triangular_matrix
By the LU decomposition algorithm, an invertible matrix may be written as the product of a lower triangular matrix L by an upper triangular matrix U if and only if all its leading principal minors are non-zero.

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

Uradio sam jedan po jedan minor za inverznu matricu, ali je sad potrebno da te vrijednosti minora ubacim u matricu, kako to da uradim pomocu for petlji(matrica je 5x5, tj. imam 25 minora)

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

Pozdrav , moze li mi netko reci sto se tocne radi u c++ , mislim programi ili sta ? Hvala

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

Uradio sam jedan po jedan minor za inverznu matricu, ali je sad potrebno da te vrijednosti minora ubacim u matricu, kako to da uradim pomocu for petlji(matrica je 5x5, tj. imam 25 minora)

Itko?

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

Pozdrav , moze li mi netko reci sto se tocne radi u c++ , mislim programi ili sta ? Hvala

Piše se programski kôd za računalne programe. Taj kôd zatim kompajler prevede u strojni kôd kakav tvoj procesor razumije i nastane ti .exe programska datoteka koju možeš pokrenuti.

 

Također ti je važno i znati da C++ nije program (iako postoje programi koji imaju "C++" u svom imenu), nego je programski jezik (znači skup nekih ključnih riječi i sintaktičkih pravila za programski kod). Isto kao što hrvatski jezik nije program, čovjek, ili neka knjiga, nego je skup pravila i riječi kojima neka osoba može reći ili napisati svoje misli.

To understand what recursion is, you must first understand recursion.
16 godina
offline
Programiranje u C++-u - pitanja i odgovori

Imam jedno pitanjce u vezi ovog zadatka, kako da napravim da se (nakon sto se unesu brojevi i ispise odgovarajuca matrica) program ugasi a ne da opet pita unos tih brojeva kao sto meni sada radi. Pretpostavljam da je treba nesto sa do-while petljom izmjeniti. Hvala.

 

/*ZADATAK: Napišite program koji od korisnika traži ucitavanje tri prirodna broja, m,

n i x, za koja mora vrijediti 2 < m < 10 i 2 < n < 10. Ako korisnik unese

broj koji nije iz intervala, prekida se izvo?enje programa, a ako je upisao dobre

brojeve ekranu se treba ispisati matrica s m redaka i n stupaca ciji su elementi

brojevi koji pocinju od broja x i povecavaju se za 1.

 

Test podaci: m = 5, n = 3, x = 10

10 11 12

13 14 15

16 17 18

19 20 21

22 23 24

*/

#include <iomanip>

#include <iostream>

using namespace std;

int main()

{

   int x, m, n;

   do{

   cout << "Unesi prirodni broj m: ";

   cin >> m;

   cout << "Unesi prirodni broj n: ";

   cin >> n;

   cout << "Unesi prirodni broj x: ";

   cin >> x;

 

   for (int i=1; i<=m; i++)

   {

     for (int j=1; j<=n; j++)

     {

       cout << setw(3) << x;

       x++;

     }

     cout << endl;

   }

 

   }while(m > 2 && m < 10 && n > 2 && n < 10);

 

   //

   return 0;

}

Windows Phone FTW
Moj PC  
0 0 hvala 0
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

ljudi jel netko moze pomoc noob sam totalni...ucim c i dosao sam do djela di trebam ucitat 5 brojeva koji ce ispisat +eva koliko ima brojeva npr. 5 +++++ pa me zanima jel itko zna kako da se slozi petlja? hvala puno!!!

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

Imam jedno pitanjce u vezi ovog zadatka, kako da napravim da se (nakon sto se unesu brojevi i ispise odgovarajuca matrica) program ugasi a ne da opet pita unos tih brojeva kao sto meni sada radi. Pretpostavljam da je treba nesto sa do-while petljom izmjeniti. Hvala.

 

/*ZADATAK: Napišite program koji od korisnika traži ucitavanje tri prirodna broja, m,

n i x, za koja mora vrijediti 2 < m < 10 i 2 < n < 10. Ako korisnik unese

broj koji nije iz intervala, prekida se izvo?enje programa, a ako je upisao dobre

brojeve ekranu se treba ispisati matrica s m redaka i n stupaca ciji su elementi

brojevi koji pocinju od broja x i povecavaju se za 1.

...

Izbaci coutove i cinove iz petlje i nek ti petlja bude while, a ne do-while. Zasto while, a ne do-while? Ako korisnik unese brojeve iz krivog intervala, while petlja se nece niti pokrenuti i odmah se izlazi iz programa (to i zelis), dok se do-while petlja obavezno jednom izvrsi (a to ne zelis, ako su brojevi krivi), a onda tek izlazi ako uvjet nije zadovoljen.

Dakle, nesto ovako:

// cinovi i
// coutovi idu ovdje
while ((m > 2 && m < 10) && (n > 2 && n < 10))
{
    // ovdje ide tijelo petlje
}


Pro tip: kad imas ovakve visestruke uvjete, uvijek je dobro uvjete odvojiti zagradama (kako sam ti gore napisao) jer se tako stvara dobra navika da pazis kod uvjeta, pogotovo ako su u pitanju razliciti operatori (inace imas izvor potencijalnih bugova). Npr.

while(nesto1 || nesto2 && nesto3);Koji je tu problem? Ovisi kako si zamislio te uvjete. U ovom slucaju ce se izvrsiti prvo nesto2 && nesto3 (jer operator && ima prednost nad operatorom ||), a onda ce se rezultat toga OR-ati s nesto1, znaci ovako: (nesto1 || (nesto2 && nesto3)). No, sto ako si ti ustvari htio ((nesto1 || nesto2) && nesto3)? Zato je uvijek korisno takve uvjete odvojiti zagradama.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
Poruka je uređivana zadnji put sub 11.1.2014 0:05 (1domagoj1).
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
DommY kaže...

Imam jedno pitanjce

 

LUPI BREAK NA KRAJU

#include <iomanip>

#include <iostream>

 

using namespace std;

 

int main()

 

{

  int x, m, n;

 

  do{

 

  cout << "Unesi prirodni broj m: ";

  cin >> m;

  cout << "Unesi prirodni broj n: ";

  cin >> n;

  cout << "Unesi prirodni broj x: ";

  cin >> x;

 

 

  for (int i=1; i<=m; i++)

  {

   for (int j=1; j<=n; j++)

   {

    cout << setw(3) << x;

    x++;

   }

   cout << endl;

  }

 

  //break dance 

  break;

 

  }while(m > 2 && m < 10 && n > 2 && n < 10);

 

  cout<< "\nbye...";

  return 0;

}

 

http:/https://play.google.com/store/apps/details?id=org.kde.necessitas.example.SMASHHH
Poruka je uređivana zadnji put sub 11.1.2014 0:15 (nik_02).
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Opcenito, za ovo while petlja nije potrebna, dovoljan je if s navedenim uvjetima. S breakom u do-while petlji neces niti doci do evaluacije uvjeta.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
nik_02 kaže...
rustweaver kaže...

 

Koliko znam u standardnoj biblioteci ne postoji rješenje za taj problem, pa se onda pribjegava rješenjima koji su specifični za neku platformu, npr. Sleep() je pravo rješenje za to pod windowsima. Čak i "spavanje" od malih 15 milisekundi unutar svake iteracije petlje već čini čuda za procesor.

 

Samo da se osvrnem na zeleno.

U c++11 postoji <thread> koji je platform intependant tako da sad jedan code je univerzalan i za linux i windows (naravno ako se koristi kompajler sa implementacijom navedenog -> gcc 481 ima implementaiju za razliku od gcc 471 koji je bandlan na predzadnjoj inačici code-blocks-a).

Znači isti kod bez os specifkuma tipa Sleep(/*x*/).

 

 

#include <iostream>
#include <thread>
#include <chrono>

using namespace std;
typedef unsigned int uint32;

#define sleep_for(milisec) this_thread::sleep_for(std::chrono::milliseconds(milisec))


int main()
{

 while(1)
 {
     /**
     * counter ide na screen svakih 100 milisekundi -> sleep_for(100)<-
     **/
     static uint32 counter = 0;
     cout<< "counter" << counter << endl;

     /**
     * neki code koji se izvršava s pauzom
     * od sleep_for( x ) milisekundi
     * ...
     **/

     sleep_for(100);
 }




 return 0;

}

ovo je tocno ali ovo sa define je ocaj, jedna od boljih stvari kod chrono je sto su sekunde milisekunde ... nanosekunde tipovi, pa ne moras gledati jel ti sleep uzima milisec sec ili stoljeca :)

aka radit ce ti std::this_thread::sleep_for(std::chrono::seconds(5)) i std::this_thread::sleep_for(std::chrono::milliseconds(1234)

   

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

Trebao bi nastavak rjesenja ovog programa, rjesio sam samo prvu recenicu, hvala.

 

Napišite program koji ce tražiti od korisnika unos realnih brojeva sve dok se ne ueita negativan broj.

Program provjerava ima li niz svojstvo da su mu svi elementi iz segmenta [1,100]. Ispisuje se ima li niz svojstvo ili ne.

 

#include <iostream>

using namespace std;

int main()

{

   int broj;

   do{

   cout << "Unesite realni broj: ";

   cin >> broj;

   }while(broj>=0);

}

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

Trebao bi nastavak rjesenja ovog programa, rjesio sam samo prvu recenicu, hvala.

 

Napišite program koji ce tražiti od korisnika unos realnih brojeva sve dok se ne ueita negativan broj.

Program provjerava ima li niz svojstvo da su mu svi elementi iz segmenta [1,100]. Ispisuje se ima li niz svojstvo ili ne.

...

Za ovo moras koristiti polja. Ovako kako sada radis; trazis unos broja, korisnik unese broj, onda opet trazis unos i kad korisnik ponovno unese, prepisat ces stari broj s novim brojem jer ih svaki put spremas u istu varijablu. Kaze ti zadatak "Program provjerava ima li niz svojstvo", znaci trebas zapamtiti sve brojeve (niz) koje je korisnik unio, a za to su ti potrebna polja.

EDIT: Eh da, kaze zadatak "unos realnih brojeva", dakle spremas realne brojeve (double brojevi[]), a ne cijele brojeve (int brojevi[]). Ali mozda ipak bolje da prvo rijesis sa cijelim brojevima jer je u neku ruku lakse, ako nista drugo za shvatiti, onda tek s realnim.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
Poruka je uređivana zadnji put sub 11.1.2014 16:44 (1domagoj1).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
DommY kaže...

Trebao bi nastavak rjesenja ovog programa, rjesio sam samo prvu recenicu, hvala.

Kao što je domagoj napisao, trebaju ti polja (odnosno samo jedno polje :P). Ne znam jeste li to već obradili i kako ste to pažljivo obradili. Na linku imaš uvod koji će te uvesti u polja ili te prisjetiti ako si nešto zaboravio.

To understand what recursion is, you must first understand recursion.
13 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
DommY kaže...

Trebao bi nastavak rjesenja ovog programa, rjesio sam samo prvu recenicu, hvala.

 

Napišite program koji ce tražiti od korisnika unos realnih brojeva sve dok se ne ueita negativan broj.

Program provjerava ima li niz svojstvo da su mu svi elementi iz segmenta [1,100]. Ispisuje se ima li niz svojstvo ili ne.

 

#include <iostream>

using namespace std;

int main()

{

   int broj;

   do{

   cout << "Unesite realni broj: ";

   cin >> broj;

   }while(broj>=0);

}

Ovo sto si ti napravio nema veze sa realnim brojevima. Napravio si do/while petlju koja ce unositi cijele brojeve ne realne, a veci su ili jednaki od 0. http://hr.wikipedia.org/wiki/Realni_broj

Ono sto trazis je niz a to se rijesava pomocu polja, program ti mora zapamtiti niz brojeva, a ne unositi jedan po jedan broj, brojevi se moraju negdje spremiti a najbolje je da napravis polje(niz) u koje ces unositi brojeve dok korisnik neunese negativan broj. Tada program provjeri da li je niz brojeva koji je korisnik unio u segmentu izmedju [1,100].

 

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

Evo mojeg rješenja, bez upotrebe STL-a bi se trebalo ići na više C-ovsku soluciju koja uključuje malloc(), ali i realloc() ukoliko niz naraste preko svoje prvobitne veličine.

Koliko znam, sa new i delete operatorima se ne može imitirati realloc().

Uglavnom, više je posla bez STL-a.

 

    #include <iostream>
    #include <vector>
     
    using namespace std;
     
    int main()
    {
         double num;
         vector<double> numArray;
         // vanjskom petljom se osiguravamo da korisnik unese barem jedan broj
         do
         {
             cout << "Unosite brojeve:\n";
             while (true)
             {
                 cin >> num;
                 if (num >= 0.0)
                     numArray.push_back(num);
                 else
                     break;
             }
         }
         while(!numArray.size());
         for(vector<double>::iterator it = numArray.begin(); it != numArray.end(); ++it)
         {
             if(*it < 1.0 || *it > 100.0)
             {
                 cout << "Svi elementi niza nisu u intervalu[1, 100].\n";
                 return 0;
             }
         }
         cout << "Svi elementi niza su u intervalu [1, 100].\n";
    }
0100011001000001010100000010000000110100001000000100110001001001010001100100010100100001
Poruka je uređivana zadnji put sub 11.1.2014 17:34 (pr0n_addict).
Moj PC  
1 0 hvala 0
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
DommY kaže...

Trebao bi nastavak rjesenja ovog programa, rjesio sam samo prvu recenicu, hvala.

 

Napišite program koji ce tražiti od korisnika unos realnih brojeva sve dok se ne ueita negativan broj.

Program provjerava ima li niz svojstvo da su mu svi elementi iz segmenta [1,100]. Ispisuje se ima li niz svojstvo ili ne.

...

Za ovo moras koristiti polja. Ovako kako sada radis; trazis unos broja, korisnik unese broj, onda opet trazis unos i kad korisnik ponovno unese, prepisat ces stari broj s novim brojem jer ih svaki put spremas u istu varijablu. Kaze ti zadatak "Program provjerava ima li niz svojstvo", znaci trebas zapamtiti sve brojeve (niz) koje je korisnik unio, a za to su ti potrebna polja.

EDIT: Eh da, kaze zadatak "unos realnih brojeva", dakle spremas realne brojeve (double brojevi[]), a ne cijele brojeve (int brojevi[]). Ali mozda ipak bolje da prvo rijesis sa cijelim brojevima jer je u neku ruku lakse, ako nista drugo za shvatiti, onda tek s realnim.

Aha, evo nekih sitnih izmjena u vezi polja..al ne znam kako ucitati podatke u polje, baca error kod cin >> broj[];
Nisam siguran kako se to pise.. 

 

#include <iostream>

 

using namespace std;

 

int main()

{

   int broj[15];

   do{

   cout << "Unesite realni broj: ";

   cin >> broj[]; //error

   }while(broj>=0);

 

}

Windows Phone FTW
Poruka je uređivana zadnji put sub 11.1.2014 17:30 (DommY).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
DommY kaže...

Aha, evo nekih sitnih izmjena u vezi polja..al ne znam kako ucitati podatke u polje, baca error kod cin >> broj[];
Nisam siguran kako se to pise.. 

Pogledaj link iz mog posta gore. Nakon što pročitaš sve pitaj ovdje ako ti nešto još uvijek nije jasno.

To understand what recursion is, you must first understand recursion.
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Treba ti indeks kojim ces reci racunalu "zelim da upises broj u tu i tu kucicu u polju".

 

Dakle ovako nesto:

int i = 0;
do {
    cout << "Unesite realni broj: ";
    cin >> broj[i];
    ++i;
} while(broj >= 0);


S tim da pazi, ovim kodom unosis brojeve dok god ne uneses negativni, ali u ovo svoje polje mozes unijeti maksimalno 15 brojeva. Ova petlja te nece sprijeciti da uneses i 16. broj, a ako ga uneses program ce ti se najvjerojatnije srusiti jer pokusavas unositi broj van granica svojeg polja (a OS ti to nece dozvoliti jer to nije tvoja memorija, dao ti je 15 "kucica" i samo njih smijes koristiti). Ako zelis ograniciti unos na 15 brojeva, dodas jos jedan uvjet u ovu while petlju:

while(broj >= 0 && i < 15)Imaj na umu da se polja indeksiraju od nule, a ne od jedan kako najcesce ljudi pretpostave kad se prvi put susrecu s poljima. Dakle broj[0] je ustvari prva kucica, broj[1] je druga, itd. sve do broj[14] koja je zadnja, 15. kucica.

 

Pro tip: ako ti je unaprijed poznat broj ponavljanja petlje (recimo ovdje znas da mozes unijeti max. 15 brojeva) onda koristi for petlju. Ako ti nije poznat broj ponavljanja, vec on ovisi o nekim drugim uvjetima, onda koristi while petlju.

Pro tip2: pogledaj link koji je stavio rustweaver, prakticki sve razjasnjava.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
Poruka je uređivana zadnji put sub 11.1.2014 17:44 (1domagoj1).
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

U biti sad sam skužio da za uspješno rješavanje ovog zadatka ipak nije nužno koristiti polje.

 

#include <iostream>

using namespace std;

int main()
{
    int broj;
    bool uIntervalu = true;
   
    do
    {
        cout << "Unesite realni broj: ";
        cin >> broj;
       
        if (broj == 0 || broj > 100)
            uIntervalu = false;
    }while(broj>=0);

    if (uIntervalu == true)
        cout << "Uneseni niz je u trazenom intervalu\n";
    else
        cout << "Uneseni niz nije u trazenom intervalu\n";

    return 0;
}

 

I dalje sa cijelim brojevima zato što se uvjet manje komplicira, sa realnim brojevima bi uvjet izgledao ovako:

 

if ((broj >= 0 && broj < 1) || broj > 100)

 

To understand what recursion is, you must first understand recursion.
 
3 0 hvala 0
13 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...

U biti sad sam skužio da za uspješno rješavanje ovog zadatka ipak nije nužno koristiti polje.

 

#include <iostream>

using namespace std;

int main()
{
    int broj;
    bool uIntervalu = true;
   
    do
    {
        cout << "Unesite realni broj: ";
        cin >> broj;
       
        if (broj == 0 || broj > 100)
            uIntervalu = false;
    }while(broj>=0);

    if (uIntervalu == true)
        cout << "Uneseni niz je u trazenom intervalu\n";
    else
        cout << "Uneseni niz nije u trazenom intervalu\n";

    return 0;
}

 

I dalje sa cijelim brojevima zato što se uvjet manje komplicira, sa realnim brojevima bi uvjet izgledao ovako:

 

if ((broj >= 0 && broj < 1) || broj > 100)

 

krivo..

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

krivo..

objasni :P

To understand what recursion is, you must first understand recursion.
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Dobar ulov, nisam se uopce sjetio zastavice.

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

Dobar ulov, nisam se uopce sjetio zastavice.

Ma stvar je u tome da kada u zadatku vidiš da se spominje upisivanje niza brojeva polje ti po defaultu padne na pamet. Ali ponekad stvarno nije potrebno sačuvati sve te brojeve i onda ponovno prolaziti kroz njih.

 

Naravno to ja sad samo glumim pametnjakovića, šansa jest da je ovaj zadatak baš zadan sa poljima na umu i da je to ono što profesor želi vidjeti, a ne nekakva rješenja koja zaobilaze korištenje polja. Ovo mi je palo na pamet kad sam vidio što je pr0n_addict napisao, jer na prvi mah uopće nisam obraćao pažnju da duljina polja (odnosno količina upisanih brojeva) nije definirana u zadatku.

 

Možeš naravno hardkodirati nekakvo polja od 100 elemenata sa pretpostavkom da nitko normalan neće ići upisivati 100 i više brojeva, ali strogo gledano to ne bi bilo točno rješenje. Realloc također ne izgleda previše primamljivo i ne volim ga koristiti, što te onda ostavlja ili sa vektorima (poželjno) ili nekakvim hibridnim kompliciranim rješenjima sa listama (čija bi implementacija nekoliko puta nadmašila veličinu samog zadatka).

To understand what recursion is, you must first understand recursion.
Poruka je uređivana zadnji put sub 11.1.2014 18:16 (rustweaver).
13 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
Luka123 kaže...

krivo..

objasni :P

Program provjerava ima li niz svojstvo da su mu svi elementi iz segmenta [1,100]. Ispisuje se ima li niz svojstvo ili ne.

Ocito se trazi niz beskonacnih brojeva koji su veci od 0 dok se neupise negativan broj i onda se stane sa upisivanjem niza i onda se provjerava jesu li svi uneseni brojevi u zadanom segmentu.

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

Program provjerava ima li niz svojstvo da su mu svi elementi iz segmenta [1,100]. Ispisuje se ima li niz svojstvo ili ne.

Ocito se trazi niz beskonacnih brojeva koji su veci od 0 dok se neupise negativan broj i onda se stane sa upisivanjem niza i onda se provjerava jesu li svi uneseni brojevi u zadanom segmentu.

Pa jel moj program provjerava svaki broj iz beskonačnog niza brojeva? :D

 

Jasno ti je valjda da polja nisu beskonačna, i da rastezanje polja sa realloc vjerojatno nije u opsegu ovog zadatka. Pročitati post iznad, kao i post koji je pr0n_addict napisao da bi shvatio zašto ovakav pristup problemu s moje strane. Nisam ni rekao da je to točno rješenje, ali daje točan krajnji rezultat

To understand what recursion is, you must first understand recursion.
Poruka je uređivana zadnji put sub 11.1.2014 18:30 (rustweaver).
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
...

Možeš naravno hardkodirati nekakvo polja od 100 elemenata sa pretpostavkom da nitko normalan neće ići upisivati 100 i više brojeva, ali strogo gledano to ne bi bilo točno rješenje. Realloc također ne izgleda previše primamljivo i ne volim ga koristiti, što te onda ostavlja ili sa vektorima (poželjno) ili nekakvim hibridnim kompliciranim rješenjima sa listama (čija bi implementacija nekoliko puta nadmašila veličinu samog zadatka).

Realloc, a s njim i calloc i malloc izgledaju primamljivo jedino u C-u, nikako u C++-u. :D

Ako nije u pitanju legacy kod, u C++-u nikad ta trojka.

Perhaps today IS a good day to die. PREPARE FOR RAMMING SPEED!
E-mail:
Lozinka:
 
vrh stranice