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++
- +/- sve poruke
- ravni prikaz
- starije poruke gore
znam iz iskustva da mnogi govore C i za C i C++. jel onda u MPLAB-u mogu koristit C++ ili samo C?
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.
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.
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
strcpy - string copy
kopiranje stringa u neko polje
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).
imam program s par threadova početih pomoću _beginthread(); , kako ih ugasiti iz main-a?
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
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.
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?
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
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?
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).
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
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.
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
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
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
}
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;
}
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 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?
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;
}
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
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;
}
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];
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;
}
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).
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
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;
}
jeli moguće upravljati pritiskom tipki na gamepadu preko programa kao što je moguće za tipkovnicu preko keybd_event();

