#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main( )
{
char * binarni_broj; //deklariraj pokazivac na polje u koje cemo smjestiti binarni broj kao niz znakova
int n, provjera; //n je varijabla koja odreduje velicinu binarnog broja,"provjera" odreduje jeli provjera uspjesna
printf ( "\n koliko vas binarni broj ima znamenaka? " ) ; binarni_broj
= ( char * ) malloc ( ( n
+ 1 ) * sizeof ( char ) ) ; //rezerviram n mjesta za binarni broj + jedno mjesto za znak za kraj stringa printf ( "\n upisite vas binarni broj" ) ; fflush ( stdin
) ; //brisem sve iz standardnog ulaza gets ( binarni_broj
) ; //ucitavam binarni broj kao string(niz znakova) puts ( binarni_broj
) ; //ispisujem uneseni binarni broj na ekran (nepotrebno) n--; //postavljam se na bit najmanje tezine(prvi zdesna,zadnji u polju)
while ( binarni_broj[ n] == '0' && n> 0 ) n--; //sve dok su bitovi 0 i dok nisi dosao do kraja,idi na slijedeci bit
while ( binarni_broj[ n] == '1' && n> 0 ) { //Sada se sigurno dogodila promjena iz 0 u 1 i sve dok su bitovi 1 i dok nisi dosao do kraja...
n--; //...idi na slijedeci bit
if ( binarni_broj[ n] == '0' ) { //ako je trenutni bit 0,dogodila se jos jedna promjena,postavi provjeru u 0 i izadji iz petlje
provjera = 0 ;
break ;
}
}
if ( n == 0 ) provjera = 1 ; //ako si dosao do kraja(do bita najvece tezine(prvi slijeva,prvi u polju),znaci da su ispred 0 same jedinice i postavi provjeru u 1
//ako je n razlicit od 0,to znaci da si iskocio iz petlje prije kraja jer se desila jos jedna promjena sto znaci da ispred broja nisu same jedinice
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKaW50IG1haW4oKQp7CiAgICBjaGFyICpiaW5hcm5pX2Jyb2o7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVrbGFyaXJhaiBwb2theml2YWMgbmEgcG9samUgdSBrb2plIGNlbW8gc21qZXN0aXRpIGJpbmFybmkgYnJvaiBrYW8gbml6IHpuYWtvdmEKICAgIGludCBuLHByb3ZqZXJhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9uIGplIHZhcmlqYWJsYSBrb2phIG9kcmVkdWplIHZlbGljaW51IGJpbmFybm9nIGJyb2phLCJwcm92amVyYSIgb2RyZWR1amUgamVsaSBwcm92amVyYSB1c3BqZXNuYQogICAgcHJpbnRmKCJcbiBrb2xpa28gdmFzIGJpbmFybmkgYnJvaiBpbWEgem5hbWVuYWthPyAiKTsKICAgIHNjYW5mKCIlZCIsJm4pOwogICAgYmluYXJuaV9icm9qPShjaGFyKiltYWxsb2MoKG4rMSkqc2l6ZW9mKGNoYXIpKTsgICAgICAgICAvL3JlemVydmlyYW0gbiBtamVzdGEgemEgYmluYXJuaSBicm9qICsgamVkbm8gbWplc3RvIHphIHpuYWsgemEga3JhaiBzdHJpbmdhCiAgICBwcmludGYoIlxuIHVwaXNpdGUgdmFzIGJpbmFybmkgYnJvaiIpOwogICAgZmZsdXNoKHN0ZGluKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2JyaXNlbSBzdmUgaXogc3RhbmRhcmRub2cgdWxhemEKICAgIGdldHMoYmluYXJuaV9icm9qKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy91Y2l0YXZhbSBiaW5hcm5pIGJyb2oga2FvIHN0cmluZyhuaXogem5ha292YSkKICAgIHB1dHMoYmluYXJuaV9icm9qKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pc3Bpc3VqZW0gdW5lc2VuaSBiaW5hcm5pIGJyb2ogbmEgZWtyYW4gKG5lcG90cmVibm8pCiAgICBuLS07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcG9zdGF2bGphbSBzZSBuYSBiaXQgbmFqbWFuamUgdGV6aW5lKHBydmkgemRlc25hLHphZG5qaSB1IHBvbGp1KQogICAgd2hpbGUoYmluYXJuaV9icm9qW25dID09ICcwJyAmJiBuPjApICAgbi0tOyAgICAgICAgICAgICAvL3N2ZSBkb2sgc3UgYml0b3ZpIDAgaSBkb2sgbmlzaSBkb3NhbyBkbyBrcmFqYSxpZGkgbmEgc2xpamVkZWNpIGJpdAogICAgd2hpbGUoYmluYXJuaV9icm9qW25dID09ICcxJyAmJiBuPjApICAgeyAgICAgICAgICAgICAgICAvL1NhZGEgc2Ugc2lndXJubyBkb2dvZGlsYSBwcm9tamVuYSBpeiAwIHUgMSBpIHN2ZSBkb2sgc3UgYml0b3ZpIDEgaSBkb2sgbmlzaSBkb3NhbyBkbyBrcmFqYS4uLgogICAgICAgIG4tLTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy4uLmlkaSBuYSBzbGlqZWRlY2kgYml0CiAgICAgICAgaWYoIGJpbmFybmlfYnJvaltuXSA9PSAnMCcgKSB7ICAgICAgICAgICAgICAgICAgICAgIC8vYWtvIGplIHRyZW51dG5pIGJpdCAwLGRvZ29kaWxhIHNlIGpvcyBqZWRuYSBwcm9tamVuYSxwb3N0YXZpIHByb3ZqZXJ1IHUgMCBpIGl6YWRqaSBpeiBwZXRsamUKICAgICAgICAgICAgcHJvdmplcmEgPSAwOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBpZihuID09IDApIHByb3ZqZXJhID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYWtvIHNpIGRvc2FvIGRvIGtyYWphKGRvIGJpdGEgbmFqdmVjZSB0ZXppbmUocHJ2aSBzbGlqZXZhLHBydmkgdSBwb2xqdSksem5hY2kgZGEgc3UgaXNwcmVkIDAgc2FtZSBqZWRpbmljZSBpIHBvc3RhdmkgcHJvdmplcnUgdSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYWtvIGplIG4gcmF6bGljaXQgb2QgMCx0byB6bmFjaSBkYSBzaSBpc2tvY2lvIGl6IHBldGxqZSBwcmlqZSBrcmFqYSBqZXIgc2UgZGVzaWxhIGpvcyBqZWRuYSBwcm9tamVuYSBzdG8gem5hY2kgZGEgaXNwcmVkIGJyb2phIG5pc3Ugc2FtZSBqZWRpbmljZQogICAgcHJpbnRmKCJcbiVkIixwcm92amVyYSk7CiAgICByZXR1cm4gMDsKICAgIH0K