
C - retazce
Ahoj mal som spravit program ktory urci presny pocet jednotlivych znakov vo vete, a napise jednotlive znaky a ich konkretny pocet kolko ich je. Vsetko slape ale pred tym mi to napise jednotku a neviem preco len tak odveci nevie niekto??
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "retazec.h"
int main()
{
const int MAX=40;
char veta[MAX];
printf("Zadaj vetu: ");
fgets(veta,MAX,stdin);
rozbor(veta);
return 0;
}
void rozbor(char veta[])
{
int dlzka=strlen(veta);
int i=0;
int j=0;
int skuska=0;
int pocet=0;
char znak=0;
while(i<177)
{
for(j=0;j<dlzka;j++)
{
if(veta[j]==znak)
{
pocet++;
skuska=1;
}
}
if(skuska==1)
{
printf("%c %d\n",znak,pocet);
}
skuska=0;
pocet=0;
i++;
znak++;
}
}
lebo pocitas aj CR a LF znaky a vypisujes ich debilne pomocou %c
(BTW. mas tam zbytocne dve premenne i a znak ktore znamenaju uplne to same)
Co je CR a LF znak?
ascii tabulku si najdi na google.
vsetky znaky pod 32 decimalne su netlacitelne. Tak sa nesnaz ich tlacit cez %c
len tak mimochodom, debugger pouzivat nebudes ani za svet?
jaj no jasne tie prve znaky tam zaratavat nemusim a este mi to pocita aj jeden z nich. Este som sa chcel spitat ak to nerobi velke starosti ako spravim aby program triedil tie pismena podla abecedy ale Velke aj male pismena dokopy??
No ten debugger vyzera zlozito ako som na to pozeral :D Ja neviem ked budem mat viac casu sa na to este kuknem teda :D
Debugger je možná složitý, ale práce bez něj je mnohem složitější.
prd je zlozite, v zdrojaku na nejakom mieste kde chces debugovat pravy klik - set breakpoint, a potom menu debug-go. Az to zastane na breakpointe mozes "step into" alebo "step over" a pozerat si premenne atd
if(tolower(veta[j])==znak)
To iba vsetky Velke pismena v retazci da na male nie??
chcel si pocitat velke a male dokopy. Ked nie tak potom ja neviem co chces.
No chcel som aby to triedilo podla abecedy aj velke aj male tj. aAbBcC...xXyYzZ lebo normalne to robi abc...xzyABC....XYZ
Tak si to v tom poradi aj testuj.
if(znak>='A'&&znak<='Z')
si otestujes a vypises aj pocet pre (znak-('a'-'A'))
a potom
if(znak>='a'&&znak<='z')
nebudes robit nic.