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

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

Preko funkcije strstr() pronalaziš string u stringu.

 

napoleon12356 kaže...

Hvala,tako nešto sam tražio. :)

 

@Zoidberg

03.08.2012 vidi ovu temu strana 102

 

ti pišeš danas

 

 

covjek je pitao koja fja, ne da mu je napises...

fja se zove strstr u Cu.

i string::find u C++u.

naravno obje vracaju vrijednost za prvi nadeni...

treba while ili loop petlja za ukupan broj.

To moze probati napisati sam, ako zapne pomoci cemo mu.

 

Išao si pametovati a da nisi vjerovatno niti minutu uložio da promisliš i provjeriš ono što sam napisao a to je :

odgovor ti je na 107 strani teme pitanja i odgovori c++. isto si pitanje postavio prije par tjedana pa sam ti samo kopirao već postojeći odgovor.

 

Znači stvar riješenu mjesec dana unazad ti betoniraš postom

 

covjek je pitao koja fja, ne da mu je napises...

fja se zove strstr u Cu.

i string::find u C++u.

naravno obje vracaju vrijednost za prvi nadeni...

treba while ili loop petlja za ukupan broj.

To moze probati napisati sam, ako zapne pomoci cemo mu.

 

Reci , kako pomoći  tebi.

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

jel moguće programirat drivere i mikrokontrolere u c++? napravio sam si 3d printer imam vremena pa si mislim sam napravit neke drivere ili slično ali koristeći (samo) c++

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

Ja sam koristio MPLAB za mikro kontrolere. Podržava C jezik.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
Moj PC  
1 0 hvala 0
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

znam iz iskustva da mnogi govore C i za C i C++.  jel onda u MPLAB-u mogu koristit C++ ili samo C?

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

znam iz iskustva da mnogi govore C i za C i C++.  jel onda u MPLAB-u mogu koristit C++ ili samo C?

Koliko ja vidim spominje se samo C, ali možda tracer zna bolje.

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
pall44 kaže...

jel moguće programirat drivere i mikrokontrolere u c++? napravio sam si 3d printer imam vremena pa si mislim sam napravit neke drivere ili slično ali koristeći (samo) c++

 

Moguće je.

Atmel AVR da, ARM Cortex-M3, Cortex-M4 i Cortex-M0 također da.

Podržani su u GCC, IAR i Keil compilerima.

 

Microchipovi PIC-evi mislim da nisu podržani.

Također mislim da niti za 8051/8052 nema C++ compilera.

Za Freescale HCS08 nisam siguran.

 

No, jedno upozorenje unaprijed - svi 8-bitni i većina ovih iz Cortex-M0 obitelji imaju toliko malo RAM i flash memorije da je čak korištenje printf i sličnih funkcija u C-u praktično nemoguće, nego obično moraš sam smisliti kako odraditi takve stvari uz što manju potrošnju resursa.

 

Pa ako misliš raditi nešto na 8-bitnim AVR-ovima, 16F PIC-evima i sličnome, odradi to u C-u.

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

Pozz, totalni sam laik sto se tice klasa i naslijedjivanja, pa da priupitam, kada u nasljedjenoj klasi imam kao argument char broj [10] i sad kad pravim konstruktor, da li je ovo ispravno:
 Class BOVeceOD10 : public Konverzija
{

private:
char broj [10];
public:
BOVeceOD10()
{
Konverzija (10);

strcpy (broj,"0");
}

i btw, sta predstavlja ovo strcpy, posto niti jednu klasu koju sam ja radila (a malo ih je :S :D ) nisam ovo upotrebljavala 

 
1 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
pitagorina.teorema kaže...
i btw, sta predstavlja ovo strcpy, posto niti jednu klasu koju sam ja radila (a malo ih je :S :D ) nisam ovo upotrebljavala 

strcpy - string copy

kopiranje stringa u neko polje

 

http://www.cplusplus.com/reference/clibrary/cstring/strcpy/

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
pitagorina.teorema kaže...

Pozz, totalni sam laik sto se tice klasa i naslijedjivanja, pa da priupitam, kada u nasljedjenoj klasi imam kao argument char broj [10] i sad kad pravim konstruktor, da li je ovo ispravno:
 Class BOVeceOD10 : public Konverzija
{

private:
char broj [10];
public:
BOVeceOD10()
{
Konverzija (10);

strcpy (broj,"0");
}

i btw, sta predstavlja ovo strcpy, posto niti jednu klasu koju sam ja radila (a malo ih je :S :D ) nisam ovo upotrebljavala 

To nema smisla. Bazni konstruktor se u pravilu poziva prvi pa tek onda konstruktor derivirane klase:

 

BOVeceOD10(int n) : Konverzija(n){ }

 

Ovako bilo ispravno. U tvom slučaju također nema smisla pozivati bazni konstruktor s parametrom ako derivirana klasa nema parametar (koji bi se predao baznom konstruktoru).

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

imam program s par threadova početih pomoću _beginthread(); , kako ih ugasiti iz main-a?

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
LFS racer kaže...

imam program s par threadova početih pomoću _beginthread(); , kako ih ugasiti iz main-a?

http://msdn.microsoft.com/en-us/library/windows/desktop/ms686717%28v=vs.85%29.aspx

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Kolko sam skužio kad napravim terminatethread, varijable unutar tih threadova i dalje ostanu alocirane. svakim zaustavljanjem 8 threadova i ponovnim počinjanjem program zauzima 100KB više rama nego prije. dok ne dođe do nekih 8.5 MB i više ništ ne radi.

dali bih trebao nekako dealocirati te varijable ili da koristim statičke (globalne) varijable, pošto mi te varijable trebaju samo za izvršavanje trenutne funkcije.

 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
LFS racer kaže...

Kolko sam skužio kad napravim terminatethread, varijable unutar tih threadova i dalje ostanu alocirane.

Kako si to mjerio? O kakvoj alokaciji pričamo, statičkoj ili dinamičkoj?

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
LFS racer kaže...

Kolko sam skužio kad napravim terminatethread, varijable unutar tih threadova i dalje ostanu alocirane.

Kako si to mjerio? O kakvoj alokaciji pričamo, statičkoj ili dinamičkoj?

otvorio task manager i gledao kako ram samo raste (kada ponovo pokrećem threadove)

prije sam imao u funkcijama deklarirane varijable unutar funkcija, znači (int, float,...)

sad sam stavio u jedan dio koda deklaraciju ispred funkcije (neznam kako se to zove), i meni se čini da manje rama zauzima tijekom ponovnog pokretanja. nisam još stigao sve zamijeniti takvim varijalbama imam 4 i po tisuće linija koda

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

otvorio task manager i gledao kako ram samo raste (kada ponovo pokrećem threadove)

Skini neki ozbiljniji program ako se kaniš baviti takvim mjerenjima. Task manager ti pokazuje working set, tebe će više zanimati private bytes. Možeš to mjeriti process explorerom ili process hackerom

 

http://stackoverflow.com/questions/1984186/what-is-private-bytes-virtual-bytes-working-set

 

Sada znaš zašto se ne preporuča nasilno prekidanje threadova. Uvijek trebaš pustiti da thread sam dovrši ono što je počeo i počisti za sobom.

 

Kakav je to uopće program u kojem baš moraš prekidati thread usred izvođenja? Zar ne možeš jednostavno poslati nekakav signal?

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
Poruka je uređivana zadnji put čet 20.9.2012 14:06 (rustweaver).
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Pozz

 

Potrebne su mi upute oko ovog zadatka kako ga rijesiti:

 

 

Zadan je binomni broj. Provjeriti je li taj broj ima sve jedinice ispred 0 npr 1111100000 (return 1) 111010 (return 0).

 

 

 

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

Pozz

 

Potrebne su mi upute oko ovog zadatka kako ga rijesiti:

 

 

Zadan je binomni broj. Provjeriti je li taj broj ima sve jedinice ispred 0 npr 1111100000 (return 1) 111010 (return 0).

 

Binarni,ne binomni,lol.Prvo što mi pada na pamet je da koristiš pomoćnu varijablu kao nekakvo brojilo.Ono što je karakteristično za zadani broj je da su prvo sve nule,a onda sve jedinice što znači da postoji samo jedna promjena između nule i jedinice,ako me razumiješ.Npr.broj 111010 ima 3 promjene(prvo ide iz nule u 1,pa iz 1 u 0 i onda opet iz 0 u 1 i onda su sve jedinice i nema promjene).Napravi petlju koja ide s desna na lijevo i provjerava bit po bit da li je on 0 i sve dok je 0 idi na slijedeci bit.Kada bit postane 1 petlja se prekida i dogodila se prva promjena.Sada uđi u novu petlju koja provjerava bit po bit da li je on 1; ako je pređi na slijedeci bit,a ako nije onda se dogodila još jedna promjena i vrati 0,inače ako si došao do kraja broja vrati 1.

 

Ja programiram u C-u i napravio sam kratki program koji obavlja trazenu funkciju,slozenost mu je O(n).Nadam se da ćeš moći reproducirati rješenje u C++ jeziku.Program radi i ako upisujes broj koji pocinje sa nulom :

 

za 01...0... vraća 1

za 000...111... vraca 0

za 000...111...000 vraca 0

 

Mozes jos popraviti program da i za predzadnji i zadnji slucaj vraca 1 jer se prirodno sve vodece nule odbacuju kod binarnih brojeva.Zanemari ovo moje prckanje sa alokacijom memorije; ne znam koji su ti parametri za upis broja, stoga sam trazio korisnika da upiše broj znamenaka broja i prema tome odredio velicinu polja u koje cu spremiti broj.

 

 

 

edit: zeza me formatiranje,moram popravit...evo link: http://ideone.com/6ypXf

 

alrighty then
Poruka je uređivana zadnji put pet 21.9.2012 16:19 (dncrmt).
13 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Hmm malo mi se tesko snaci posto ne radim u C ali si napisao sa strane objasnjenje za svaki korak tako da    cu se  i snaci.

 

Jeste binarni,nisam ja pisao zadatak samo sam copy :D

 

U svakom slucaju hvala puno.

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

 

Kakav je to uopće program u kojem baš moraš prekidati thread usred izvođenja? Zar ne možeš jednostavno poslati nekakav signal?

svaki thread ima beskonačnu for petlju, i onda zavisno o inputima radi određene stvari. izvršavanje pojedinih ciklusa u foru može potrajati i duže vrijeme (par sekundi) a ja bi trebao thread praktički trenutno prekinut inače neće biti dobro :) ako šaljem signal čekam jedan cijeli ciklus, a to mi ne odgovara

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

svaki thread ima beskonačnu for petlju, i onda zavisno o inputima radi određene stvari. izvršavanje pojedinih ciklusa u foru može potrajati i duže vrijeme (par sekundi) a ja bi trebao thread praktički trenutno prekinut inače neće biti dobro :) ako šaljem signal čekam jedan cijeli ciklus, a to mi ne odgovara

