Vector C++ printing garbage

Asked

Viewed 30 times

-1

Save it guys. I’m building a C++ cache simulator for a college job. While I was building and testing the code, I came across this mistake. The idea was for the user to set the number of addresses of the main memory and the code to convert from decimal to binary and print, but it prints together what I believe to be memory junk, with each run the numbers after the binaries get random. I don’t know how to solve it. If someone gives me a light thank you

#include <iostream>
#include <cmath>

using namespace std;

int DecToBin(int n){
    // array para armazenar o binário
    int binaryNum[32];

    int i = 0;
    while (n > 0){
        //armazenando os restos das divisões da conversão
        binaryNum[i] = n % 2;
        n = n / 2;
        i++;
    }
 
    // imprimindo a array em ordem inversa
    for (int j = i - 1; j >= 0; j--){
        cout << binaryNum[j];
    }
}

int main(){

    int Qtd_enderecos = 0;
    int  Qtd_bits = 0;
    //int mem_principal[Qtd_enderecos];
    //int mem_cache[Qtd_bits];

    cout << "Nota: os tamanhos devem ser em base 2;\n2, 4, 8, 16, 32..." << endl;
    cout << "Insira o tamanho da memoria principal: ";
    cin >> Qtd_enderecos;
    Qtd_bits = log2(Qtd_enderecos);
    cout <<"\n\n";

    cout << "Memória principal de " << Qtd_enderecos << " endereços" << endl;
    cout << "Memória cache de " << Qtd_bits << " endereços" << endl;
    cout << endl;

    // construção da array e memórias
    for (int a = 1; a <= Qtd_enderecos; a++){
        cout << "Posição " << a << " em binário: " << DecToBin(a) << endl;
        
    }
    
   
    return 0;
}

The output gets:

Nota: os tamanhos devem ser em base 2;
2, 4, 8, 16, 32...
Insira o tamanho da memoria principal: 8


Memória principal de 8 endereços
Memória cache de 3 endereços

Posição 1 em binário: 1-1970048960
Posição 2 em binário: 10-1970048960
Posição 3 em binário: 11-1970048960
Posição 4 em binário: 100-1970048960
Posição 5 em binário: 101-1970048960
Posição 6 em binário: 110-1970048960
Posição 7 em binário: 111-1970048960
Posição 8 em binário: 1000-1970048960

1 answer

0


Edit: I was able to fix the bug. I was printing the variable inside a print on a for loop. I believe that’s it. Where was it

for (int a = 1; a <= Qtd_enderecos; a++){
        cout << "Posição " << a << " em binário: " << DecToBin(a) << endl;
        
    }

left as:

for (int a = 1; a <= Qtd_enderecos; a++){
        cout << "Posição " << a << " em binário: ";
        DecToBin(a);
        cout << endl;        
    }

Output now:

Nota: os tamanhos devem ser em base 2;
2, 4, 8, 16, 32...
Insira o tamanho da memoria principal: 8
Memória principal de 8 endereços
Memória cache de 3 endereços
    
Posição 1 em binário: 1
Posição 2 em binário: 10
Posição 3 em binário: 11
Posição 4 em binário: 100
Posição 5 em binário: 101
Posição 6 em binário: 110
Posição 7 em binário: 111
Posição 8 em binário: 1000

Browser other questions tagged

You are not signed in. Login or sign up in order to post.