z tablicy na liczbę

0

Mam tablicę intów tab[]={1,2,3,4} i chciałbym ją przepisać na liczbę i=1234. Jak to zrobić?

3

Chodzi o coś takiego?

accumulate(begin(tab1), end(tab1), 0, [](int t, int c){ return 10*t + c; })
auto main() -> int
{
	int tab1[] = {1,2,3,4,5};
	auto num1 = accumulate(begin(tab1), end(tab1), 0, [](int t, int c){ return 10*t + c; });

	DBG(num1);

	int tab2[] = {9,8,7};
	auto num2 = accumulate(begin(tab2), end(tab2), 0, [](int t, int c){ return 10*t + c; });

	DBG(num2);
}

http://melpon.org/wandbox/permlink/Uc5j6zyPgmXYS5oh

0

Nie do końca. Myślałem żeby mnożyć przez potęgi 10. I tak np 1234= 11000 + 2100 + 310 +41

1

ale przeciez to wlasnie robi @kq

0

można to prościej napisać?

1

mozemy Ci pomoc zebys sobie sam to napisal. Rozpisz algorytm co potrzebujesz zrobic (jak sam zauwazyles musisz pomnozyc dane liczby). Rozpisz krok po kroku co program musi robic. Gdy bedziesz miec caly program. Postaraj sie to zaimplementowac. Jezeli nie dasz rady to wklej algorytm + kod ktory napisales

3

Accumulate możesz zamienić na zwykłą pętlę, ale to zły pomysł (polecam fantastyczną prelekcję na ten temat: https://channel9.msdn.com/Events/GoingNative/2013/Cpp-Seasoning )

accumulate(begin(tab1), end(tab1), 0, [](int t, int c){ return 10*t + c; });

==

	int total = 0;
	auto func = [](int t, int c){ return 10*t + c; };
	for(auto it = begin(tab1); it != end(tab1); ++it){
		total = func(total, *it);
	}

==

	int total = 0;
	for(size_t i = 0; i < sizeof(tab)/sizeof(*tab); ++i){
		total = 10*total + tab[i];
	}

Ja bym tego zdecydowanie nie zaklasyfikował jako "prościej" (tylko coraz prymitywniej), ale co kto lubi...

0

Accumulate możesz zamienić na zwykłą pętlę, ale to zły pomysł

Zależy, czy się chce by kod był czytelny i zrozumiały, czy przekombinowany... ;-)

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