Mislim da imaš pogrešan dizajn kojeg bi trebao nekako izmijeniti tako da ne moraš koristiti TerminateThread(). Sigurno možeš u tu petlju prije svake dulje radnje dodati provjeru je li poslan signal za prekidanje izvršavanja threada te onda prekinuti petlju (break), te onda logičnim slijednom osloboditi zauzete resurse (ako ih ima), te izvršiti return.

 

Mućni malo glavom i sigurno će ti nešto pasti na pamet, a ne ići glavom kroz zid i odvaliti TerminateThread().

 

Iskopao sam i nekakav workaround koji koristi ne dokumentiranu API funkciju, pa ako si baš zapeo...

http://www.nicklowe.org/2012/01/thread-termination-dont-leak-the-stack/

http://www.codeproject.com/Tips/289436/Terminate-a-hanging-thread

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
Poruka je uređivana zadnji put pet 21.9.2012 19:36 (rustweaver).
14 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

U gotovo svim implementacijama thread klasa obično ima zastavicu (flag) koja se provjerava pri takvim završetcima threadova. Npr.:

 

// u metodi koja se izvršava u threadu:
while(1)
    if(Terminated == false) prekini_thread();  // provjera flag-a "Terminated"
    // radi posao thread-a
}

tj.

 

// u metodi koja se izvršava u threadu:
while(!Terminated)
    // radi posao thread-a
}

 

 

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

