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

Sortowanie podanej przez uzytkownika liczby i tworzenie nowej

Object Storage Arubacloud
0 głosów
290 wizyt
pytanie zadane 5 czerwca 2017 w C i C++ przez CrossIT Nowicjusz (140 p.)
czesc, mam pytanie co do programu, teoretycznie działa, ale..

Ma byc tak: jesli wpiszemy liczbe  to zwroci nowa liczbe sortujac jej posczegole liczby.

np. 878201 to bedzie 12788

Napisalem to tak, ale czy mozna inaczej sie dostac do poszczegolnych cyferek bez konwertowania na stringi? np. jesli wymog bedzie ze tylko podajemy int i zwraca int. Ponadto gdy wpisze np. 55555555555555 to program zwraca dziwne liczby :D

kod:

#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;

void zamiana(string tab,int roz){

    for(int j=0; j<roz;++j){
            for(int i=0; i<roz-1;++i){

                if(tab[i]>tab[i+1]){
                    swap(tab[i],tab[i+1]);
                }
            }
    }
    for(int i=0; i<roz; i++){
        if(tab[i]=='0')cout<<"";
        else
            cout<<tab[i];
    }
}

int main()
{
    int liczba;
    char buffor[32];

    cout << "podaj liczbe ";
    cin>>liczba;

    itoa(liczba,buffor,10);
    string liczba1=(string)buffor;

    int roz=liczba1.length();

    zamiana(liczba1, roz);

    return 0;
}
komentarz 5 czerwca 2017 przez niezalogowany
Trochę źle sformułowane zadanie, bo sortujemy cyfry tej liczby, nie ma czegoś takiego jak "liczba liczby"

btw https://forum.pasja-informatyki.pl/faq#jak-wstawic-kod-zrodlowy
komentarz 5 czerwca 2017 przez d0n Mądrala (6,440 p.)
Gdy wczytujesz typ int, to nie mozesz przekoroczyc 2 * 10^9 bo takie jest gorne ograniczenie int'a, jak wczytasz string nie bedzie problemu.

1 odpowiedź

0 głosów
odpowiedź 6 czerwca 2017 przez j23 Mędrzec (194,920 p.)

(...) ale czy mozna inaczej sie dostac do poszczegolnych cyferek bez konwertowania na stringi?

Można, ale w praktyce sprowadzi się to do tego samego.

komentarz 6 czerwca 2017 przez Wiciorny Ekspert (269,710 p.)
Można stosując operacje modulo, lub operacje z bitowym przesunięciem- ale strasznie długi i mało czytelny kod by to był.
komentarz 6 czerwca 2017 przez j23 Mędrzec (194,920 p.)
edycja 6 czerwca 2017 przez j23

Strasznie długi? Bez przesady. Tylko parę linijek ;)

	unsigned int v = 878201; //<---
	unsigned int tab[numeric_limits<unsigned int>::digits10 + 1];
	unsigned int n = 0;

	while(v != 0) { tab[n++] = v % 10; v /= 10; }

	sort(tab, tab + n);

	for(int i = 0; i < n; ++i) { v *= 10; v += tab[i]; }
	
	cout << v << '\n';

 

Podobne pytania

0 głosów
2 odpowiedzi 7,306 wizyt
0 głosów
1 odpowiedź 250 wizyt
pytanie zadane 11 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)
0 głosów
1 odpowiedź 201 wizyt
pytanie zadane 11 czerwca 2016 w C i C++ przez VitGryfny Użytkownik (620 p.)

92,555 zapytań

141,404 odpowiedzi

319,558 komentarzy

61,940 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...