» »

En problem v Cju

En problem v Cju

Dusan_83 ::

Potreboval bi idejo, kako v programskem jeziku C najenostavneje narediti program, ki bi kot argument dobil niz, kot rezultat bi pa izpisal crko, ki se v nizu najveckrat pojavi.

Imam pa se en problem: ne vem, kako bi *argv[1] recimo pretvoril v string oz. v char array? ukaza: char niz[]=argv[1] mi noce prevesti. A je sploh mozno ali moram uporabiti getchar() varianto?

Toliko zaenkrat in hvala.

buba švabe ::

Nič ne rabiš pretvarjat. Argv je polje stringov, se pravi polje polj znakov. Če hočeš narediti kazalec na recimo prvi niz, narediš to takole:

char *niz = argv[1];

Potem pa v for zanki enostavno šteješ kolikokrat se pojavi a, kolikokrat b in tako naprej dokler ne prideš do konca niza. Na koncu pa samo pogledaš katerih črk je bilo največ...

EDIT:
Sicer pa tu maš cel program:

#include <stdio.h>

int main(int argc, char *argv[]) {
int count[26];
int i, l, c, max;
char *niz = NULL;

if (argc < 2) {
printf("podaj niz!\n");
return -1;
}

niz = argv[1];

for (i=0; i<26; i++) count[i] = 0;

l = strlen(niz);
for (i=0; i<l; i++) {
c = niz[i];
if (c >= 'A' && c <= 'Z')
c -= 'A';
else if (c >= 'a' && c <= 'z') {
c -= 'a';
}
else
continue;

count[c]++;
}

max = 0;
c = 0;
for (i=0; i<26; i++) {
if (count[i] > max) {
max = count[i];
c = i;
}
}

printf("Najveckrat se pojavi crka %c\n", c + 'A');
return 0;
};
če hočeš razumet rekurzijo, moraš najprej razumet rekurzijo

Zgodovina sprememb…

Dusan_83 ::

aha... mi je zdaj jasno. najlepsa ti hvala.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C (Izračun povprečja)

Oddelek: Programiranje
141637 (1271) joze67
»

C strukture, kazalci naloga pomoc

Oddelek: Programiranje
51481 (1376) DavidJ
»

[C] najmanjse stevilo

Oddelek: Programiranje
101099 (960) BigWhale
»

C - pomoč

Oddelek: Programiranje
111466 (1206) Thagirion
»

C++ preštej število enk

Oddelek: Programiranje
111318 (1101) kihc

Več podobnih tem