Prikazujem rezultate 1 do 24 od 24

Tema: c++ - trebam pomoc

  1. #1

    c++ - trebam pomoc

    ovako je zadano..

    za brojeve 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15...itd., ako upisem 15 na izlazu treba da daje 2 , ako upisem 20, na izlazu treba da daje 1...

    kuzi li neko kako to odraditi... dajte ista.. XD
    c:\>freedom
    Bad command or file name
    c:\>self
    Bad command or file name
    c:\>individuality
    Bad command or file name
    c:\>
    Bad command or file name
    c:\>control

    the system controls everything...

    the system controls you...

  2. #2
    Senior Member Lord of The Fleas
    Datum registracije
    Jan 2007
    Lokacija
    /dev /null
    Postova
    412

    Re: c++ - trebam pomoc

    De napiši cijeli zadatak, jer iz ovoga ne možeš doći do algoritma.

  3. #3

    Re: c++ - trebam pomoc

    = Citat = Izvorno postao DragonSoul
    De napiši cijeli zadatak, jer iz ovoga ne možeš doći do algoritma.
    heh, rado bih ti ga napisao cijelog, ali ovako mi ga prof. zadao.. xD... ne znam sta da ti jos kazem tu.... imas ikakvu ideju?
    c:\>freedom
    Bad command or file name
    c:\>self
    Bad command or file name
    c:\>individuality
    Bad command or file name
    c:\>
    Bad command or file name
    c:\>control

    the system controls everything...

    the system controls you...

  4. #4
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: c++ - trebam pomoc

    Nema nekog smisla zadatak, ili si krivo prepisao... jedina "pravilnost" je da su u 15 dvije znamenke veće od 0, pa zato daje 2, a u 20 samo jedna. A to sigurno nije ono što se traži
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  5. #5
    Senior Member Lord of The Fleas
    Datum registracije
    Jan 2007
    Lokacija
    /dev /null
    Postova
    412

    Re: c++ - trebam pomoc

    = Citat = Izvorno postao crash_override
    = Citat = Izvorno postao DragonSoul
    De napiši cijeli zadatak, jer iz ovoga ne možeš doći do algoritma.
    heh, rado bih ti ga napisao cijelog, ali ovako mi ga prof. zadao.. xD... ne znam sta da ti jos kazem tu.... imas ikakvu ideju?
    Onda ćete svi dobiti 1 O_o

  6. #6

    Re: c++ - trebam pomoc

    Zadatak je naravno da se gleda po znamenkama.

    Drugim riječima:
    Niz
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    treba gledati kao
    1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5

    Tada je 15-ti član niza 2, a 20-ti član ovog niza je 5 itd.

  7. #7

    Re: c++ - trebam pomoc

    Evo da ga sad malo detaljnije postavim...

    Znaci... ispisati program koji ispisuje broj zeljene pozicije sa niza 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15...

    Upisem 3, na izlazu daje 3, jer je to treca pozicija.... upisem 9, davat ce ovamo 9.... al' sad kod dvocifrenih npr. ako upisem 13, na izlazu treba da bude 1.... ako upisem 17, na izlazu treba biti 3... itd..

    znaci niz 1 2 3 4 5 6 7 8 9....1 0......1 1.......1 2.......1 3........1 4.......1 5
    ________1 2 3 4 5 6 7 8 9...10 11...12 13...14 15....16 17.....18 19......20 21


    a ovi ispod brojevi su ti npr. koje upisujem da bih dobio ove gore.... znaci kod ovih dvocifrenih ( nekako sam to iskombinovao tu, pa mozda kuzite na sto mislim ) vidite sad kako treba da bude... upisem 10 na izlazu treba davati 1, ako upisem 11, na izlazu treba davati 0, ako upisem 12, na izlazu treba 1... itd.

    ???
    c:\>freedom
    Bad command or file name
    c:\>self
    Bad command or file name
    c:\>individuality
    Bad command or file name
    c:\>
    Bad command or file name
    c:\>control

    the system controls everything...

    the system controls you...

  8. #8
    Senior Member Lord of The Fleas
    Datum registracije
    Jan 2007
    Lokacija
    /dev /null
    Postova
    412

    Re: c++ - trebam pomoc

    Ono što ti je netko gore već rekao (nisam sad pratio). Ugl. zadan ti je maksimalan N (broj koji se unosi). Izgeneriraš taj niz i onda vraćaš niz[n-1]. Trebat će ti ugnježdene petlje, koje će ti izgenerirate te brojeve. Znači gornja petlja će ti biti n/9 (jer imaš 9 znamenki), a druga će ići od 1 do 9. Fino tako napraviš niz, niz ti je niz[max+1]S(+1 za svaki slučaj) i vraćaš n-1. Ili, napraviš tako da korisnik prvo unese N, onda ti izgeneriraš niz do N. Ili, napraviš tako da ti je jedna varijabla onaj broj koji bi zapravo dodijelo u niz, onda ti je zadnji broj koji dodjeliš toj varijabli zapravo traženi broj. Ili možeš napraviti polje da se kružno popunjava, pa je onda zadnje popunjeno polje traženi broj, ili... Ma imaš milijun načina, napravi onak kak ti je najbrže, najlakše i najoptimalnije.. ili tak da dobiješ 5 kad prof vidi kakvo si remek dijelo napravio.

  9. #9
    Senior Member Lord of The Fleas
    Datum registracije
    Jan 2007
    Lokacija
    /dev /null
    Postova
    412

    Re: c++ - trebam pomoc

    Eh, šteta što ne radi taj edit nakon 15 min. Ugl, nakon ponovnog čitanja zadatka zaključih da ne valjaju moji umni izljevi. Ja sam mislio da ide niz 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9..., ali ne ide. Možda da se riješi s % i /, tako da se odredi znamenka pa doda u niz. Al ono, ima pametnije riješenje. Luka?

  10. #10
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: c++ - trebam pomoc

    Ovako nešto, nisam provjerio ali trebalo bi raditi. Nije ni efikasno, ali nigdje ne piše da treba biti

    int upisani_broj;
    cin >> upisani_broj;
    stringstream polje; // iz <sstream> zaglavlja
    int trenutni = 1;
    while (polje.str().size() < upisani_broj) polje << (trenutni++);
    cout << polje.str()[upisani_broj - 1];
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  11. #11

    Re: c++ - trebam pomoc

    Code:
    #include <iostream.h>
    
    int main()
    {
    	int i, n = 25;
    	char pom[5], niz[200]S= "";
    
    	for(i = 1; i <= n; i++){
    		cout << i << " ";
    		itoa(i, pom, 10);
    		strcat(niz, pom);
    	}
    	cout << "\n";
    	for(i = 0; i < n; i++){
    		if(i >= 10) cout << " ";
    		cout << niz[i]S<< " ";
    	}
    	return 0;
    }
    Evo, i sad si samo modificiraj da ti ispisuje za određenu poziciju. To ti ne bi trebao biti problem.
    AMD Athlon 64, 6000+ X2
    4 GB Ram 800 MHZ
    8800 GT, 1GB

    http://www.programiranje.big-forum.net

  12. #12

    Re: c++ - trebam pomoc

    Ja bih to riješio ovako... Ovo rješenje radi i za velike brojeve, ne troši memoriju, i brzo je.

    Prvo primijetimo da možemo niz podijeliti u grupe jednoznamenkastih, dvoznamenkastih, troznamenkastih, itd. brojeva.
    1 .. 9 -> 9 brojeva, ukupno 9 znamenaka
    10 .. 99 -> 90 brojeva, ukupno 180 znamenaka
    100 .. 999 -> 900 brojeva, ukupno 2700 znamenaka
    1000 .. 9999 -> 9000 brojeva, ukupno 36000 znamenaka
    itd.

    Ideja je da za traženi n nađemo u koju grupu pada. Onda nađemo točan višeznamenkasti broj iz te grupe u koji nam pada traženi n, te na kraju izvučemo iz tog broja traženu znamenku.

    Npr. potražimo 560-tu znamenku iz niza.
    Lako se vidi da se 560 znamenka nalazi u grupi troznamenkastih brojeva.
    560 - 10 - 180 = 370 -> 560 znamenka je 370Sznamenka u nizu troznamenkastih brojeva.

    Treba primijetiti da znamenke u grupi brojimo od 0 !!

    Sada nađemo troznamenkasti broj u kojem se nalazi tražena znamenka:
    370S/ 3 = 123 (cjelobrojno dijeljenje!)
    Kako je prvi broj u grupi troznamenkastih 100 onda je konačan troznamenkasti broj u kojem se nalazi tražena znamenka:
    100 + 123 = 223
    Znamenka se nađe pomoću ostatka:
    370S% 3 = 1
    (ostatak 0 nam ukazuje na prvu znamenku s lijeva, 1 na drugu s lijeva, itd...)

    Znači tražena znamenka je 223.

    Ok. Evo i programa:
    Code:
    int f( int n ) {
    
    	//otpilimo "pametnjakoviće" koji nam pokušavaju srušiti program
    	//testirajući ga s nulom ili s negativnim brojem ;)
    
    	if( n < 1 ) {
    		return -1 ;
    	}
    
    	//riješimo trivijalan slučaj
    
    	if( n < 10 ) {
    		return n ;
    	}
    
    	//od sad pa na dalje, n će biti nula baziran index znamenke od
    	//početka svake grupe
    
    	n -= 10 ;
    
    	int grupa = 2 ; //krećemo s grupom dvoznamenkastih brojeva
    	int prvi_broj_u_grupi = 10 ; //prvi broj u grupi dvoznam. brojeva je 10
    	int br_brojeva_u_grupi = 90 ; //10 .. 99 -> ima točno 90 dvoznam. brojeva u grupi
    	int br_znamenaka_u_grupi = grupa * br_brojeva_u_grupi ; //ukupno 180 znamenaka u grupi
    
    	int konacni_broj, index_znamenke_u_konacnom_broju, trazena_znamenka ;
    
    	//nađimo grupu u kojoj se nalazi tražena znamenka i adekvatno postavimo n
    
    	while( n >= br_znamenaka_u_grupi ) {
    
    		n -= br_znamenaka_u_grupi ;
    
    		grupa ++ ;
    		prvi_broj_u_grupi *= 10 ; //grupe počinju s 10, 100, 1000, ...
    		br_brojeva_u_grupi *= 10 ; //brojeva u grupama ima 90, 900, 9000, ...
    		br_znamenaka_u_grupi = grupa * br_brojeva_u_grupi ;
    	}
    
    	//nađimo grupa-znamenkasti broj u kojem se onda nalazi tražena znamenka
    
    	konacni_broj = prvi_broj_u_grupi + n / grupa ; //"n / grupa" je cjelobrojno dijeljenje !!
    
    	//nađimo index znamenke unutar tog grupa-znamenkastog broja
    
    	index_znamenke_u_konacnom_broju = n % grupa ; //0 -> prva znamenka s lijeva, 1 -> druga s lijeva itd.
    
    	//izvucimo traženu znamenku iz broja
    
    	trazena_znamenka = konacni_broj / pow( 10, grupa - 1 - index_znamenke_u_konacnom_broju ) ;
    	trazena_znamenka %= 10 ;
    
    	return trazena_znamenka ;
    }

  13. #13
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: c++ - trebam pomoc

    Efikasno i elegantno, bravo
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  14. #14

    Re: c++ - trebam pomoc

    Ja takoder imam problem sa zadatkom u C++. Moglo bi se reci da sam jos uvijek pocetnik. Naime, radim program koji bi nam prikazivao cijene pojedinih artikala u trgovini. Imamo ovako: u trgovini postoje 3 vrste proizvoda - prehrambeni, tehnicki i igracke. I sada, korisnik bi trebao stisnuti odredeni broj da bi dosao u odredenu grupu proizvoda (npr. stisnemo "1" i ulazimo u dio s prehrambenim proizvodima). Tamo mozemo birati izmedu nekoliko proizvoda, npr. stisnemo "21" i prikaze nam se cijene "brasna". Ja sam poceo nesto ali sam zapeo.

    Code:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        int i;
        int broj;
        cout<<"Dobrodosli u ponudu nase trgovine!" <<endl;
        cout<<"Za Vas nudimo izbor najpovoljnije robe na trziztu." <<endl;
        cout<<"Kako bi dosli do zeljenog proizvoda, slijedite ove upute:" <<endl;
        cout<<"          -za PREHRAMBENE proizvode stisnite 1" <<endl;
        cout<<"          -za TEHNICKE proizvode stisnite 2" <<endl;
        cout<<"          -za IGRACKE stisnite 3" <<endl;
            cin>>broj;
            if (broj=1)
            cout<<"Izaberite zeljeni proizvod:";
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    Ja hocu uci u "prehrambene proizvode" i za to mi je potrebna tipka "1" ali on ulazi i kad stisnem bilo koji drugi broj. Nadam se da ste me shvatili. Molio bih za pomoc. Hvala.

  15. #15
    Senior Member Lord of The Fleas
    Datum registracije
    Aug 2007
    Postova
    494

    Re: c++ - trebam pomoc

    probaj sa

    if(broj==1)
    {
    cout<<"izaberite željeni proizvod";
    }

    nikad neznaš, može bit...ja sam imao tone bugova sa takvim stvarima u nekoliko prog.jezika

  16. #16
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: c++ - trebam pomoc

    hehe, tipična početnička

    operator "=" je pridruživanje vrijednosti, npr. "a = 5" će pridružiti broj 5 varijabli a; (ne moraš znati zasad, ali ako te zanima: rezultat izraza pridruživanja je vrijednost koja je pridružena, u ovom slučaju 5; ona se svodi na bool po pravilu vrijednost != 0)

    operator "==" je provjera jednakosti, npr. 5 == 5 će dati true, a 5 == 4 će dati false

    dakle, samo zamijeni u if-u = sa ==
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  17. #17

    Re: c++ - trebam pomoc

    Hvala
    Sad imam drugi problem. Kako napraviti da mogu odmah uci u drugi dio, u tehnicke proizvode. Kada pritisnem 2 onda se nista ne dogada nego moram najprije unijeti 1 za ulazak u prehrambene proizvode i onda tamo moram odabrati proizvod npr. 11 je za mlijeko. Tek nakon toga mogu uci u tehnicke proizvode. Kako da napravim da bi mogao odmah u tehnicke? Nadam se da kuzite pitanje

  18. #18
    Senior Member My way or the highway
    Datum registracije
    Dec 2006
    Lokacija
    Behind the blue eyes
    Postova
    7.757

    Re: c++ - trebam pomoc

    = Citat = Izvorno postao AresCro
    Hvala
    Sad imam drugi problem. Kako napraviti da mogu odmah uci u drugi dio, u tehnicke proizvode. Kada pritisnem 2 onda se nista ne dogada nego moram najprije unijeti 1 za ulazak u prehrambene proizvode i onda tamo moram odabrati proizvod npr. 11 je za mlijeko. Tek nakon toga mogu uci u tehnicke proizvode. Kako da napravim da bi mogao odmah u tehnicke? Nadam se da kuzite pitanje

    Da bi riješili taj problem moraš nam dati cijeli source code.

  19. #19
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: c++ - trebam pomoc

    Pretpostavljam da si ovako nešto napravio:
    Code:
    if (n == 1)
    {
     if (n == 2)
     {
     }
    }
    a trebao si ovako:

    Code:
    if (n == 1)
    {
    }
    if (n == 2)
    {
    }
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  20. #20

    Re: c++ - trebam pomoc

    Hvala svima na dosadasnjoj pomoci. Jos uvijek neznam u cemu je problem. Evo koda:
    Code:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        int n;
        cout<<"Dobrodosli u ponudu nase trgovine!" <<endl;
        cout<<"Za Vas nudimo izbor najpovoljnije robe na trzistu." <<endl;
        cout<<"Kako bi dosli do cijene zeljenog proizvoda, slijedite ove upute:" <<endl;
        cout<<endl;
        cout<<"          -za PREHRAMBENE proizvode stisnite 1" <<endl;
        cout<<"          -za TEHNICKE proizvode stisnite 2" <<endl;
        cout<<"          -za IGRACKE stisnite 3" <<endl;
        
        cin>>n;
        if (n==1)
        {
        cout<<"Izaberite zeljeni proizvod:"<<endl;
        cout<<endl;
        cout<<"          -za MLIJEKO stisnite 11" <<endl;
        cout<<"          -za BRASNO stisnite 12" <<endl;
        cout<<"          -za KRUH stisnite 13" <<endl;
        cout<<"          -za RIBA stisnite 14" <<endl;
        cout<<"          -za PILETINA stisnite 15" <<endl;
        cout<<"          -za CRVENO MESO stisnite 16" <<endl;
        cout<<"          -za SOK OD JABUKE stisnite 17" <<endl;
        cout<<"          -za JAGODE stisnite 18" <<endl;
        cout<<"          -za ANANAS stisnite 19" <<endl;
        }
        cin>>n;
        if (n==11)
        {
        cout<<"Mlijeko -> 5kn/l";
        }
        cout<<endl;
        if (n==12)
        {
        cout<<"Brasno -> 3kn/kg";
        }
        cout<<endl;
        if (n==13)
        {
        cout<<"Kruh -> 6kn";
        }
        cout<<endl;
        if (n==14)
        {
        cout<<"Riba -> 26kn/kg";
        }
        cout<<endl;
        if (n==15)
        {
        cout<<"Piletina -> 18kn/kg";
        }
        cout<<endl;
        if (n==16)
        {
        cout<<"Crveno meso -> 42kn/kg";
        }
        cout<<endl;
        if (n==17)
        {
        cout<<"Sok od jabuke -> 5kn/l";
        }
        cout<<endl;
        if (n==18)
        {
        cout<<"Jagode -> 6kn/kg";
        }
        cout<<endl;
        if (n==19)
        {
        cout<<"Ananas -> 18kn/kg";
        }
        cout<<endl;
    
        cin>>n;
        if (n==2)
        {
        cout<<"Izaberite zeljeni proizvod:"<<endl;
        cout<<endl;
        cout<<"          -za TELEVIZOR stisnite 21" <<endl;
        cout<<"          -za DVD PLAYER stisnite 22" <<endl;
        cout<<"          -za GLAZBENA LINIJA stisnite 23" <<endl;
        cout<<"          -za STOLNO RACUNALO stisnite 24" <<endl;
        cout<<"          -za PRINTER stisnite 25" <<endl;
        cout<<"          -za MOBITEL stisnite 26" <<endl;
        cout<<"          -za SAT stisnite 27" <<endl;
        cout<<"          -za LAPTOP stisnite 28" <<endl;
        cout<<"          -za PROJEKTOR stisnite 29" <<endl;
        }
        cin>>n;
        if (n==21)
        {
        cout<<"Televizor -> 1999,99kn";
        }
        cout<<endl;
        if (n==22)
        {
        cout<<"Dvd player -> 449,99kn";
        }
        cout<<endl;
        if (n==23)
        {
        cout<<"Glazbena linija -> 899,99kn";
        }
        cout<<endl;
        if (n==24)
        {
        cout<<"Stolno racunalo -> 3699,99kn";
        }
        cout<<endl;
        if (n==25)
        {
        cout<<"Printer -> 599,99kn";
        }
        cout<<endl;
        if (n==26)
        {
        cout<<"Mobitel -> 999,99kn";
        }
        cout<<endl;
        if (n==27)
        {
        cout<<"Sat -> 59,99kn";
        }
        cout<<endl;
        if (n==28)
        {
        cout<<"Laptop -> 5999,99kn";
        }
        cout<<endl;
        if (n==29)
        {
        cout<<"Projektor -> 7569,99kn";
        }
        cout<<endl;
        
        cin>>n;
        if (n==3)
        {
        cout<<"Izaberite zeljeni proizvod:"<<endl;
        cout<<endl;
        cout<<"          -za AUTO NA DALJINSKI stisnite 31" <<endl;
        cout<<"          -za PLISANI MEDVJEDIC stisnite 32" <<endl;
        cout<<"          -za BARBIE LUTKA stisnite 33" <<endl;
        cout<<"          -za PLASTICNI VOJNIK stisnite 34" <<endl;
        cout<<"          -za NOGOMETNA LOPTA stisnite 35" <<endl;
        cout<<"          -za SET ZA BADMINTON stisnite 36" <<endl;
        cout<<"          -za STOLNI NOGOMET stisnite 37" <<endl;
        cout<<"          -za SKATEBOARD stisnite 38" <<endl;
        cout<<"          -za PUSKA NA VODU stisnite 39" <<endl;
        }
        cin>>n;
        if (n==31)
        {
        cout<<"Auto na daljinski -> 299,99kn";
        }
        cout<<endl;
        if (n==32)
        {
        cout<<"Plisani medvjedic -> 69,99kn";
        }
        cout<<endl;
        if (n==33)
        {
        cout<<"Barbie lutka -> 139,99kn";
        }
        cout<<endl;
        if (n==34)
        {
        cout<<"Plasticni vojnik -> 250,99kn";
        }
        cout<<endl;
        if (n==35)
        {
        cout<<"Nogometna lopta -> 489,99kn";
        }
        cout<<endl;
        if (n==36)
        {
        cout<<"Set za badminton -> 75,99kn";
        }
        cout<<endl;
        if (n==37)
        {
        cout<<"Stolni nogomet -> 350,99kn";
        }
        cout<<endl;
        if (n==38)
        {
        cout<<"Skateboard -> 320,99kn";
        }
        cout<<endl;
        if (n==39)
        {
        cout<<"Puska na vodu -> 162,99kn";
        }
        cout<<endl;

  21. #21
    Senior Member Nuke me please
    Datum registracije
    Jan 2007
    Postova
    283

    Re: c++ - trebam pomoc

    ae, mislim da ti je cin >> n; viška iznad tehnickih i ovog jos dolje...


    a da ti to rijesis pomocu switcha, biti ce lakse i preglednije (valjda)?

    edit: i ovi drugi ifovi bi trebali biti u ovom velikom (1, 2 ili 3) koliko mi se cini...
    It's time to kick some ass...

  22. #22
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: c++ - trebam pomoc

    da, drugi ifovi moraju biti u velikom

    znači

    if (n == 1)
    {

    cin >> n;

    if (n == ...)
    if (n == ...)
    if (n == ...)

    }
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  23. #23

    Re: c++ - trebam pomoc

    Hvala vam decki, sad radi

  24. #24
    Moderator Fight fire with fire Deadwalker's Avatar
    Datum registracije
    Jun 2007
    Lokacija
    Varaždin
    Postova
    13.180

    Re: c++ - trebam pomoc

    Ovako, imam zadacu iz programiranja u c++. Objektno orjentirano programiranje. Ovo je program:

    Code:
    #include <iostream>
    #include <cmath>
    using namespace std;
    class cpravokutnik {
          public: char naziv[40];
          public: float x1,y1,x2,y2;
          private: float sirina, visina, pov;
          public:
                 float povrsina(){
                       sirina=x2-x1;
                       visina=y2-y1;
                       if(sirina<=0&visina<=0)
                       return pov=-1;
                       else 
                       return pov=sirina*visina;
                       };
                 void unos(){
                      cout<<"Unesite naziv pravokutnika: ";
                      cin.ignore();
                      cin.getline(naziv, 40);
                      cout<<"Unesite vrijednost koordinate x1: ";
                      cin>>x1;
                      cout<<"Unesite vrijednost koordinate y1: ";
                      cin>>y1;
                      cout<<"Unesite vrijednost koordinate x2: ";
                      cin>>x2;
                      cout<<"Unesite vrijednost koordinate y2: ";
                      cin>>y2;
                      };
                 void ispis(){
                      cout<<endl<<"Naziv trokuta: "<<naziv<<endl;
                      cout<<"Koordinata x1: "<<x1<<endl;
                      cout<<"Koordinata y1: "<<y1<<endl;
                      cout<<"Koordinata x2: "<<x2<<endl;
                      cout<<"Koordinata y2: "<<y2<<endl;
                      cout<<"Povrsina: "<<povrsina()<<endl;
                      };
          };
    class cvrijeme{
          private:
    	  clock_t vrijeme1,vrijeme2;
    	  double razlika;
          public:
    	      double pocetak(){
    		     vrijeme1=clock();
    		     return (double)vrijeme1;};
    	      double kraj(){
    	      	vrijeme2=clock();
    		    return (double)vrijeme2;};
    	     double proteklo(){
    		        razlika=vrijeme2-vrijeme1;
    		        return razlika;};
    };
    int main(){
        cpravokutnik *pravokutnici;
        cvrijeme *vrijeme;
        int bral=0;
        int brel=0;
        int iz,n,i,p,r,j;
        int sirina, visina;
        float povrsina;    
        float pom, bla;
        char trok[40], naz[40],pom1[40];
        do {
            cout<<endl;
            cout<<"0. Dinamicka alokacija polja pravokutnika i polja vremena"<<endl;
            cout<<"1. Unos podataka o pravokutnicima"<<endl;
            cout<<"2. Ispis podataka o svim unesenim pravokutnicima"<<endl;
            cout<<"3. Ispravak podataka o pravokutnicima"<<endl;
            cout<<"9. Izlaz iz programa"<<endl;
            cout<<"Vas izbor: ";
            cin>>iz;
            switch (iz){
                   case 0:
                        if (bral==0){
                                     cout<<"Unesite zeljeni broj elemenata polja: ";
                                     cin>>bral;
                                     pravokutnici=new cpravokutnik [bral];
                                     vrijeme=new cvrijeme [bral];
                                     }
                        else cout<<"Velicina polja: "<<bral;
                        break;
                   case 1:
                        if (bral==0) cout<<"Polja nisu alocirana!"<<endl;
                        else {
                             cout<<"Broj alociranih elemenata: "<<bral<<endl;
                             cout<<"Broj unesenih pravokutnika: "<<brel<<endl;
                             vrijeme[brel].pocetak();
                             pravokutnici[brel].unos();
                             vrijeme[brel].kraj();
                             brel++;
                             }
                        break;
                   case 2:
                        cout<<"Zelite li ispis: 1) samo podatke za pravokutnike, 2) svih zapisa?"<<endl;
                        cin>>n;
                        switch (n){
                               case 1:
                                    for (i=0;i<brel;i++){
                                        if ((!sirina<=0||visina<=0));
                                        else cout<<"Povrsina je: "<<povrsina<<endl;{ 
                                        pravokutnici[i].ispis();
                                        cout<<"Proteklo vrijeme: "<<vrijeme[i].proteklo()/1000<<" sekundi"<<endl;
                                        cout<<endl;
                                    }
                                    }
                                    break;
                               case 2:
                                    for (i=0;i<brel;i++){
                                        pravokutnici[i].ispis();
                                        cout<<"Proteklo vrijeme: "<<vrijeme[i].proteklo()/1000<<" sekundi"<<endl;
                                      if (sirina<=0||visina<=0)cout<<"Površina je -1!"<<endl;
                                      else cout<<"Povrsina je: "<<povrsina<<endl;
                                      cout<<endl;        
                                    }
                                    break;
                               } //switch
                               break;
                   case 3:
                        cout<<"Unesite naziv pravokutnika: ";
                        cin.ignore();
                        cin.getline(trok, 40);
                        for (j=0;j<brel;j++){
                            if (strcmp(pravokutnici[j].naziv, trok)==0) r=j;
                        }
                        pravokutnici[r].ispis();
                        cout<<"Zelite li promijeniti: 1) naziv, 2) koordinatu x1, 3) koordinatu y1, 4) koordinatu x2, 5) koordinatu y2?";
                        cin>>n;
                        switch (n){
                               case 1:
                                    cout<<"Unesite novi naziv: ";
                                    cin.ignore();
                                    cin.getline(naz, 40);
                                    strcpy(pom1,pravokutnici[r].naziv);
                                    strcpy(pravokutnici[r].naziv, naz);
                                    break;
                               case 2:
                                    cout<<"Unesite novu stranicu x1: ";
                                    cin>>bla;
                                    pom=pravokutnici[r].x1;
                                    pravokutnici[r].x1=bla;
                                    break;
                               case 3:
                                    cout<<"Unesite novu stranicu y1: ";
                                    cin>>bla;
                                    pom=pravokutnici[r].y1;
                                    pravokutnici[r].y1=bla;
                                    break;
                               case 4:
                                    cout<<"Unesite novu stranicu x2: ";
                                    cin>>bla;
                                    pom=pravokutnici[r].x2;
                                    pravokutnici[r].x2=bla;
                                    break;
                                case 5:
                                     cout<<"Unesite novu koordinatu y2: ";
                                     cin>>bla;
                                     pom=pravokutnici[r].y2;
                                     pravokutnici[r].y2=bla;
                                     break;   
                               }
                        cout<<"Novi zapis: "<<endl;
                        pravokutnici[r].ispis();
                        cout<<endl<<"Zelite li potvrditi promjenu? 1) da, 2)ne ";
                        cin>>p;
                        if (p==2) {
                                  cout<<"Potvrda nije potvrdjena, vraceni su stari podatci!"<<endl<<endl;
                                  switch (n){
                                         case 1:
                                              strcpy(pravokutnici[r].naziv, pom1);
                                              break;
                                         case 2:
                                              pravokutnici[r].x1=pom;
                                              break;
                                         case 3:
                                              pravokutnici[r].y1=pom;
                                              break;
                                         case 4:
                                              pravokutnici[r].x2=pom;
                                              break;
                                         case 5:
                                              pravokutnici[r].y2=pom;
                                              break;
                                         }
                                  pravokutnici[r].ispis();
                                  }
                        else cout<<"Promjena potvrdjena!"<<endl;
                        break;
                        } //switch
        } while (iz!=9);
        delete pravokutnici;
        delete vrijeme;
        system ("pause");
        return 0;
    }
    Problem mi je izracun povrsine. To radi ovaj potprogram koji se kasnije poziva u main-u:
    Code:
    Spublic:
                float povrsina(){
                       sirina=x2-x1;
                       visina=y2-y1;
                       if(sirina<=0&visina<=0)
                       return pov=-1;
                       else 
                       return pov=sirina*visina;
                       };
    Potprogram bi trebal ako je visina i sirina manja ili jednaka nuli izbacivati povrsinu vrijednosti -1, a ako su vrijednosti vece od nule, racunati prema formuli povrsina=visina*sirina.
    Meni konstantno baca vrijednost povrsine -1, iako su vrijednosti vece od nule prilikom unosa.

    Muci me jos ispis. Treba izgledati ovako:
    Koristiti metodu ispis() klase cpravokutnik za ispis podataka o pravokutnicima. Uz svaki pravokutnik treba ispisati i vrijeme potrebno za unos podataka (metoda proteklo() iz klase cvrijeme). Treba od korisnika zatražiti da izabere hoće li ispisivati:
    a.) samo podatke za pravokutnike (=pozitivne vrijednosti širine i visine) ili
    b.) sve unose, s tim da treba ispisati odgovarajuću poruku, ako je širina<=0 ili visina<=0
    Ja sam ga napisao ovako:
    Code:
    case 2:
                        cout<<"Zelite li ispis: 1) samo podatke za pravokutnike, 2) svih zapisa?"<<endl;
                        cin>>n;
                        switch (n){
                               case 1:
                                    for (i=0;i<brel;i++){
                                        if ((!sirina<=0||visina<=0));
                                        else cout<<"Povrsina je: "<<povrsina<<endl;{ 
                                        pravokutnici[i].ispis();
                                        cout<<"Proteklo vrijeme: "<<vrijeme[i].proteklo()/1000<<" sekundi"<<endl;
                                        cout<<endl;
                                    }
                                    }
                                    break;
                               case 2:
                                    for (i=0;i<brel;i++){
                                        pravokutnici[i].ispis();
                                        cout<<"Proteklo vrijeme: "<<vrijeme[i].proteklo()/1000<<" sekundi"<<endl;
                                      if (sirina<=0||visina<=0)cout<<"Površina je -1!"<<endl;
                                      else cout<<"Povrsina je: "<<povrsina<<endl;
                                      cout<<endl;        
                                    }
                                    break;
                               } //switch
                               break;
    Radi, ali ne kako bi trebao. U biti, nisam ni skuzio sta tocno traze s tom opcijom 1 ili 2, kada su meni prakticki iste.
    Eto, ako se nekome da gnjavit da mi s time pomogne bio bih krajnje zahvalan.
    Inace, ovako glasi cijela zadaca:

    • Potrebno je definirati klasu cpravokutnik, koja definira sljedeće članove:
    naziv – naziv pravokutnika (javni atribut, znakovni niz)
    x1,y1,x2,y2 – koordinate vrhova pravokutnika (javni atributi tipa float)
    sirina, visina – privatni atributi tipa float
    povrsina() – javna metoda tipa float, koja računa površinu pravokutnika:

    sirina = x2 - x1, visina = y2 -y1

    povrsina = sirina * visina ili
    povrsina=-1 , ako je sirina<=0 ili visina <= 0

    unos() – javna metoda za unos naziva pravokutnika i koordinata vrhova
    ispis() – javna metoda za ispis naziva pravokutnika, koordinata vrhova i površine pravokutnika
    • Za mjerenje vremena koristiti metode iz klase cvrijeme (biblioteka 'biblioteka_vrijeme.cc').

    Za 1 bod:

    Mogućnost 0. Ako su polja već alocirana, ispisati veličinu polja (broj alociranih elemenata) i vratiti se u glavni izbornik. U suprotnom upitati korisnika za broj elemenata, te dinamički alocirati oba polja (broj elemenata je jednak).

    Mogućnost 1. Ispisati podatke o broju alociranih elemenata polja pravokutnika i polja vremena, te o broju upisanih pravokutnika. Ako polja nisu alocirana, ispisati odgovarajuću poruku i vratiti se u glavni izbornik. Unijeti podatke o pravokutniku pomoću metode unos() (upita korisnika za naziv pravokutnika i koordinate vrhova x1, y1, x2, y2). Izmjeriti vrijeme unosa podataka pomoću odgovarajućeg elementa polja vremena (=isti broj indeksa u polju, kao element polja pravokutnika).

    Za 2 boda:

    Mogućnost 2. Koristiti metodu ispis() klase cpravokutnik za ispis podataka o pravokutnicima. Uz svaki pravokutnik treba ispisati i vrijeme potrebno za unos podataka (metoda proteklo() iz klase cvrijeme). Treba od korisnika zatražiti da izabere hoće li ispisivati:
    a.) samo podatke za pravokutnike (=pozitivne vrijednosti širine i visine) ili
    b.) sve unose, s tim da treba ispisati odgovarajuću poruku, ako je širina<=0 ili visina<=0

    Za 3 boda:

    Mogućnost 3. Upitati korisnika za naziv pravokutnika. Ispisati podatke o odgovarajućem pravokutniku, zajedno s vremenom potrebnim za unos podataka. Upitati korisnika želi li promijeniti naziv pravokutnika ili koordinate vrhova x1, y1, x2, y2). Ispisati podatke o pravokutniku nakon ispravka te zatražiti od korisnika da potvrdi ispravak. Ako ne potvrdi, vratiti stare podatke i vratiti se u glavni izbornik.
    Inace, prosli zadatak koji sam imao bio je jako slican ovome, pa sam sada samo modificirao prijasnji. Tako da vjerojatno ima jos zaostalih deklariranih nepotrebnih varijabli, moram ga jos sredit do kraja.
    "Death smiles at us all. All a man can do is smile back."


Slične teme

  1. SA-MP trebam pomoc :$
    By Sa-mp problem in forum Grand Theft Auto
    Odgovora: 3
    Posljednji post: 11-09-2011, 11:01
  2. cod 2 cfg problem pomoc trebam
    By Eagle12345 in forum Pomagaj brate!
    Odgovora: 8
    Posljednji post: 07-10-2008, 12:55
  3. trebam pomoc...
    By Ice-Cube in forum Software
    Odgovora: 5
    Posljednji post: 24-01-2007, 20:34

Pravila postanja

  • Ne možeš stvarati nove teme
  • Ne možeš odgovarati na postove
  • Ne možeš slati privitke
  • Ne možeš mijenjati svoje postove
  •