Kezdőoldal » Számítástechnika » Programozás » Hogy lehet megvalósítani a...

Hogy lehet megvalósítani a ismétlődés kiszűrését?

Figyelt kérdés
Nem vagyok egy nagy kódoló. Annyi lenne a lényeg hogy olyat akarok írni hogy van egy tíz elemű tömböm azokba veszek fel számokat és ha egy érték szerepelt már akkor addig kéri be az elemet amíg az nem egyenlő. próbáltam do while-al while-al . Főprogramba akarom megírni, bár egyszer próbáltam metódussal és azzal is befuccsolt a program.
2015. okt. 23. 14:57
 1/7 anonim ***** válasza:

Egy do..while elég, ahol a kilépési feltétel az, hogy (i = bevitt_elem_indexe) VAGY (aktuális tömbelem = bevitt új elem). Fontos a sorrend, hogy ne teszteljünk tömbön kívüli indexű elemet.


Nyilván a ciklusmagban inkrementálsz egy i változót, amit a ciklus előtt inicializálsz (célszerűen -1-re, mert hátultesztelős ciklus azzal indít, hogy hozzáad 1-et, gondolom 0-tól indexeljük a tömböt, melyik nyelv ez?).


Maga az ellenőrzés annyi, hogy i kisebb-e a bevinni kívánt elem indexénél. Mert ha nem, akkor végigpörgettük a tömböt, tehát nem volt egyezés.


Ha a nyelvedben van halmaz típus, és csak beviszel elemeket, nem szabad törölnöd utána, akkor jó dolog egy halmazba is bedobálni a bevitt elemeket a tömb mellett, és csak tesztelni, hogy benne van-e.

2015. okt. 23. 15:13
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

Legtöbb nyelv támogatja a halmazok használatát (set) ami többek között azért jó mert egy elemet csak egyszer tesz be, azaz minden eleme egyedi. Akkor a program így néz ki:


Létrehozol egy halmazt;

Amíg a halmazod elemszáma kisebb mint 10:

. . Bekérsz egy számot;

. . Berakod a halmazba.


Másik lehetőség hogy valamilyen dinamikus tárolóval csinálod (lista, vektor vagy amit támogat a nyelv), ekkor a kódod annyival egészül ki hogy a berakás előtt megnézed egy ciklussal vagy egy beépített metódussal hogy a listád hogy tartalmazza e az elemet:


Létrehozol egy listát;

Amíg a listád elemszáma kisebb mint 10:

. . Bekérsz egy számot;

. . Megnézed hogy a listád tartalmazza e már;

. . Ha nem tartalmazza:

. . . . Berakod a listába.


Harmadik lehetőség amikor valóban tömbbel csinálod. Ekkor megint csak ki kell egészíteni az előzőt, egy változóval tárolni kell a tömb elemeinek számát és növelni azt, ha új elemet tettél a tömbbe:


Létrehozol egy tömböt;

Létrehozod a tömb méretét ami kezdetben 0;

Amíg a tömb elemszáma kisebb mint 10:

. . Bekérsz egy számot;

. . Megnézed hogy a tömb tartalmazza e már (0-tól "méret-1"-ig mész);

. . Ha tartalmazza:

. . . . Berakod a tömb következő helyére, amit a mérete határoz meg;

. . . . Növeled a tömb méretét tároló változót.

2015. okt. 23. 15:13
Hasznos számodra ez a válasz?
 3/7 SimkoL ***** válasza:
Ha megadod a nyelvet kapsz konkrét példát, mintát.
2015. okt. 23. 15:25
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:
c#
2015. okt. 23. 15:59
 5/7 anonim ***** válasza:

Haha működik a Simko csali. Amint meghallotta van kód arra reagált, nem megpróbálta megoldani a többi válasz alapján vagy esetleg megköszönni a segítséget :D Minek törje magát ha lesz kód..


Szeretném látni a próbálkozásaidat és azt hogy az előző válaszok alapján mit hoztál össze mielőtt segítenénk megoldani.

2015. okt. 23. 16:53
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:

static void Main(string[] args)

{

SortedSet<double> szamok = new SortedSet<double>();

for(string s; szamok.Count < 10;)

{

Console.WriteLine("Add meg a {0} szamot: ", szamok.Count + 1);

s = Console.ReadLine();

try

{

if(!szamok.Add(Int32.Parse(s)))

{

Console.WriteLine("Ez a szam mar szerepel!");

}

}

catch (Exception)

{

Console.WriteLine("Csak szamokat adhatsz meg!");

}

}

}

2015. okt. 23. 17:22
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:

Nincs itt semmiféle csali nem sikerül visszaírnom bővebben :) amúgy így megoldottam csak 2 for ciklus meg do while kellett:


int n = 3;

int[] t = new int[n];

Random r = new Random();

for (int i = 0; i < t.Length; i++)

{

int seged = 0; // segéd alapértékbe állítása

bool letezik; // bool változó létrehozása, ez fogja ellenőrizni a létezését az ismétlődésnek

int j; // második ciklus változó

do

{

letezik = false;

Console.WriteLine("Add meg {0}. elemet: ",i);

seged = r.Next(0, n + 1);

//seged = int.Parse(Console.ReadLine());

for (j = 0; j < t.Length; j++)

{

if (seged == t[j]) letezik = true;

}

}

while (letezik);

t[i] = seged;

}

2015. okt. 24. 07:59

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!