prevod znakov do binarnej sustavy

Programovacie jazyky, rady, poradňa...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

prevod znakov do binarnej sustavy

Príspevok od používateľa BX »

Tak :) Zdravim vas...
Na informe sme dostali take strasne tazke zadanie, previest svoje meno do jazyka pocitacov - samozreme manualne :roll:
Kedze mna to manualne nebavilo :-D Spravil som si na to program, ale jedna vec mi tam robi bludy. Ze za binarnym kodom kazdeho znaku mi napise este dalsich par znakov, ktore tam nemaju co robit. Vobec netusim co tam robia :? Viete mi poradit, ako ich odstranim a necham tam len binarny kod? A co tam vlastne chcu? :)
Dakujem...

Kód: Vybrať všetko

#include <cstdlib>
#include <iostream>

using namespace std;

int prevod (int des)
{
    int i=0;
    int bin[10];
    
    do
    {
           bin[i]=des%2;
           des=des/2;
           i++;
    }
    while(des!=0); i--;
    
    for(int j=i;j>=0;j--)
     cout << bin[j];
}

int main(int argc, char *argv[])
{
    char pismeno[255];
    int cyklus=0;
    short cislo[255];
    
    cout << "Zadaj svoje meno po pismenach. Kazde pismeno odklepni enterom\n\n";
    
    do
    {
         cin >> pismeno[cyklus];
         cyklus++;
    }
    while(pismeno[cyklus-1]!='x');
     
     cyklus=cyklus-1;
     
    for (int i=0; i<cyklus; i++) cout << pismeno[i];
    
    putchar('\n');
    
    cout << " ---------------- v dvojkovej ---------------- " << endl << endl;
    for(int j=0; j<cyklus; j++)
    {
     cislo[j] = (short) pismeno[j];
     cout << prevod(cislo[j]) << endl;
    };
    
    cin.get();
    cin.get();
    
}
Snacker
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 362
Registrovaný: 08 jún 2009, 22:42
Kontaktovať používateľa:

Príspevok od používateľa Snacker »

S C++ vobec nerobim ale ten kod je otrasny :lol: Strasne moc zbytocnosti :cry:

ale tak skus takto

Kód: Vybrať všetko

#include <iostream>
#include <limits.h>
#include <cstdlib> 

using namespace std;

void print_char_as_binary(char ch)
{
int i = CHAR_BIT;
while (i > 0)
{
-- i;
cout << (ch&(1 << i) ? '1' : '0');
}

}

int main(int argc, char *argv[]) 
{ 
    char pismeno[255]; 
    int cyklus=0; 
    short cislo[255]; 
    
    cout << "Zadaj svoje meno po pismenach. Kazde pismeno odklepni enterom\n\n"; 
    
    do 
    { 
         cin >> pismeno[cyklus]; 
         cyklus++; 
    } 
    while(pismeno[cyklus-1]!='x'); 
      
     cyklus=cyklus-2; 
    
    for(int count = 0; count <= cyklus; count++) 
    print_char_as_binary(pismeno[count]);
    
    cin.get(); 
    cin.get(); 
    
}
A douc sa to :P
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

No... ide to :D
A teraz keby si mi mohol vysvetlit tuto vec? :)

Kód: Vybrať všetko

void print_char_as_binary(char ch)
{
int i = CHAR_BIT;
while (i > 0)
{
-- i;
cout << (ch&(1 << i) ? '1' : '0');
}

}
btw. C++ si skusam po velmi dlhom case a to tak, ze nikdy som mu nevenoval nejaku vacsiu pozornost :)
Snacker
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 362
Registrovaný: 08 jún 2009, 22:42
Kontaktovať používateľa:

Príspevok od používateľa Snacker »

alebo este jednoduchsie :lol:

Kód: Vybrať všetko

#include <iostream>
#include <limits.h>
# include <bitset>

using namespace std;

int main(int argc, char *argv[]) 
{ 
    char pismeno[255]; 
    int cyklus=0; 
    short cislo[255]; 
    
    cout << "Zadaj svoje meno po pismenach. Kazde pismeno odklepni enterom\n\n"; 
    
    do 
    { 
         cin >> pismeno[cyklus]; 
         cyklus++; 
    } 
    while(pismeno[cyklus-1]!='x'); 
      
     cyklus=cyklus-2; 
    
    for(int count = 0; count <= cyklus; count++) 
    cout << bitset<CHAR_BIT>(pismeno[count]) << endl;
    
    cin.get(); 
    cin.get(); 

}
Na to mas normalne kniznicu takze no problem, neni to vysvetlovat (dufam) :)

BTW: main() som ani neprerabal , to si uz zjednodus a uprav
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

aha :) No... toto druhe je super :D
btw. Nevies/nevie niekto preco mi to robilo blbosti? :)
Snacker
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 362
Registrovaný: 08 jún 2009, 22:42
Kontaktovať používateľa:

Príspevok od používateľa Snacker »

Este som to zjednodusil, ta dunkcia preste uz stratila zmysel.
btw. Nevies/nevie niekto preco mi to robilo blbosti?
No, moc som to nepozral ale problem bude asi s pamatou
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

nj bude, tak niekto keby to vedel teoreticky vysvetlit, tak by mohol :)

btw. pri tom tvojom bitset premeni a, teda cislo 67, na 01100001 a pri tom by to malo byt presne opacne, ze 1000011 :? Ci som zase blby ja?
refr0
Star
Star
Príspevky: 521
Registrovaný: 26 nov 2005, 10:55
Bydlisko: Trenčín
Kontaktovať používateľa:

Príspevok od používateľa refr0 »

lebo sa to cita odzadu vzdy :D ?
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

no ano, ale nemalo by to tak aj napisat?

//

No pozrite saa... nakoniec vysvitlo...ze som debil ja :lol: Ja som totiz namiesto 97 premienal 67 :oops:
Ach :cry:

Diki Snacker :D

:samovrazda:
Napísať odpoveď