Karakter sorozatok kiírása?
Egy olyan programot szeretnék írni C++-ban ami karakter sorozatokat ír le 0-tól 9-ig, A-tól Z-ig.
Valahogy így gondoltam:
0
1
2
3
...
8
9
A
B
C
...
X
Y
Z
00
01
02
...
08
09
0A
0B
.......
Egészen addíg amíg el nem éri a 255db karakter hosszt.
Ebben tudna valaki segíteni??
Előre Köszönöm!!!
Egy lehetséges megoldás. A printf-en kívül nem használ semmilyen külső függvényt.
(Bocsi, hogy csak így ömlesztve, valószínűleg ronda lesz, de működik.)
Ízlés szerint lehet alakítani, hogy ne írja ki a vezető nullákat, 'str' inicializálás finomítás, stb.
#include <stdio.h>
#define DIGITNUM 8
#define LOOPS 128
int increment_digit(char *ch) // return: carry
{
switch (*ch)
{
case '9': *ch = 'A'; return 0; break;
case 'Z': *ch = '0'; return 1; break;
default: ++(*ch); return 0;
}
}
void increment(char *str)
{
char *digit_ptr = str + DIGITNUM - 1; // last character
while (digit_ptr >= str && increment_digit(digit_ptr--)) ;
}
int main()
{
char str[DIGITNUM] = "00000000";
int i;
for (i=0; i<LOOPS; ++i)
{
printf("%5d: %s\n", i, str);
increment(str);
}
return 0;
}
Köszönöm a segítséget!
A 6. válaszban a link is nagyon jól működik és a 12. válaszban leírt program is jól működik.
És tudom, hogy NAGYON sok idő, mire legenerálja az összes variációt, de nem megyek el 255 karakterig, egy kicsit csinálja magának, aztán leállítom és az amit megcsinált, kiíratom egy txt fájlba.
#12 voltam. Annyi, hogy ez nem a 255 karaktert generálja, csak egy keveset, és csak az elv miatt. A DIGITNUM-ot kell 255-re állítani, a main() elején az str-nek 255 db nullát megadni (bár akkor ezt nem így csináltam volna, na mindegy), és a LOOPS pedig elvileg (36^255)-1 kellene legyen (nemtom milyen típusban fér el), de inkább a karaktersor "ZZZ..." állapotát egyszerűbb figyelni. Ja, és ez nem is annyira C++, inkább C.
(Kíváncsi lennék egy benchmark-ra, hogy a C++ vagy a C verzió fut-e gyorsabban. Tényleg nem tudom, csak kíváncsi vagyok. Drukkolnék a C-nek, de lehet, hogy a másik gyorsabb. :))
"NAGYON sok idő, mire legenerálja az összes variációt"
Nem az a lényeg, hanem hogy Isten tárhelye sem lenne elég egy ilyen fájlhoz.
"Valakiknek nagyon nem jön be a C. Mi a gond? :)))"
Ne foglalkozz. Ebbe a kategóriába megy a lepontozás olyan emberektől akik még nem is szólnak hozzá. Ha ez jó érzéssel tölti el őket, csinálják.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!