Hirdetés
- Karácsonyi telefonajánló 2025
- Milyen okostelefont vegyek?
- Akciófigyelő: A One listázta be a legolcsóbb hajlítható telefont
- Samsung Galaxy A35 5G - fordulópont
- Mobil flották
- Poco X6 Pro - ötös alá
- Yettel topik
- Nem megy az AI az Apple-nek, hullanak a fejek
- iPhone topik
- Kezünkben a OnePlus 15 és az Oppo Find X9-ek
Új hozzászólás Aktív témák
-
LW
őstag
válasz
attis71
#2588
üzenetére
Szia!
Papír-ceruza módszert ajánlom. Vezesd vég az algoritmust a bemeneti számokkal és úgy tanulod meg a legjobban. A belső for-nak két megállási feltétele van. Egy a túlindexelés ellen, egy a kereséshez. Ha megtalálta, akkor megáll, ellenkező esetben a túlindexelés ellen lép ki. Utóbbi esetben a tömb elemszáma == index.
Hol tanulsz?
-
PumpkinSeed
addikt
válasz
attis71
#2573
üzenetére
Mivel a fejlődésed érdekében nem szeretném megcsinálni helyetted itt egy részletes magyarázat:
(Ha bárminemű hibát találtok benne javítsátok én se vagyok túl nagy szakértő, illetve a kódom nem egy professzionális kód amelynek a futásideje n elemű tömb esetén is 1 nanomásodperc, úgy kérném véleményezni, hogy kezdő vagyok.)Adott az a[] tömb amiben bizonyos számú szám tárolódik. Ezen kívül létrehozol egy tömböt ami ugyan annyi elemet tárol mint az a tömböd, legyen mondjuk res[sizeof(a)]; Ha jól tudom C++-ban a sizeof függvény határozza meg a tömb méretét. Azért kell ugyan annyi eleme legyen a result tömbnek mint az eredeti tömbnek, mert tegyük fel, hogy egy ismétlődő elem sincs ezért mindent át kell másolni. (Nem tudom, hogy C++-ban hogyan néznek ki a dinamikus tömbök, vagy vektorok, vagy van-e megoldás erre.) Majd következik a program lényegi része. Kezdődik egy for ciklussal, amely végig indexeli a result tömböt i-től sizeof(a)-ig. Mivel az első elem átmásolásakor biztos nem lesz ismétlődés így egy if feltételben akár meg is lehet adni, hogy csak a második lefutás után vizsgálja meg az értéket, így az első futás egyszerűen res = a(i);. A következő futás lesz az érdekes ugyanis ide kell egy új for ciklus ahol ismét beindexeled a res[] tömböt, de j-től csak i-ig mész el. Itt megvizsgálod, hogy a[k] == res[j];,(a k változó a későbbiekben lesz érdekes érdemes 1-re deklarálni.) ha igen akkor egy változót ami most mondjuk cnt növeled eggyel, cnt++. Ha ennek a for ciklusnak a végén a cnt értéke 0 akkor a res tömbben az adott a(i) még nem szerepel ha 0-nál nagyobb akkor már szerepel. Értelemszerűen jól működő kód esetén ez nem lehet nagyobb 1-nél. Majd a cnt változót nullázod, ugyanis ha mindig benne hagynád az értéket akkor az első egyezés után soha többet nem másolna át értéket.
Itt fontos rész következik, ha a cnt értéke mint már mondottam 0-nál nagyobb akkor k++ ha viszont 0 akkor előbb átmásolod res(i) = a[k]-val az értéket majd utána k++.Remélem érthető volt és tudtam vele segíteni.
-
PumpkinSeed
addikt
válasz
attis71
#2566
üzenetére
Én úgy valósítanám meg, hogy az egészet elkezdem belemásolni egy új tömbbe, és minden elem másolása előtt megnézem, hogy a régi tömbben benne van-e már az átmásolandó elem. Ha mondjuk benne van akkor megszakítod a ciklust, ha nincs akkor átmásolod. Ha elakadnál a megvalósítással kérdezz.

-
sssirius
tag
válasz
attis71
#2566
üzenetére
Ha nem fontos a sorrendhelyesség, akkor használj std::set-et. A tömb összes elemét belerakod a halmazba, majd utána kiíratod őket, és minden elem csak egyszer fog szerepelni.
Egyéb megoldás:int out[N];
int size;
bool found;
for(int i=0; i<N;i++) {
found = false;
for(int j=0; j<i; j++) {
if(A[i]==out[j]) {
found = true;
}
}
if( !found ) {
out[size]=A[i];
size ++;
}
}Csak figyelni kell rá, hogy nem az egész tömb tartalmaz "értelmes" adatot.
Nem próbáltam ki, de kb. stimmel.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Assetto Corsa Rally
- Futás, futópályák
- Épített vízhűtés (nem kompakt) topic
- One otthoni szolgáltatások (TV, internet, telefon)
- Autós topik
- Karácsonyi telefonajánló 2025
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Spórolós topik
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Ha a koreaiakon múlik, még évekig ingünk-gatyánk rámehet a memóriákra
- További aktív témák...
- XPS 15 9510 27% 15.6" FHD+ IPS i7-11800H RTX 3050Ti 32GB 512GB NVMe ujjlolv IR kam gar
- HP 17-CP0678ng (Ryzen7 / 32GB DDR4 / 17,3" FHD / VEGA 8 2GB / 512GB SSD / Win11 / ÁFA)
- 5G Lenovo ThinkPad P14s Gen 3 Intel Core i7-1280P Nvidia T550 32GB 512GB 1 év teljeskörű garancia
- 5G Lenovo ThinkPad P14s Gen 3 Intel Core i7-1280P Nvidia T550 32GB 1000GB 1 év teljeskörű garancia
- Samsung UE50NU7022 125 cm / 50 4K UHD Smart TV 6 hó garancia Házhozszállítás
- Olcsó laptop! Lenovo Ideapad 1 15AMN7! AMD 7120U / 4GB / 128 SSD
- Laptop felvásárlás , egy darab, több darab, új , használt ! Korrekt áron !
- GYÖNYÖRŰ iPhone 13 mini 256GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3407, 100% Akksi
- AZONNALI SZÁLLÍTÁS Eredeti Microsoft Office 2019 Professional Plus
- ÚJ BONTATLAN Apple Macbook Air 15,3 M4 10C CPU/10C GPU/16GB/256GB - Silver - HUN- MW1G3MG/A 3 év gar
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi



