Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[C++] Jak zamienić kilka liczb na cyfry i władować je do tablicy?


Rekomendowane odpowiedzi

Opublikowano

Mam 2 inty.

 

int _1 = 123

int _2 = 456

 

i tablicę 6-elementową.

 

int tab[6] = {0}

 

 

Co zrobić, żeby te inty podzieliły się na pojedyncze cyfry i wskoczyły po kolei do tablicy, żeby to wyglądało tak:

 

tab[0] == 1

tab[1] == 2

tab[2] == 3

tab[3] == 4

tab[4] == 5

tab[5] == 6

Smutek to skutek chęci w kontekście skutku

raczej niefrasobliwej wzglądu o treści zgryźliwej

ma postać walca co jeździ nam po palcach.

Weteran
Opublikowano

Hmmm...

Może coś takiego:


#include <iostream>

using namespace std;

int NumCount(int i)
{
   int j = 0;
   while(true)
   {
       if(i == 0)
           break;

       i/=10;
       j++;
   }
   return j;
}

int GetNum(int i, int pos)
{
   int x = 10;
   for(int j = 0; j < pos; j++)
   {
       x*=10;
   }
   i = i / (x/10);

   return (((float)i/10) - (i/10))*10;
}

int* GetArray(int i)
{
   int count = NumCount(i);
   int* ary = new int[count];
   for(int j = 0; j < count; j++)
   {
       ary[j] = GetNum(i,j);
   }
   return ary;
}

int main()
{
   int* a = GetArray(12034);
   return 0;
}

Można jeszcze przekonwertować na sting, a potem po kolei z niego pobierać znaki, ale tak jest chyba 'fajniej'.

Opublikowano

Przekombinowane niesamowicie

 

int* convertInt(int number)
{
   int digits = 0,tmp = number;
   while(tmp!=0)
   {
       tmp /= 10;
       digits++;
   }
   int *result = new int[digits];
   while(number!=0)
   {
       result[digits-1] = number%10;
       number /=10;
       digits--;
   }
   return result;
}

int main()
{
   int *pointer;
   pointer = convertInt(15523231);
   for(int i=0;i<8;i++)
   {
       cout << pointer[i];
   }
   delete[]pointer;
   return 0;
}

 

Osobiscie wolalbym to zrobic na vectorze, bo taki sposob jest troche nieladny. Najlepiej by bylo jeszcze zwracac rozmiar przez referencje, bo takto trzeba recznie podawac.

 

Ps. To forum nie lubi kodu z Qt chyba ;) formatowanie calkowicie padlo.

Opublikowano

Wszystkie kody dłuższe od trzech linijek są przekombinowane, po co reimplementować koło?

Rozwiązania są dwa:

 

Pierwsze, bez STLa:

itoa(int_1, twoja_tablica_char, 10);
itoa(int_2, twoja_tablica_char+3, 10);

 

Oraz drugie, poprawniejsze:

std::stringstream ss; 
std::string str(ss); 
ss << int_1 << int2;
str.c_str(); // zwraca char*

Ta sygnatura jest pusta.

Opublikowano

W tym przypadku dlatego ze strumienie ogolnie sa dosyc wolne, a np. Qt juz nie wspiera itoa ani atoi, i nie mozna tych funkcji uzywac przynajmniej u mnie. Tak wiec piszac przykladowo czesc wiekszego algorytmu do zadania z ramami czasowymi, lepiej uzyc wlasnego sposobu. Jesli nie zalezy mu na czasie oczywiscie moze uzyc strumieni.

 

Ps. Strumienie uzyte przez Ciebie nie sa czescia stla. STL to zbior algorytmow i kontenerow. Strumienie natomiast sa czescia biblioteki IOstream.

http://pl.wikipedia.org/wiki/Standard_Template_Library

 

biblioteka C++ zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe do użycia w programach.

 

@Down

Szkoda nawet posta na odpowiadanie tobie(umyslnie z malej). Nie mam zamiaru sie sprzeczac z kims takim.(umyslnie podkreslone)

Opublikowano

@up qt nie wspiera ?

#include<libc\stdlib.h>

 

A czym jest string jak nie kontenerem, i czym są strumienie jak dostępem do tego kontenera, więc na jakiej podstawie twierdzisz że nie są częścią STL'a ?

Zamykam temat, bo autor nie trzyma poziomu.

....

Polityka forum zakazuję nam zamykać tematy, tylko dlatego, że są na niskim poziomie.

I lold.
Opublikowano

Ja bym to zrobił moim głupim sposobem - sprintf żeby przekonwertować liczbę na tablice charów i od każdego elementu tablicy odjąć kod ascii liczby '0'

Twoja stara robi catch the clowny w Game Makerze.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...