summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSanto Cariotti <sancn@live.com>2017-02-24 19:32:12 +0100
committerGitHub <noreply@github.com>2017-02-24 19:32:12 +0100
commit47a54787726a158f89c4f0a0301cb2d80b55e267 (patch)
tree27d93535b13aa55648190adb07761dc269cea1ef
parenta058ecdd549034aaaa0a80f4ae19abba9183d830 (diff)
Create conversioneBinariaDec.cc
-rw-r--r--conversioneBinariaDec.cc42
1 files changed, 42 insertions, 0 deletions
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 <iostream>
+#include <math.h>
+#include <string.h>
+
+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;
+}