Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

konwersja binarnego na liczbe

Ostatnio zmodyfikowano 2016-01-06 17:46
Autor Wiadomość
Ziko
Temat założony przez niniejszego użytkownika
konwersja binarnego na liczbe
» 2016-01-05 14:12:50
Witam serdecznie,
Czy mógł by mi ktoś wytłumaczyć w jaki sposób mogę prze konwertować binarny na liczby?
Dokładniej chodzi mi o odczyt pliku txt zawierającego zapis binarny np. (010101110101010101001111101011), następnie pobranie z tego pliku ciągu 5 znaków, prze konwertować i tak po kolei aż do szczytania wszystkich znaków z pliku.
Mam tu taki mały kod:
C/C++
#include <iostream>
int main()
{
    char str[] = "00101";
    int number = 0;
    for( int i = 0; i <( sizeof( str ) - 1 ); ++i )
    {
        number =( number << 1 ) |( str[ i ] != '0' );
    }
    std::cout << "string is " << str << " number is " << number <<
    std::endl;
    system( "pause" );
    return 0;
}
Nie wiem jak to dokładnie zrobić, czy najpierw mam otworzyć plik, zawartość odczytywać jakąś pętlą a następnie rzucić do tablicy aby zamieniło na liczbę? [/i]
P-142905
mateczek
» 2016-01-06 09:01:45
C/C++
#include <iostream>
#include<string>
using namespace std;

int main()
{
    string s = "0011";
    int i = stoi( s, NULL, 2 ); //i =3
    cout << i << endl;
   
}
co do czytania z pliku to przydał by się fragment !!! jaki to plik, jak ma rozdzielone poszczególne liczby ?? czy spacje czy enter
P-142949
Ziko
Temat założony przez niniejszego użytkownika
» 2016-01-06 13:26:37
Otwieram plik plik.txt, wczytuje całą jego zawartość i tą zawartość i chciał bym go przekonwertować na ciąg liczb.
Zawartość pliku txt to ciąg trzydziestu zer i jedynek.
Przykładowo w pliku jest ciąg 010110101110000100001000010000
11 to 01011
16 to 10000
a na wyjściu chciałbym uzyskać wynik 11 11 16 16 16 16
czyli program miał by pobierać po 5 liczb np (01011) a następnie wynik w postaci 11
C/C++
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
using namespace std;


int main() {
    string line;
    ifstream myfile( "plik.txt", ios::in | ios::binary );
   
    if( myfile.is_open() ) {
        while( getline( myfile, line ) )
        {
            ///// przekształcenie ciągu na liczbe
           
        }
        myfile.close();
    }
   
    return 0;
}
Gdy prubuje skompilować wyskakuje błąd  Error 'stoi' was not declared in this scope

C/C++
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
#include <iostream>
using namespace std;


int main() {
    string line;
    ifstream myfile( "plik.txt", ios::in | ios::binary );
   
    if( myfile.is_open() ) {
        while( getline( myfile, line ) )
        {
           
            string line;
            int i = stoi( line, NULL, 2 ); //i =3
            cout << i << endl;
        }
        myfile.close();
    }
   
    return 0;
}
P-142959
mateczek
» 2016-01-06 15:05:42
stoi to funkcja zamieniająca napis na liczbę !!! http://www.cplusplus.com/reference/string/stoi/

 Stoi = stringToInteger !!! (jak chcesz może napisać własną)

włącz c++11!!!!!
C/C++
#include <iostream>
#include<string>
using namespace std;

int main()
{
    string s { "010101110101010101001111101011" };
    string fragment = "";
    for( char znak: s ) {
        fragment += znak;
        if( fragment.size() == 5 ) {
            cout << stoi( fragment, NULL, 2 ) << endl;
            fragment.clear();
        }
    }
}
P-142974
Ziko
Temat założony przez niniejszego użytkownika
» 2016-01-06 16:06:57
Przede wszystkim dziękuje za zainteresowanie się tematem oraz pomoc.
Faktycznie kompilator wypisał ostrzeżenie o c++11
Wiem że to jest dziwne pytanie ale jak mam włączyć c++11 ?
Szukałem w opcjach i nic nie znalazłem.
Używam Dev-C++ 5.11
Nie jestem pewien czy to jest dobry kompilator, kiedyś wyczytałem że najlepszy jest Code::Blocks ale trudno mi to powiedzieć zważywszy na moje małe doświadczenie.
P-142983
mateczek
» 2016-01-06 16:09:35
http://www.cplusplus.com/doc​/tutorial/introduction/devcpp/

//edit!!!
dev-cpp to nie jest kompilator!! Dev-c++ to "IDE" - środowisko developerskie (można śmiało powiedzieć, że jest to ciut lepszy notatnik. Z kilkoma przydatnymi opcjami :P!!!)

Kompilator to zewnętrzna aplikacja (choć często do pobrania występuje w paczce z IDE). Ty pewnikiem korzystasz z kompilatora min-gw (jest to port GCC na Windows).

ja z racji tego, że bawię się trochę w okienka (windows/Linux) wybrałem sobie Qt-Creator jako IDE!!! A jako kompilator pod Windows mam min-gw (tak samo jak Ty)!!!
P-142984
Pawlo3
» 2016-01-06 16:09:55
Dev C++ to dziadostwo. Nawet tabulacja tam nie działa! Zainstaluj wxDevC++, jest ze 100 razy lepszy!
P-142985
Ziko
Temat założony przez niniejszego użytkownika
» 2016-01-06 17:46:20
Dziękuje bardzo, przeinstalowałem kompilator, teraz wszystko śmiga jak trzeba. Poza faktem że nie otwiera mi starych cpp ale do tego zaraz jakoś dojde.
Ok już działają, wystarczyło zresetować system :)
Teraz pozostaje mi tylko otworzyć plik i wyciągnąć dane :)

Jeszcze raz dzięki wielkie mataczek.
P-142997
« 1 »
  Strona 1 z 1