imam jedan problem sa ovi zadatkom - meni se ispusuje zadnji uneseni  broj kao najmanji, a treba najmanji. Malo mi je to smiješno. Znam da je problem u while petlji - ali ne znam gdje da stavim ovaj uvjet za provjeru da li je broj najmanjii

 

//Napisati program gdje korisnik unosi brojeve dokle god ne unese broj 0. Program ispisuje

//najmanji broj i srednju vrijednost svih unesenih brojeva.

 

#include <iostream>

using namespace std;

 

int main ()

   {

     double uneseniBroj, sum, avg, najmanjiBroj;

     int n=0;

     while (uneseniBroj != 0) {

     najmanjiBroj=uneseniBroj;

       if (uneseniBroj<najmanjiBroj)

         {najmanjiBroj=uneseniBroj;}

       cout<<"Unesi neki broj: ";

       cin>>uneseniBroj;

     sum+=uneseniBroj;

     n++;

     avg=sum/(n-1);

     }

 

     cout<<"\nUkupna suma svih brojeva do sada je: "<<sum;

     cout<<"\nSrednja vrijednost do sada unesenih brojeva je: "<<avg;

     cout<<"\nA najmanji broj je: "<<najmanjiBroj;

     return 0;

   }

~21 god, ETFOS, Slavonac, linux and open source fan, net addict, želim znati više, interesi: web dev, svemir, glazba...
 
0 0 hvala 0
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

ako se ne varam, taj logički dio bi trebao izgledati ovako, rješeno preko niza od niz[100]; tako da dodaješ brojeve u niz i onda ih provjeravaš

 

ako griješim, moja isprika

 

min=niz[0];
    for (i=1;i<n;i++)
        if (min>niz[i]) min=niz[i];

 

istom logikom bi provjera najvećeg broja radila, a prosjek brojeva bi išao zbrajanjem svih članova niza preko brojača i onda djeljenjem s tim brojačem

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

ako se ne varam, taj logički dio bi trebao izgledati ovako, rješeno preko niza od niz[100]; tako da dodaješ brojeve u niz i onda ih provjeravaš

 

ako griješim, moja isprika

 

min=niz[0];
    for (i=1;i<n;i++)
        if (min>niz[i]) min=niz[i];

 

istom logikom bi provjera najvećeg broja radila, a prosjek brojeva bi išao zbrajanjem svih članova niza preko brojača i onda djeljenjem s tim brojačem

ako bi za prvu brojku unio 0 onda bi bio raspad sistema. A i ja bih htio imati što jednostavnije, jer ovako imam dodatne 2 for petlje, I što ako je niz veći od 100 članova - jer ovdje se unosi sve dok se ne upiše 0? A gdje si ovo mislio ubaciti? 

~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 sub 22.9.2012 15:07 (kakapo).
15 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
kakapo kaže...

imam jedan problem sa ovi zadatkom - meni se ispusuje zadnji uneseni  broj kao najmanji, a treba najmanji. Malo mi je to smiješno. Znam da je problem u while petlji - ali ne znam gdje da stavim ovaj uvjet za provjeru da li je broj najmanjii

 

 

