Jak wrócić do początku wiersza

0

Dzień dobry,
mam taki problem:
chce napisać program który zamienia liczbę dwójkową na dziesiętna.
Ograniczenie jest takie że mam do dyspozycji tylko cin.get() do wczytywania wprowadzonych znaków.
Napisałem kawałek, który odczytuje i zlicza ilość wprowadzonych znaków i tu utknąłem Ponieważ przechodzę do nowego wiersza i nie mogę ponownie odczytać wprowadzonego tekstu żeby wymnożyć w kolejnej pętli jedynki na wlasciwych miejscach

Czy mógłbym poprosić o podpowiedz ?
Pozdrawiam
Paweł

poniżej to co napisałem:
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
char tmp;
unsigned ile=0;
cout << "Podaj liczbe w systemie dwojkowym" << endl;

       cin.get(tmp);
       
        while(tmp != '\n'){
         cout<< tmp;
         ++ile;
         tmp =cin.get();
       }
    cout << ile << endl;

getch();

return 0;
}

0

1.strlen
2.Wczytuj tekst raz, do zmiennej typu string.

0

Widzisz Patryk, problem w tym że mam użyć cin.get() w innym przypadku już bym sobie poradził :)

0

zapisz to do std::vectorint> wszystkie liczby które wczytałeś cin.get. Później tylko odejmiesz kod '0' od zmiennej char i już będziesz miał to skonwertowane na inta

0

Stringi! Wektory! O czym wy gadacie! http://ideone.com/mHg25A

#include <iostream>
using namespace std;
 
int readbin(int p=0)
  {
   int digit=(cin.get()-'0');
   return ((0<=digit)&&(digit<=1))?readbin(p*2+digit):p;
  }
 
int readbin_alt()
  {
   int p=0,digit;
   while((0<=(digit=(cin.get()-'0')))&&(digit<=1)) p=p*2+digit;
   return p;
  }
 
int main()
  {
   while(true)
     {
      cout<<"Podaj liczbe w systemie dwojkowym: ";
      cout<<readbin()<<endl;
     }
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1