• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odwacanie kolejności cyfr w liczbie

HackNation - ogólnopolski hackathon
0 głosów
6,939 wizyt
pytanie zadane 2 sierpnia 2018 w C i C++ przez Nowacx02 Obywatel (1,060 p.)
Witam robię zadanie w którym należy odwrócić kolejność cyfr w liczbie np. 699<--->996. Czy istnieje jakaś metoda która rozwiązałaby mój problem?

2 odpowiedzi

+1 głos
odpowiedź 2 sierpnia 2018 przez profesorek96 Szeryf (91,400 p.)
Tak istnieje metoda w znaczeniu sposób. Są nawet dwa jeden to przyjąć liczbę jako string i go odwrotnie wypisać cy przepisać do innego stringa a drugaa to z modulo 10 jednak tutaj musisz zwrócić uwagę na znak 0.
komentarz 2 sierpnia 2018 przez Nowacx02 Obywatel (1,060 p.)
Podałbyś przykład z tym modulo?
komentarz 2 sierpnia 2018 przez Nowacx02 Obywatel (1,060 p.)
bump
1
komentarz 2 sierpnia 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)
edycja 2 sierpnia 2018 przez Eryk Andrzejewski

Z tym modulo to na szybko napisałem w taki sposób:

#include <iostream>

int main()
{
	unsigned number = 1234567;
	unsigned base = 10;

	do
	{
		std::cout << number % base;
		number /= base;
	} while (number);
}

Działa to tak, że operacja modulo % baza systemu liczbowego (w naszym przypadku system dziesiętny, więc bazą jest 10) zwraca ostatnią cyfrę liczby. Następnie dzielę daną liczbę przez 10, by pozbyć się ostatniej cyfry (a część ułamkowa wyniku "przepada", ponieważ operujemy na zmiennej typu całkowitego). Pętla wykonuje się dopóki nasza liczba nie będzie zerem (a jeśli będzie zerem, to znaczy że nie ma już żadnych innych cyfr do wypisania).

komentarz 2 sierpnia 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Ze stringiem będzie to natomiast wyglądało tak:

#include <iostream>
#include <string>
#include <algorithm>

int main()
{
	int number = 1234567;
	std::string number_as_string = std::to_string(number);
	std::reverse(number_as_string.begin(), number_as_string.end());

	std::cout << number_as_string;
}

Konwertujemy liczbę do łańcucha znaków (std::string). Następnie korzystamy z funkcji, która odwraca elementy łańcucha (znaki) kolejnością. Na końcu wypisujemy odwróconą liczbę.

Można też zamiast korzystać z tej funkcji odwracającej po prostu wypisać sobie przy pomocy pętli, znak po znaku - ale od końca (począwszy od ostatniego elementu, skończywszy na pierwszym).

0 głosów
odpowiedź 2 sierpnia 2018 przez mokrowski Mędrzec (158,940 p.)

Nie wiem w jakim celu ta konwersja do string. Jedyne usprawiedliwienie to potencjalne zachowanie zera wiodącego (które było ostatnie). Ale pytanie było jasne o cyfry w liczbie:

#include <iostream>

unsigned revValue(unsigned value) {
    unsigned base = 10;
    unsigned result = 0;
    while(value != 0) {
        result = result * base + value % base;
        value /= base;
    }
    return result;
}

unsigned revValueRec(unsigned value, unsigned v = 0) {
    return value != 0 ? revValueRec(value / 10, v * 10 + value % 10) : v;
}

int main() {
    unsigned value = 912913;
    std::cout << revValue(value) << '\n';
    std::cout << revValueRec(value) << '\n';
}

BTW: Oczywiście sprawdzanie warunku value != 0 wydaje się trochę zachowawcze ale niech już będzie "edukacyjnie".

Podobne pytania

0 głosów
2 odpowiedzi 615 wizyt
pytanie zadane 30 listopada 2023 w C i C++ przez maxkolanko1998 Gaduła (3,230 p.)
0 głosów
3 odpowiedzi 2,080 wizyt
0 głosów
4 odpowiedzi 30,330 wizyt
pytanie zadane 3 września 2015 w C i C++ przez karmar435 Nowicjusz (240 p.)

93,624 zapytań

142,544 odpowiedzi

323,031 komentarzy

63,129 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 968p. - dia-Chann
  2. 959p. - DziarnowskiJ
  3. 941p. - Łukasz Piwowar
  4. 940p. - CC PL
  5. 930p. - Maurycy W
  6. 913p. - Tomasz Bielak
  7. 913p. - Adrian Wieprzkowicz
  8. 906p. - ssynowiec
  9. 899p. - raydeal
  10. 889p. - rucin93
  11. 885p. - Dominik Łempicki (kapitan)
  12. 878p. - Mariusz Fornal
  13. 874p. - robwarsz
  14. 847p. - Grzegorz Aleksander Klementowski
  15. 649p. - Michal Drewniak
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...