Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DamnSystem en 28 Diciembre 2017, 08:22 am



Título: No consigo imprimir
Publicado por: DamnSystem en 28 Diciembre 2017, 08:22 am
Buenas, estoy con un ejercicio ( voy por partes ahora mismo no estoy atacando el problema como tal), mi idea es controlar lo que el usuario mete, con una condición guardo 8 0 o 1 si introduce algo que no es, lo siguiente que introduzca el usuario quiero macharlo ( con el fin de no guardar cosas que luego tendría que quitar), y si el usuario introduce un negativo corte pero la cosa es que no consigo que la función mía imprima para ver si lo tengo bien mi vector alguien me podría decir por que?


//  Implemente un programa que lea desde teclado valores de bits ( ceros y unos como enteros)
//  ,ignorando el resto de números positivos. El programa terminará cuando se lea un valor
//  negativo. Cada 8 bits leídos, el programa calculará el número entero que representa
//  y lo transformará en el carácter(char) correspondiente. El primer bit leído es el más
//  significativo. Si el carácter corresponde a una letra mayúscula o minúscula, lo
//  mostrará por pantalla. En caso contrario, lo sumará a un contador OTROS. Al final, el
//  programa debe mostrar el porcentaje de letras y OTROS símbolos leídos.
//  Si al terminar no se ha leído un bloque entero de 8 bits, no se imprimira el carácter


#include <iostream>
using namespace std;

int const MAX_VECTOR = 30;

void imprimir(char _vector[MAX_VECTOR]);

int main() {
    //  Variables y constantes
    int num_introducido = 0;
    char vector[30] = {0};
    int contador = 0;
    int contador_vector = 0;
   
    //  Desarrollo del programa
    do{
        cout << "Introduce un bit: " << endl;
        cin >> num_introducido;
        if(num_introducido >= 0 && num_introducido <= 1){
            vector[contador] += num_introducido;
            contador_vector++;
        }
        if(contador_vector < 8){
            contador++;
        }
    }while(num_introducido >= 0);
   
    imprimir(vector);
   
    return 0;
}

void imprimir(char _vector[MAX_VECTOR]){
    for(int i = 0; i < MAX_VECTOR; i++){
        cout << _vector << endl;
    }
}


Título: Re: No consigo imprimir
Publicado por: alpachino98 en 28 Diciembre 2017, 14:57 pm
No acabo de entender que tiene que hacer el programa pero si te ayuda de algo, me he dado cuenta que los 0 y 1 los lees en una varibale tipo int y que luego se lo metes a un vector que es de tipo char (este puede ser un error).Otra cosa es que en la función imprimir imprimes hasta el tamaño maximo del vector aunque no este lleno, esto seguramente te imprime valores que no has metido, como un monton de 0, y por último y por lo que seguramente no te vaya lo de imprimir es porque cuando imprimes un vector tienes que decirle que posición imprimir.

Código:
#include <iostream>
using namespace std;

int const MAX_VECTOR = 30;

typedef int vector[MAX_VECTOR];

void imprimir(vector,int);

int main() {
    //  Variables y constantes
    int num_introducido = 0;
    vector V = {0};
    int contador = 0;
    int contador_vector = 0;
   
    //  Desarrollo del programa
    do{
        cout << "Introduce un bit: " << endl;
        cin >> num_introducido;
        if(num_introducido >= 0 && num_introducido <= 1){
            V[contador] += num_introducido;
            contador_vector++;
        }
        if(contador_vector < 8){
            contador++;
        }
    }while(num_introducido >= 0);
   
    imprimir(V,contador_vector);
   
    return 0;
}

void imprimir(vector _vector,int tam){
    for(int i = 0; i < tam; i++){
        cout << _vector[i] << endl;
    }
}

Así funciona la función imprimir aunque te quedaría hacer lo de los 8 bits pero mírate de que tipo quieres que sea el vector y en lo que le metes. Espero que te sirva de ayuda.


Título: Re: No consigo imprimir
Publicado por: DamnSystem en 28 Diciembre 2017, 21:27 pm
Buenas gracias, el programa tengo que a través de enteros unir 8 enteros que sean 1 y 0 y pasarlo a char y saber cuantas mayúsculas minúsculas o otros símbolos he introducido, el fallo es que no imprime nada no es que me ponga cosas como -2371732, es que no imprimen nada , y en la función le estoy diciendo la posición del vector que quiero que muestre, y el vector esta relleno de 0, de todas formas he planteado el problema de otra forma por que así no creo que llegara muy lejos,

Gracias por tu ayuda :)


Título: Re: No consigo imprimir
Publicado por: MAFUS en 28 Diciembre 2017, 22:26 pm
Antes de nada. ¿Has visto como trabajar a nivel de bit, con operadores como & | ^ << >>?


Título: Re: No consigo imprimir
Publicado por: DamnSystem en 28 Diciembre 2017, 23:07 pm
La verdad es que como en la uni lo he dado entonces no quiero utilizarlo, pero le echare un vistazo :)


Título: Re: No consigo imprimir
Publicado por: MAFUS en 28 Diciembre 2017, 23:44 pm
En verdad se puede hacer sin saber eso.
Dicho esto he transportado tu código a C, de forma literal, y sí me imprime el array.


Título: Re: No consigo imprimir
Publicado por: DamnSystem en 29 Diciembre 2017, 08:14 am
Si es que imprimir debería lo que es que no entendía nada pero gracias ya estoy en proceso de hacerlo de otra forma como te dije :)