View difference between Paste ID: ffb2cuXq and 4NwmCujM
SHOW: | | - or go back to the newest paste.
1
string* terel(const string* nyaj, unsigned& nyajhossz) const
2
{
3-
	if (nyaj == NULL || nyajhossz == 0) {
3+
	if (nyaj == nullptr || nyajhossz == 0) {
4
		nyajhossz = 0;
5
		return nullptr;
6
	}
7
8-
    unsigned kapacitas = this->terelo_kapacitas;
8+
    string *array = new string[nyajhossz];	// most az összes array[] elem üres string
9-
    string *array = new string[nyajhossz];
9+
	unsigned ujhossz = 0;					// ez az új tömb utolsó birkáját is tartalmazó hossz (most még nincs egy se)
10
 
11-
    int hova;				// hova kell rakni a következő terelt birkát az array-ba
11+
    int hova = 0;			// hova kell rakni a következő terelt birkát az array-ba
12-
    int mit = 0;			// hol van most az a birka a nyaj-ban
12+
    int mit;				// hol van most az a birka a nyaj-ban
13-
    for (hova = 0; hova <= kapacitas; hova++) {			// csak az első "kapacitás" darab birkát tereljük
13+
    for (mit = 0; mit < nyajhossz; mit++) {		// végigmegyünk az összes helyen
14-
        while (mit < nyajhossz && nyaj[mit] == "") {	// az üres heleyekt lépjük át mit-tel
14+
        if (nyaj[mit] == "")
15-
			if (kapacitas >= 0)		// hmm, ezt nem tudom, kell-e nézni? Szerintem nem...
15+
			continue;							// az üres helyekkel nem kell semmit se csinálni
16-
            	mit++;
16+
		// itt egy birka van!
17-
        }
17+
18-
        if (mit == nyajhossz)
18+
		if (hova < terelo_kapacitas) {			// ha van még kapacitás, akkor...
19-
 			break;										// nem volt már újabb birka
19+
	        array[hova] = nyaj[mit];			// ... terelünk, vagyis előre rakjuk a birkát
20
			ujhossz = hova + 1;
21-
        array[hova] = nyaj[mit];						// terelünk, előre kerül a birka
21+
			hova++;
22-
        kapacitas--;				// ezt miért csökkented?
22+
		} else {
23-
        mit++;
23+
	        array[mit] = nyaj[mit];				// egyébként ugyanott hagyjuk (persze át kellett rakni a mi tömbünkbe)
24
			ujhossz = mit + 1;
25
		}
26-
    for (int i = hova; i < nyajhossz; i++) {	// Ennek a teljes ciklusnak nincs sok értelme, eleve "" minden, amibe nem írtál semmit
26+
27-
 		if (kapacitas >= 0) {	// ennek a szerepét sem értem
27+
	// Ez működik akkor is, ha a nyaj végén lennének lyukak (a feladat szerint nincsenek),
28-
            array[i] = "";
28+
	// vagy ha nincs egyetlen egy birka sem (de a nyajhossz nem 0)
29-
            kapacitas--;  
29+
	// Nem kell ilyen feltételekkel működni, de így hibatűrőbb a kód.
30-
        }
30+
31
    nyajhossz = ujhossz;
32-
	// A kapacitas-on felüli birkákat itt a végén nem tetted át az array-ba! Azért nem kaptál max pontot
32+
33
}