Senza vettori diventa difficile programmare, soprattutto perché ti permettono di rendere un problema il più generale possibile, adattabile a tutte le situazioni.
Qui ti metto una soluzione fatta da me, ho messo più commenti possibili per farti capire cosa ho fatto.
Spiegandotelo a parole ho chiesto in input il numero che ho messo dentro il vettore e la base (binario, ottale, esadecimale ecc.), a questo punto utilizzo una funziona chiamata strlen() per sapere la lunghezza del vettore, uso un ciclo for per scorrere ogni numero che si trova dentro le celle del vettore da [0] a [strlen(vettore)].
Inoltre per spiegarti come ho utilizzato gli indici i e k ti ho fatto questo schema
Se hai domande su qualcosa che non capisci chiedi pure.
Qui ti metto una soluzione fatta da me, ho messo più commenti possibili per farti capire cosa ho fatto.
Spiegandotelo a parole ho chiesto in input il numero che ho messo dentro il vettore e la base (binario, ottale, esadecimale ecc.), a questo punto utilizzo una funziona chiamata strlen() per sapere la lunghezza del vettore, uso un ciclo for per scorrere ogni numero che si trova dentro le celle del vettore da [0] a [strlen(vettore)].
C++:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <cmath>
using namespace std;
int main() {
char numero[100]; // dichiaro il numero da convertire
int base; // dichiaro la base
int convertito = 0; // dichiaro il numero convertito
// input numero da convertire
cout << "Inserisci il numero: ";
cin >> numero;
// input base
cout << "Inserisci la base: ";
cin >> base;
// lunghezza del vettore
int len = strlen(numero);
// variabile utilizzata per la posizione
// inizializzata con la lunghezza del vettore meno uno (len-1)
// se abbiamo 6 numeri il vettore sarà [0][1][2][3][4][5] perciò deve iniziare da 5
int k = len-1;
// creo un ciclo for
for(int i=0; i<len; i++) {
// converto un carattere in intero
int n = (int) numero[i]-48;
// aggiungo il valore a convertito
// bit * base * esponente
convertito += n*pow(base, k);
// decremento indice che parte dal numero massimo e arriva a 0
k--;
}
cout << "Il numero convertito e': ";
cout << convertito << endl;
system("PAUSE");
return 0;
}
C++:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <cmath>
using namespace std;
int main() {
char numero[100];
int base;
int convertito = 0;
cout << "Inserisci il numero: ";
cin >> numero;
cout << "Inserisci la base: ";
cin >> base;
int len = strlen(numero);
int k = len-1;
for(int i=0; i<len; i++) {
int n = (int) numero[i]-48;
convertito += n*pow(base, k);
k--;
}
cout << "Il numero convertito e': ";
cout << convertito << endl;
system("PAUSE");
return 0;
}
Inoltre per spiegarti come ho utilizzato gli indici i e k ti ho fatto questo schema
Se hai domande su qualcosa che non capisci chiedi pure.