[C++]esercizio conversione in binario

di il
5 risposte

[C++]esercizio conversione in binario

Salve ragazzi sono un nuovo arrivato!
Premetto che sono alle prime armi quindi probabilmente avrò commesso errori banalissimi però, per me sono macigni insormontabili ...ehehe

Allora il mio problema riguarda il seguente esercizio:
-Traccia(da svolgere con sottoprogrammi):
SIA DATO SU FILE UNA SEQUENZA DI NUMERI INTERI COMPRESI TRA 0 E 127. SI TRASFORMI OGNI
NUMERO IN BINARIO SU 8 BIT E SI MEMORIZZI LA SEQUENZA IN UN ARRAY DI BYTE. L'ELEMENTO PIù SIGNIFICATIVO DI OGNI BYTE,INOLTRE, SIA POSTO A 0 SE IL NUMERO DI 1 DEL BYTE è PARI;
SIA POSTO A 1 SE IL NUMERO DI 1 DEL BYTE è DISPARI. STAMPA A VIDEO L'ARRAY.

ora io ho provato e convertire ma non converte in modo corretto...
1) main
#include "lib.h"

int main()
{
    vettore v,s;
    int r;
    int num;
    leggi(v,r);
    for(int i=0;i<r;i++){
        converti(s,v);
        invertiVettore(s);
        stampaVettore(s);
        cout<<endl;
    }
    system("pause");
    return 0;
}
2).h

#ifndef lib_h
#define lib_h
#include <iostream>
#include <cstdlib>
#include <string.h>
#include <fstream>
#define N 128

using namespace std;

typedef int vettore [N];

int leggi(vettore &,int&);
void converti(vettore &,vettore &  );
void invertiVettore(vettore &);
void stampaVettore(vettore );

#endif
3).cpp
#include "lib.h"

int leggi(vettore & v,int & r){
    int i=0;
    fstream f;
    f.open("f2.txt",ios::in);
    if(!f)
        cout<<"Errore di lettura!\n";
    else{
        f>>r;
        for(int i=0;i<r;i++)
            f>>v[i];
    }
    f.close();
    for(int i=0;i<r;i++)
        cout<<v[i]<<"\n";
    return v[i];
}
void converti(vettore & v,vettore  &num){

    for(int i=0;i<8;i++){
        if(num[i]%2==0){
        v[i]=0;
        num[i]=num[i]/2;
        }else{
        v[i]=1;
        num[i]=num[i]/2;
        }
        }
}
void invertiVettore (vettore & v){
    vettore scambio;
    for (int i=0; i<8; i++)
           scambio[i]=v[8-1-i];
    for (int i=0; i<8; i++)
           v[i]=scambio[i];
}
void stampaVettore (vettore  v){
    for (int i=0; i<8; i++)
        cout<<""<<v[i]<<" ";
    cout<<"\n";
}
questo è il codice separato in main,libreria h e cpp.
il resto dell'esercizio non saprei dove mettere mano...

Mica qualcuno può aiutarmi??
Grazie in anticipoooo

ps.la traccia dell esercizio è scritta in maiuscolo poiche copiata dall sito del prof...

5 Risposte

  • Re: [C++]esercizio conversione in binario

    Devi scriverci anche l'impaginazione del file di input
  • Re: [C++]esercizio conversione in binario

    Che sarebbe?
  • Re: [C++]esercizio conversione in binario

    Per esempio se nel file ci sono dei caratteri newline o meno (il carattere invio o a capo).. quello potrebbe essere un caso di interruzione della lettura
  • Re: [C++]esercizio conversione in binario

    Inoltre quasi tutti i cicli for sono utilizzati con una variabile che hai chiamato r che però non ha un valore e quindi non si sa cosa possa decidere di fare il programma... cosa rappresenta la variabile r?
  • Re: [C++]esercizio conversione in binario

    In più nella funzione converti tu hai scritto il seguente codice
    void converti(vettore & v,vettore  &num){
    
        for(int i=0;i<8;i++){
            if(num[i]%2==0){
            v[i]=0;
            num[i]=num[i]/2;
            }else{
            v[i]=1;
            num[i]=num[i]/2;
            }
            }
    }
    num rappresenta il vettore letto di elementi... ma in finale assegni a num il valore di num/ 2..
    ma poi il contatore i aumenta e tu non stai più leggendo lo stesso valore....
Devi accedere o registrarti per scrivere nel forum
5 risposte