//Napisati program gdje korisnik unosi brojeve dokle god ne unese broj 0. Program ispisuje

//najmanji broj i srednju vrijednost svih unesenih brojeva.

 

#include <iostream>

using namespace std;

 

int main ()

   {

     double uneseniBroj, sum, avg, najmanjiBroj;

     int n=0;

     while (uneseniBroj != 0) {

     najmanjiBroj=uneseniBroj;

       if (uneseniBroj<najmanjiBroj)

         {najmanjiBroj=uneseniBroj;}

       cout<<"Unesi neki broj: ";

       cin>>uneseniBroj;

     sum+=uneseniBroj;

     n++;

     avg=sum/(n-1);

     }

 

     cout<<"\nUkupna suma svih brojeva do sada je: "<<sum;

     cout<<"\nSrednja vrijednost do sada unesenih brojeva je: "<<avg;

     cout<<"\nA najmanji broj je: "<<najmanjiBroj;

     return 0;

   }

 

Prije svega, moras prije while petlje unijeti neki broj i postaviti ga kao najmanji uneseni broj. U tvome kodu varijable uneseniBroj i najmanjiBroj poprimaju na pocetku neku neodredenu vrijednost. To moze izazvati dosta nepozeljnog ponasanja, i jer ti te neodrene vrijednosti odmah koristis u while petlji. I za taj prvi broj unesen van while petlje, moras staviti da je najmanji, pa onda u while petlji usporedujes ostale brojeve sa njim. Usto nisi ni inicijalizirao varijablu sum. Ona isto moze imati neku slucajnu vrijednost.

 

I imas jednu vrlo veliku gresku a to je ovo:

najmanjiBroj=uneseniBroj;

     najmanjiBroj=uneseniBroj;

       if (uneseniBroj<najmanjiBroj)

         {najmanjiBroj=uneseniBroj;}

Pogledaj sto se ovdje dogada i ima li to smisla. Dakle svaki uneseni broj stavis kao najmanji. Onda taj broj usporedujes sam sa sobom. Ima li to ikakvog smisla?

Trebas potpuno izbaciti:

   najmanjiBroj=uneseniBroj;

 

I nema potrebe da stalno racunas srednju vrijednost u svakoj iteraciji while petlje, to mozes na kraju izracunati. I nije mi jasna ova foruma:

avg =sum(n-1)

 

Zasto dijelis s n-1? Trebas dijeliti s n.

 

Evo koda:

 

//Napisati program gdje korisnik unosi brojeve dokle god ne unese broj 0. Program ispisuje

//najmanji broj i srednju vrijednost svih unesenih brojeva.

#include <iostream>

using namespace std;

int main (){

    double uneseniBroj, sum, avg, najmanjiBroj;

    int n = 1;
    cout << "Unesi neki broj: ";
    cin >> uneseniBroj;
    najmanjiBroj = uneseniBroj;
    sum = uneseniBroj;

    while (uneseniBroj != 0)
    {
        if (uneseniBroj < najmanjiBroj)
            najmanjiBroj = uneseniBroj;
        cout << "Unesi neki broj: ";
        cin >> uneseniBroj;
        sum += uneseniBroj;
        n++;
    }
    avg = sum/(n-1);

    cout << "Ukupna suma svih brojeva do sada je: "<< sum << endl;
    cout << "Srednja vrijednost do sada unesenih brojeva je: "<< avg << endl;;
    cout << "A najmanji broj je: "<<najmanjiBroj << endl;

    return 0;

}

I would love to change the world, but they won't give me the source code
Poruka je uređivana zadnji put sub 22.9.2012 15:25 (captain_soap_McTawish).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...

 

Zasto dijelis s n-1? Trebas dijeliti s n.

puno hvala, sada sve šljaka kak treba

 

