Forum » Programiranje » 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.
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;
};
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…
- spremenil: buba švabe ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C (Izračun povprečja)Oddelek: Programiranje | 1637 (1271) | joze67 |
» | C strukture, kazalci naloga pomocOddelek: Programiranje | 1481 (1376) | DavidJ |
» | [C] najmanjse steviloOddelek: Programiranje | 1099 (960) | BigWhale |
» | C - pomočOddelek: Programiranje | 1466 (1206) | Thagirion |
» | C++ preštej število enkOddelek: Programiranje | 1318 (1101) | kihc |