Visualizzazione dei risultati da 1 a 1 su 1

Hybrid View

  1. #1

    [JAVA] Rappresentazione di N in complemento a 2

    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;
    }
    Ultima modifica di LeleFT; 03-01-2018 a 11:28 Motivo: Aggiunti i tag CODE

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.