- a dijelio sam sa n-1 jer mi je avg funkcija kao n (tj. brojac unosa dosadašnjih) uzimala i ovu nulu (n sam od prve postavio na 0, vjerojatno iz navike, pa sam imao 'unos više'), sa kojom sam prekidao unos, pa sam to onda zaobišao tako da mi smanji 'brojac' za jedan, i sve je bilo ok

~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 sub 22.9.2012 15:27 (kakapo).
12 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
kakapo kaže...
olly kaže...

ako se ne varam, taj logički dio bi trebao izgledati ovako, rješeno preko niza od niz[100]; tako da dodaješ brojeve u niz i onda ih provjeravaš

 

ako griješim, moja isprika

 

min=niz[0];
    for (i=1;i<n;i++)
        if (min>niz[i]) min=niz[i];

 

istom logikom bi provjera najvećeg broja radila, a prosjek brojeva bi išao zbrajanjem svih članova niza preko brojača i onda djeljenjem s tim brojačem

ako bi za prvu brojku unio 0 onda bi bio raspad sistema. A i ja bih htio imati što jednostavnije, jer ovako imam dodatne 2 for petlje, I što ako je niz veći od 100 članova - jer ovdje se unosi sve dok se ne upiše 0? A gdje si ovo mislio ubaciti? 

tvoj glavni problem je to što tebi petlja svaki put postavi trenutni zadnji broj kao najmanji broj, zato dobivaš taj rezultat koji dobivaš, na tvom bi mjestu napravio jednu petlju za unos i drugu petlju za provjeru manjeg broja, a prosjek ispisao na ispisu broja što bi izlgledalo ovako, koje se nebi moglo rješiti bez niza (kojeg možeš postaviti koliko hoćeš)

 

nisam se bavio programiranjem preko godinu dana, nisam napisao niti jedan red koda, pa ćeš mi morati oprostiti ako sam nešto zeznuo

 

int main ()

   {

     double sum, avg, najmanjiBroj, niz[100];

     int n=0;

     while (uneseniBroj != 0) {

       cout<<"Unesi neki broj: ";

       cin>>niz[n];

     sum+=niz[0]; n++;

     }

     min=niz[0];

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

       if (uneseniBroj<najmanjiBroj) if (najmanjiBroj>niz[i]) najmanjiBroj=niz[i];

     cout<<"\nUkupna suma svih brojeva do sada je: "<<sum;

     cout<<"\nSrednja vrijednost do sada unesenih brojeva je: "<<sum/n;

     cout<<"\nA najmanji broj je: "<<najmanjiBroj;

     return 0;

   }

Poruka je uređivana zadnji put sub 22.9.2012 15:27 (olly).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
olly kaže...

tvoj glavni problem je to što tebi petlja svaki put postavi trenutni zadnji broj kao najmanji broj, zato dobivaš taj rezultat koji dobivaš, na tvom bi mjestu napravio jednu petlju za unos i drugu petlju za provjeru manjeg broja, a prosjek ispisao na ispisu broja što bi izlgledalo ovako, koje se nebi moglo rješiti bez niza (kojeg možeš postaviti koliko hoćeš)

 

nisam se bavio programiranjem preko godinu dana, nisam napisao niti jedan red koda, pa ćeš mi morati oprostiti ako sam nešto zeznuo

 

int main ()

   {

     double sum, avg, najmanjiBroj, niz[100];

     int n=0;

     while (uneseniBroj != 0) {

       cout<<"Unesi neki broj: ";

       cin>>niz[n];

     sum+=niz[0]; n++;

     }

     min=niz[0];

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

       if (uneseniBroj<najmanjiBroj) if (najmanjiBroj>niz[i]) najmanjiBroj=niz[i];

     cout<<"\nUkupna suma svih brojeva do sada je: "<<sum;

     cout<<"\nSrednja vrijednost do sada unesenih brojeva je: "<<sum/n;

     cout<<"\nA najmanji broj je: "<<najmanjiBroj;

     return 0;

   }

 

hvala na trudu... boldano - da, svakako to vrijedi, to sam i htio izbjeći

 

