Ciao ragazzi, tra circa 4 mesi avrò una gara di robotica e mi sto preparando cercando di imparare il c++ per usare al meglio arduino.
Il mio professore di TPSIT ci ha assegnato questo problema:
---------------------------------------------------------------------------------------------------
Scrivere un programma in C++ (o in Java) che legga un numero n > 0 e scriva la rappresentazione di –n in
complemento a 2 su k bit. Se non è possibile scrivere : “impossibile”.
Esempio: se n vale 3 e k vale 4 l’output sarà 1101. Se invece k vale 2 o 1 scriverà “impossibile”.
---------------------------------------------------------------------------------------------------
Il programma in Java l'ho già fatto dato che è il linguaggio che tratto principalmente ad informatica, ma in TPSIT stiamo affrontando il c++ (anche perché al biennio non ho fatto nulla, solo pascal e pseudocodifica).
Questa è la mia soluzione, spero mi possiate aiutare!
P.S.: Sono nuovo in questo forum
codice:#include <iostream> #include <stdio.h> using namespace std; int potenza(int i, int k){ int pot = 1; for (int j = 0; j<k; j++){ pot*=i; } return pot; } bool isRappresentabileInC2(int n, int nBit){ int min = -potenza(2, nBit-1); int max = (min*(-1))-1; return (n >= min)&& (n <= max); } void rappresentazioneInBinario(int n, int nBit, int vett[]){ int quoziente = n; for(int i = nBit-1; i>0; i--){ vett[i] = quoziente%2; quoziente /= 2; } } void rappresentazioneInC2(int vett[], int nBit){ bool isPrimoUnoSuperato = false; int i = nBit-1; for(; !isPrimoUnoSuperato; i--){ if(vett[i] == 1){ isPrimoUnoSuperato = true; } } for(int j = i; j>=0; j--){ if (vett[j]==0){ vett[j]=1; }else{ vett[j]=0; } } } int main(){ cout << "Inserisci un numero n \n"; int n = 0; cin >> n; cout << "Inserisci il numero di bit sul quale vuoi rappresentarlo in C2 \n"; int nBit = 0; cin >> nBit; int vett[nBit]; if (isRappresentabileInC2(n, nBit)){ rappresentazioneInBinario(n, nBit, vett); rappresentazioneInC2(vett, nBit); for (int i = nBit - 1; i >= 0; i--) cout << vett[i]; cout << "\n"; } else { cout << "Impossibile"; cout << "\n"; } return 0; }

Rispondi quotando
