Lustrzane odbicie liczby

0

Napisałem program który wypisuje lustrzane odbicie liczby czyli gdy gdy wpisuje:
456 program powinien wypisać 654
7-----7
655000------556
000001------1
3003------3003
010101----10101
lecz program gubi się gdy wpisuje 0 i np. gdy wpisze 0101 to wypisze np.1924. Oto mój kod:
#include <iostream>
#include<stdio.h>
#include<stdlib.h>

long int liczba;
char pusty;

void lustro(int a)
{
int k;
while(a>0)
{
k=a%10;
a=a/10;

	if(k!=0)
		printf("%i",k);
}

}

int main(void)
{

scanf("%i", &liczba);
scanf("%c", &pusty);
lustro(liczba);
printf("\n\n");
system("pause");

}

0

Zacznijmy od tego, że masz błędny algorytm.

       if(k!=0)
            printf("%i",k);

Nie możesz pomijać każdego zera, patrz: 3003.

Poza tym styl pisania Twojego kodu zakrawa o VMkę PHP - napisz porządnie funkcję, która robi jedną rzecz, a nie baw się w zmienne globalne i printfowanie gdzieś nie-wiadomo-gdzie.

0

Ekhem
Wielki, ciężki, potężny i skomplikowany algorytm - początkującym radzę nie tykać nawet kijem!
Zostawiam dla adeptów na poziomie super-duper;

string s;
cin >> s;
s.erase(s.find_last_not_of('0')+1);
reverse(s.begin(), s.end());
cout << s;

A dla tych już całkiem mega...

string s;
cin >> s;
s.erase(s.find_last_not_of('0')+1);
for(auto it = s.rbegin(); it != s.rend(); ++it)
	cout << *it;

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