Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

Miért nem jó az alábbi C++ feladat?

196
Hetek óta gondolkozom rajta de nem jöttem rá ... Mindenesetre a feladatra kapható pontszámok felét megkapom, de a másik felét nem.

A "megoldásom" a következő:


string* terel(const string* nyaj, unsigned& nyajhossz) const {


if(nyaj == NULL || nyajhossz == 0) {

nyajhossz = 0;
return nullptr;

}

unsigned kapacitas = this->terelo_kapacitas;
string *array = new string[nyajhossz];

int hova;
int mit = 0;
for(hova = 0; hova <= kapacitas; hova++){

while(mit < nyajhossz && nyaj[mit] == "") {

if(kapacitas >= 0) {
mit++;
}

}


if(mit == nyajhossz) {

break;
}
array[hova] = nyaj[mit];
kapacitas--;
mit++;


}


int i;
for(i = hova; i < nyajhossz; i++) {

if(kapacitas >= 0) {
array[i] = "";
kapacitas--;
}

}





nyajhossz = hova;
return array;

}

Ha esetleg megtudnátok mondani, hogy hol a hiba, vagy mit kell még kiegészíteni, azért nagyon hálás lennék!
Jelenleg 1 felhasználó nézi ezt a kérdést.
0
Felsőoktatás / Informatika

Válaszok

1
Hát először is az első for ciklusodban a hova értékét 0-tól kapacitás-ig (<=) futtatod, ami kapacitás+1 terelést jelentene.

De a ciklus végén ezt a kapacitás változót csökkented... ami számomra érthetetlen mért van... így elég fura dolog fog történni.
Minden egyes terelés után csökkented a kapacitást, tehát kb fele annyi lesz a végén mint amennyi volt kezdetben.

Pontosabban 1+kapacitás/2 lefelé kerekítve.

Azaz, ha a kapacitás 1, akkor 1 terelés történik. (Ha feltesszük, hogy van ennyi tagja a nyájnak)
Ha a kapacitás 2, akkor 2 terelés történik
Ha 3, akkor 2
Ha 4, akkor 3
...
Ha 8, akkor 5...

Tehát ez már így alapból nem jó.

Másik probléma, hogy a nem terelt állatokat utána csak simán át kéne másolni az eredmény tömbbe, de ezt nem teszed. (És nyilván ebben az esetben a nyájhossz megegyezik az eredeti nyájhosszal.

0