From 47a54787726a158f89c4f0a0301cb2d80b55e267 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Fri, 24 Feb 2017 19:32:12 +0100 Subject: Create conversioneBinariaDec.cc --- conversioneBinariaDec.cc | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 conversioneBinariaDec.cc diff --git a/conversioneBinariaDec.cc b/conversioneBinariaDec.cc new file mode 100644 index 0000000..e88a2fb --- /dev/null +++ b/conversioneBinariaDec.cc @@ -0,0 +1,42 @@ +#include +#include +#include + +using namespace std; + +const int b = 32; + +int main() +{ + int v[b] = {0}; //tutti i valori sono uguali a 0 + char str[b]; + int valVuoto, i, j; + int num = 0; + + cin >> str; + /* se la lunghezza della stringa è inferiore a quella della base, indica da quale punto è vuota */ + if(strlen(str) < b) + valVuoto = strlen(str); + + /* ordina i valori in modo tale da spostarli a blocco, ovvero entrambi gli indici si incrementano + man mano che ordinano il vettore degli interi. La base - la prima X di 'str' è l'inizio dell'ordine + del vettore degli int. + + Seguendo questa logica e questo esempio: + STR - + 1 0 x x x x x x + + V - + x x x x x x 1 0 + */ + for(i = b - valVuoto, j = 0; i < b; i++, j++) + v[i] = str[j] - '0'; + + //il vettore viene letto in ordine decrescente, mentre le potenze in crescente + for(i = b - 1, j = 0; i > -1; i--, j++) + num += v[i] * pow(2, j); + + cout << num << endl; + + return 0; +} -- cgit v1.2.3-18-g5258