Witam. Już drugi dzień borykam się z problemem napisania funkcji która będzie wywoływana w nieskończonej pętli. Jej zadanie ma polegać na liczeniu od 0 do jakiejś bardzo dużej liczby w formacie 0 1 … 9 nastepnie, 00 01 02 …99, 000 001 002 … 999 i tak dalej. Funkcja ma zwracać tablicę znaków tej liczby. Próbowałem funkcji sprintf z 02%d czyli wypisywaniem zer, lecz nic mi z tego nie wyszło. Proszę o pomoc.
Jak “bardzo nieskończona” ma to być funkcja? Użyciem printf z flagą “d” w zasadzie skończy się na nieco ponad 2 mld.
o tym, że z flagą d mogę wygenerować tylko 10 znaków. myślę, że do 32 znaków tablicy wystarczy.
Więc ja algorytm widzę tak:
Czy mógłbyś przedstawić swój sposób na jakimś innym przykładzie?
Tego się już nie da prościej wytłumaczyć, podałem ci algorytm… w każdym razie masz kod, bo to około 30 linijek. Dłużej mi zajmie szukanie jakiś wyjaśnień na zasadzie czemu 1+1 = 2.
#include <stdio.h>
int main(void) {
int idx = 0;
char arr[64];
memset(arr, '0', sizeof(arr));
while (idx < 3) {
print(arr, idx);
idx += inc(arr, idx);
}
return 0;
}
int inc(char* arr, int idx) {
if (arr[idx] < '9') {
arr[idx] = arr[idx] + 1;
} else {
arr[idx] = '0';
return idx > 0 ? inc(arr, idx-1) : 1;
}
return 0;
}
void print(char* arr, int idx) {
for (int i = 0; i <= idx; i++) {
putchar(arr[i]);
}
putchar('\n');
}
Sterowanie ilością liczbą (bo policzalne - self grammar nazi) znaków przez liczbę w pętli while w main.