Hogy lehet megszámolni, hogy egy string tömbben hányszor szerepel egy szó, ha nem tudom, hogy hanyadik eleme a tömbnek a keresett szó?
Tehát pl van egy gyümölcsök tömb:
alma,narancs,banán,alma,kiwi,banán,narancs
És az int narancsdarab=0 változóba el szeretném menteni, hogy hány narancs van, az int almadarab=0 változóba pedig az almák számát, de nem tudom, hogy milyen sorrendben vannak a gyümölcsök a tömbben. Akkor ez hogyan oldható meg? (Egyébként C++)
"Tehát pl van egy gyümölcsök tömb:
alma,narancs,banán,alma,kiwi,banán,narancs "
Létrehozol egy ugyanekkora dbnevű tömböt, aminek minden eleme 0.
Tehát nem lesz külön narancsdb meg almadb változód.
Utána végigmész a másik tömbön.
Az i. elemet berakod egy string változóba. Mondjuk egy 'elem' nevűbe.
Ekkor végigmész a gyümölcs tömbön, és ha gyümölcs[i] egyezik az elem-mel, akkor a db[i]-t növeled eggyel.
Ez tehát két egymásba ágyazott ciklus lesz.
Aztán a végén bejárhatod mégegyszer a gyümölcs tömböt és mondjuk egy ilyet kiírhatsz:
gyülömcs[i] : db[i]
"#5: Ez mi akar lenni?"
Algoritmusnak hívják.
De hívhatod megoldási ötletnek is.
5: Hát ez elég tré megoldás.
Nem kell végigmenni semmin.
A stringek első karakterének vizsgálata elég, mivel ha az nem egyezik, akkor nyilván nincs azonosság. Ha egyezik, akkor kell csak tovább lépni.
Amúgy szép feladat - iskolás szinten -, lehet vele brillírozni.
#include <iostream>
#include <map>
using namespace std;
const int SIZE = 7;
string gyumolcsok[SIZE] = {"alma", "narancs", "banan", "alma", "kiwi",
"banan", "narancs"};
int main()
{
int i;
map<string, int> fruits;
map<string, int>::iterator it;
// Initialize the fruits list.
for (i = 0; i < SIZE; i++) {
fruits.insert(pair<string, int>(gyumolcsok[i], 0));
}
// Count items.
for (it = fruits.begin(); it != fruits.end(); it++) {
for (i = 0; i < SIZE; i++) {
if (gyumolcsok[i] == it->first) {
it->second += 1;
}
}
}
// Show item counts.
for (it = fruits.begin(); it != fruits.end(); it++) {
cout << it->first << "\t";
cout << it->second << " db\n";
}
return 0;
}
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!