no, kod tebe ima problem, što definiraš unaprijed veličinu niza, a ja želim varijabilne veličine unos

 

btw - ovo: je jako loše:

   if (uneseniBroj<najmanjiBroj) if (najmanjiBroj>niz[i]) najmanjiBroj=niz[i];

 

~21 god, ETFOS, Slavonac, linux and open source fan, net addict, želim znati više, interesi: web dev, svemir, glazba...
15 godina
online
Re: Programiranje u C++-u - pitanja i odgovori
olly kaže...

tvoj glavni problem je to što tebi petlja svaki put postavi trenutni zadnji broj kao najmanji broj, zato dobivaš taj rezultat koji dobivaš, na tvom bi mjestu napravio jednu petlju za unos i drugu petlju za provjeru manjeg broja, a prosjek ispisao na ispisu broja što bi izlgledalo ovako, koje se nebi moglo rješiti bez niza (kojeg možeš postaviti koliko hoćeš)

 

nisam se bavio programiranjem preko godinu dana, nisam napisao niti jedan red koda, pa ćeš mi morati oprostiti ako sam nešto zeznuo

 

int main ()

   {

     double sum, avg, najmanjiBroj, niz[100];

     int n=0;

     while (uneseniBroj != 0) {

       cout<<"Unesi neki broj: ";

       cin>>niz[n];

     sum+=niz[0]; n++;

     }

     min=niz[0];

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

       if (uneseniBroj<najmanjiBroj) if (najmanjiBroj>niz[i]) najmanjiBroj=niz[i];

     cout<<"\nUkupna suma svih brojeva do sada je: "<<sum;

     cout<<"\nSrednja vrijednost do sada unesenih brojeva je: "<<sum/n;

     cout<<"\nA najmanji broj je: "<<najmanjiBroj;

     return 0;

   }

Ne vidim smisao da u brojeve uopce pohranjujes u polje, kad sve to mozes lijepo napraviti i bez ikakvih polja. U svom rjesenju imas dosta manjkavosti. Varijabla uneseniBroj nije deklarirana, a ti je uopce ne koristis, a usporedujes. Onda imas u sredini varijablu min, koja isto nije deklarirana i nigdje je ne korsitis. 

 

Usto linija koda

sum += niz[0];Tu vijek dodajes pocetni clan sto je pogresno. Trebas dodavati trenutni clan:

sum += niz[n];

 

Onda imas

for(int i = 0; i<n; i++)

 

Ovdje bi umesto i<n, treba biti i < n-1, jer je posljedni uneseni broj uvijek 0, a nju ne racunamo.

 

I imas ovdje ovu liniju koda koja stvarno nema nikakvoga smisla:

if (uneseniBroj<najmanjiBroj) if (najmanjiBroj>niz[i]) najmanjiBroj=niz[i];

Ovo je valjda greska u kopiranju ili nesto sl.

 

Evo koda sa poljem koji si htio napisati, iako stvarno nema potrebe ovdje pohranjivati brojeve u polje, a puno bi bilo bolje korisiti klasu vector za pohranu brojeva jer si ovako ogranicen na:

//Napisati program gdje korisnik unosi brojeve dokle god ne unese broj 0. Program ispisuje

//najmanji broj i srednju vrijednost svih unesenih brojeva.

#include <iostream>

using namespace std;

int main()
{
    double sum, avg, najmanjiBroj, niz[100];
    int n = 0;

    do{
        cout << "Unesi neki broj: ";
        cin >> niz[n];
        sum += niz[n];
        n++;

    }while (niz[n-1] != 0);

    najmanjiBroj = 0;

    for (int i=1; i<n-1; i++)
        if (niz[i] < najmanjiBroj)
            najmanjiBroj=niz[i];

    cout<<"\nUkupna suma svih brojeva do sada je: "<<sum;

    cout<<"\nSrednja vrijednost do sada unesenih brojeva je: "<<sum/(n-1);

    cout<<"\nA najmanji broj je: "<<najmanjiBroj;

    return 0;

}

 

