Dobrý den potřeboval bych poradit jak zjistit výskyt jednotlivých písmen v řetězci s1 a výsledek vytisknout do řetězce s2.
např. char s1[]= ("ahoj jak se mas");
tak aby to vytisklo: a3,e1,h1,k1,o1,j2,m1,s2
Děkuji za odpověď.
Dobrý den potřeboval bych poradit jak zjistit výskyt jednotlivých písmen v řetězci s1 a výsledek vytisknout do řetězce s2.
např. char s1[]= ("ahoj jak se mas");
tak aby to vytisklo: a3,e1,h1,k1,o1,j2,m1,s2
Děkuji za odpověď.
#4 JoDiK
V jedný knížce sem našel tohle:
main() /*pocitani cisel, oddelovacu, ostatnich*/
{
int c, i, nwhite, nother, ndigit [10];
nwhite = nother = 0;
for(i = 0; i < 10; i++)
ndigit [i] = 0;
while((c = getchar ()) != EOF)
switch(c)
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
ndigit[c-'0']++;
break;
case ' ':
case '\n':
case '\t':
nwhite++;
break;
default:
nother++;
break;
}
printf("digits = ");
for(i = 0; i<10; i++)
printf(" %d ", ndigit[i]);
printf("\nwhite space = %d, other =
%d\n", nwhite, nother);
}
#1 Karel
Třeba nějak takhle:
const char* s = "nhssahdatvhvmaljsjhbchgajadlHDSEEFz";
int pocty[27];
memset(pocty, 0, sizeof(pocty));
while (*s)
{
if (*s >='a' && *s <= 'z')
{
pocty[*s - 'a']++;
s++;
continue;
}
if (*s >='A' && *s <= 'Z')
{
pocty[*s - 'A']++;
s++;
continue;
}
s++;
}
for (int i = 0; i < 27; i++)
{
if (pocty[i] > 0)
printf("%c%d\t", 'a'+i, pocty[i]);
}
PS: těch 27 je, jak alespoň doufám:-) počet (anglických) písmen
Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz
#12 Karel
No nevím, ale když jsem výše uvedený kód vložil do main nové konzolové aplikace (vygenerované ve Visual C++ 2008), přidal memory.h (do stdafx.h), šlo to sestavit, spustit a vypsalo výsledky, samozřejmě ještě za kód přidat getchar nebo podobnou "zarážku".
Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz
#14 Karel
Před return 0; A pokud před tím načítáš znaky z klávesnice, tak možná bude potřeba getchar 2x za sebou, ten první sežere enter ze zadávání.
A samozřejmě getchar(); - tj s "volací" závorkou, jinak bys tam napsal jen nějaké číslo - adresu té funkce:-)
Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz
#16 Karel
vynuluje paměť a vloží (textově) obsah souboru na uvedené místo.
Pokud se chceš naučit programovat, musíš se naučit používat dokumentaci/help, kde je tohle popsané. U každé funkce je v dokumentaci (MSDN) popsán význam jednotlivých parametrů a také hlavičkový soubor ve kterém je fce deklarovaná (popř.je tam i kód funkce), a #include je určitě v jedné z prvních lekcí/stránek každé učebnice céčka.
Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku