Kezdőoldal » Számítástechnika » Programozás » Különböző elemek kiválasztása...

Különböző elemek kiválasztása egy tömbből egy másik tömbbe C++-ban?

Figyelt kérdés

Valaki tudja mi a gond a következő függvennyel?


void kulonbozo_elemek_kivalogatasa(int x[], int N)

{

int kulonbozo = 1;

int k[N];


for (int i = 1; i <N; i++) {

int j = 0;

for (j = 0; j < i; j++)

if (x[i] == x[j])

{

break;

}


if (i == j)

{

k[kulonbozo]=x[i];

kulonbozo++;

}


}


cout<<kulonbozo<<" ";

for(int i=1; i<kulonbozo; i++)

{

cout<<k[i]<<" ";

}


}



2020. jan. 1. 19:12
 1/8 anonim ***** válasza:
100%
Leírnád esetleg, hogy mi lenne a feladat?
2020. jan. 1. 20:04
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
65%
Nincs normàlis vàltozònèv, skopok lemaradnak, az algoritmust meg ùgy kell talàlgatni, hogy mit akar stb. De a legfőbb baja, hogy talàn azt a nyamvad j-t nem kène minden körben nullàzni, mert spoiler alert: ùgy soha nem lesz egyenlő i-vel, ami poènbòl helyből 1-ről indul. Amùgy az egèsz algoritmus ùgy rossz ahogy van, màrha egyàltalàn azt akarja, amire tippelek. Nyugodtan törölt az egèszet a francba ès kezd ùjra.
2020. jan. 1. 20:51
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
Igazából majdnem minden sorban van hiba, de nem érdemes részletezni, mert ez a program nem fogja kiválogatni a vektorból a különböző elemeket. Újra kell írni az egészet, de előtte szerintem gondold át hogyan kell működnie.
2020. jan. 1. 22:57
Hasznos számodra ez a válasz?
 4/8 tabaki ***** válasza:
75%

Laikusként nem érzem magamat hivatva az algoritmus szépségének elbírálására, de úgy látom, alapvetően működik. Igaz, nem adsz értéket k[0]-nak, így ott akármilyen szám lehet, ezen azonban szellemesen segítesz a kiíratásnál: Eleve a második elemtől (k[1]) indítod a ciklust, így a memóriaszemét nem fájdítja a fejedet. Kétségtelen, hogy a ciklus emiatt eggyel kevesebb számot írna ki a kelleténél, viszont ezt orvoslod azzal, hogy a hiányzó k[0] helyett ugyanannak a sornak az elejére beszúrod helyette a különböző elemek számát...

A fentiek értelmében javaslom, hogy k[0] inkább kapja meg x[0] értékét, a végén pedig 0-tól indexelve írasd ki az egész k[] tömböt. Ha az elemek számát is muszáj kiíratni, akkor azt külön sorban, esetleg útba igazító megjegyzés kíséretében tedd, hogy még véletlenül se higgye valaki, hogy az is a tömb eleme. Mindettől eltekintve én is ajánlom az alapos revíziót.

Mellesleg, a magam részéről nem bántam volna, ha azt a háromsoros maint is beleírod a kódba, ami az egészet nyomban kipróbálhatóvá is teszi, de ez a kis pluszmunka még nekem sem okozott gondot, a hozzáértő kollégák pedig talán meg is orroltak volna miatta, hogy még ennyit sem nézel ki belőlük...

2020. jan. 1. 23:27
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:
100%
Amit Tabaki írt, vagy, 'kulonbozo = 0' és 'int i = 0', így gyakorlatilag a belső ciklus nem fut le hiszen 0 < 0, és 0 = 0 feltétel teljesül. A kiiratást meg szintén 0-tól kezd.
2020. jan. 2. 05:30
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:
Köszönöm!:)
2020. jan. 2. 08:09
 7/8 tabaki ***** válasza:
13%
Valakinek megint fontosabb volt a lepontozásom, mint hogy megmagyarázza az okát. Ha hülyeséget írtam, nem az első eset, de Kérdező érdekében legfőképp ennek mibenlétére illenék fényt deríteni, nemde?
2020. jan. 2. 08:52
Hasznos számodra ez a válasz?
 8/8 tabaki ***** válasza:
41%
+ Na, amíg én dohogtam, azért akadt egy derék ember, aki fölfelé pontozott, köszönöm.
2020. jan. 2. 08:55
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!