I would love to change the world, but they won't give me the source code
Poruka je uređivana zadnji put sub 22.9.2012 15:48 (captain_soap_McTawish).
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Sekin2705 kaže...

Pozz

 

Potrebne su mi upute oko ovog zadatka kako ga rijesiti:

 

 

Zadan je binomni broj. Provjeriti je li taj broj ima sve jedinice ispred 0 npr 1111100000 (return 1) 111010 (return 0).

 

 

 

 

Sekin2705 kaže...

Hmm malo mi se tesko snaci posto ne radim u C ali si napisao sa strane objasnjenje za svaki korak tako da    cu se  i snaci.

 

Jeste binarni,nisam ja pisao zadatak samo sam copy :D

 

U svakom slucaju hvala puno.

 

C++

 

 

#include <iostream>
#include <vector>
#include <cassert>
#include <string>
 
using namespace std;
 
/*help funkcija kojom iz unesenog
stringa punis bool kontejner */
bool toBool(const char& s)
{
  assert(s == '0' || s == '1');
  return s == '1';
}
 
class Covjece {
public:
Covjece( const vector<bool>& binary )
    :   m_binary(binary)
{ it = m_binary.begin();
   cout<< endl << "rezultat : " << boolalpha << check() << endl;
}
 
bool check();
 
private:
const vector<bool>& m_binary;
vector<bool>::const_iterator it;
};
 
/* check() ti je core cijele operacije.
kako si postavio zadatak , navedeni
ima samo jedno true rijesenje :: iza n nula moraju slijediti do kraja samo
jedinice. prvi while chekira nule , drugi
jedinice. u svim ostalim situacijama dobivas false*/
 
bool Covjece::check()
{
   if(*it == 1)
   return false;
       
   while( it != m_binary.end() )
   {
     if( *it == 0)
     it++;
 
     else
    {
         while( it != m_binary.end() )
         {
              if( *it == 1 )
                   it++;
 
             else
             return false;
         }     
         return true;  
     }
  
   }
}
 
int main()
{
  vector<bool>   binary;
  string num;
  cout<< "Pucaj binarni broj : ";
  cin>> num;
  for(string::reverse_iterator it = num.rbegin()  ; it != num.rend() ; it++)
  {
    binary.push_back( toBool( *it ) );
  }
 
  /*odbaciti suvisnje prednje nule
  u binarnom broju*/
  while( *(binary.end() - 1)  == 0 )
  {
    binary.erase( binary.end() - 1 );
  }
 
  cout<< endl << "Provjera za broj : ";
  for(int i=binary.size()-1 ; i > -1 ; i--)
  cout<< binary[ i ];
 
  Covjece provjeri_ovaj_broj(binary);
 
  return 0;
}

 

ako nisi za kompajlerom vidi link


http://ideone.com/jMovY

 

 

ili

 

#include <iostream>
#include <bitset>
 
const int size_int = sizeof(int)*8; // 8 bita po byte-u
 
using namespace std;
 
bool check(const   bitset<size_int>&  bin , int count)
{
  if(bin[0] == 1)
  return false;
 
  for(int i=0 ; i<count ; i++)
  {
      if( bin[i] == 0)
      continue;
     
      else
      {
        for(int j= i ; j<count ; j++)
        {
             if(bin[j] != 1)
             return false;
 
            else
            continue;
         }
      }
  }
  return true;
}
 
int main ()
{
  string binary;
  cout << "upisi binarni broj : ";
  cin >> binary;
 
  bitset<size_int> bitNumber (binary);
 
  cout<< endl << "rezultat : " << boolalpha
      <<check(bitNumber , binary.size() ) << endl;
 
  return 0;
}

 

http://ideone.com/BRnNX

Poruka je uređivana zadnji put sub 22.9.2012 18:54 (nik_02).
E-mail:
Lozinka:
 
vrh stranice