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

liczby binarne

Ostatnio zmodyfikowano 2017-05-17 19:23
Autor Wiadomość
Usurper
Temat założony przez niniejszego użytkownika
liczby binarne
» 2017-05-16 22:59:02
Siemka,mam problem z jednym z podpunktów
W pliku binarne.txt znajduje się 500 napisów złożonych wyłącznie z zer i jedynek.
W każdym wierszu umieszczony jest jeden napis. Każdy napis ma długość podzielną przez 4.
Napisz program (lub programy), który da odpowiedzi do poniższych zadań
Napisy z pliku binarne.txt traktujemy jako binarne zapisy liczb dziesiętnych, w których
każdy segment złożony z 4 znaków jest reprezentacją binarnego zapisu jednej cyfry (zapis taki
nazywany jest kodem BCD).
Napis uznajemy za niepoprawny, gdy któryś z segmentów ma wartość większą niż 9 (czyli nie
jest zapisem cyfry dziesiętnej).
Przykład:
Napis 10010111 jest poprawny i reprezentuje liczbę 97, natomiast napis 11010000 nie jest
poprawny, gdyż jego pierwszy segment (1101) reprezentuje w zapisie binarnym większą od 9
liczbę 13. Podobnie nie jest poprawny napis 1110, ponieważ reprezentuje w zapisie binarnym
liczbę 14.
Podaj liczbę niepoprawnych napisów z pliku binarne.txt oraz najmniejszą długość
niepoprawnego napisu.
oto mój kod:

#include <iostream>
#include <fstream>
#include<cstdlib>
using namespace std;
int z2na10(string s)
{
    int dziesietna=strtol(s.c_str(),NULL,2);
    return dziesietna;
}
string z10na2(int s)
{
    char binarna[255];
    itoa(s,binarna,2);
    return (string)binarna;
}
int main()
{
    string s;
    int suma=0;
    int ile=0;
    ifstream we("binarne.txt");
    for(int i=0;i<500;i++)
    {
       we>>s;
       for(int j=0;j<s.size();j++)
       {
           for(int k=0;k<4;k++)
           {
               z2na10(s[k]);
               suma+=s[k];
               if(suma>9)ile++;
               suma=0;
           }
       }



    }
cout<<ile<<endl;


    return 0;
}
niestety ale nie działa :(,liczę na pomoc,gdyż nwm gdzie robię błąd :(
P-161218
mateczek
» 2017-05-17 19:23:53
nie analizuje całości ale luknąłem na to:
C/C++
for( int k = 0; k < 4; k++ ) {
    z2na10( s[ k ] ); // nic nie robi nic nie zwraca ogólnie wywołanie bez sensu
    suma += s[ k ]; // sumujesz litery stringa. Pytanie w jakim celu
    if( suma > 9 ) ile++; // literka '0' ma kod 48 więc suma zawsze będzie większa od 9
   
    suma = 0;
}
Ten kod jest do napisania na nowo. i algorytmy do przemyślenia
P-161231
« 1 »
  Strona 1 z 1