Kezdőoldal » Számítástechnika » Programozás » 5 szám, ha 4 ugyanaz-->írjon...

5 szám, ha 4 ugyanaz-->írjon ki valamit, hogyan lehet leprogramozni (Sima c nyelv)?

Figyelt kérdés

Sziasztok,

A helyzet a következő:


írnom kéne egy c nyelű programot, a programnak van egy része, aminek a bemenete 5 véletlen szám(egész),az összeset megvizsgálom és ha találok benne 4 ugyanolyan számot

(pl bemenet:4 4 4 1 4)

akkor irja ki pl "ok".


Nem tudok rájönni egyszerűen, hogy hogyan kellene ezt megvizsgálnom(gondolom valamilyen if-el de nem jövök rá hogy hogyan).

Ha azt a részét a programnak valaki letudná nekem írni(vagy rávezetne legalább, hogy mit kéne alkalmaznom),hálás lennék érte.


Köszönöm előre is a válaszokat.



2019. máj. 28. 23:52
 1/8 anonim ***** válasza:
36%

Több módszer lehet.


Vedd észre, hogy csak akkor nem teljesül a feltétel, ha legalább 3 különböző szám létezik.

Tehát két változót definiálsz, az első első számot, a második a második előforduló, az elsőtől különböző számot reprezentálja. Nyilván akkor adsz nekik értéket, amikor először találkozol velük. Minden egyes inputra megvizsgálod, hogy megegyezik-e valamelyikkel. Ha nem egyezik meg, akkor nem teljesül. Ha végigfut az algoritmus, akkor pedig teljesül.


Létezik általánosabb algoritmus is, hogy létrehozol egy számláló tömböt. A tömbnek a mérete a bemenet értékkészlete. Tehát ha csak egyjegyű természetes számokat kaphatunk inputként, akkor 10 méretű tömb, mindegyik tagja egy-egy számnak az előfordulását számolja. Amint eléri valamelyik elem a négyet, akkor a folyamat megáll. Ez az algoritmus könnyen kiterjeszthető akármekkora inputra.

2019. máj. 29. 00:20
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:

A legegyszerűbb szerintem, ha sorba rendezed a tömböt (qsort) és csak akkor íratod ki, hogy "ok", ha a 0. és a 3. elem VAGY az 1. és a 4. elem értéke egyenlő.

Ez természetesen nem általános megoldás, de ebben az esetben működik.

2019. máj. 29. 15:15
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:

#1 Persze, és ha a teljes integer számtartományon akarunk vizsgálni, akkor csináljunk egy milliárdos nagyságrendű tömböt? :D


A legegyszerűbb megoldás egy map-hez hasonló adatszerkezet készítése. Hogy ne komplikáljuk túl a dolgot, engedjük el a faszerkezet, illetve a hashelés funkcionalitását, és egyezzünk ki egy egyszerű, lineáris keresésen alapuló megoldáson. Készítesz egy struktúrát ami tartalmazza a számértéket mint azonosító, és az előfordulását mint érték. Ezekből a structokból definiálsz egy N méretű tömböt (N az input mérete), és minden inputelem feldolgozásakor megnézed, hogy szerepel-e már a tömbben az adott elem, és ha igen, akkor növeled az előfordulását 1-el. Nyilván a tömb méretét folymatosan számon kell tartani. Ha neagyisten az előfordulása egy elemnek épp eléri a kitűzött célértéket (jelen esetben 4), akkor azonnal meg is állhat a feldolgozás.

2019. máj. 29. 15:17
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
Vagy ezerféle megoldás létezik rá. Attól is függ, milyen adattípusként kezeled a bemenő adatokat. Kezdők által talán a legelső dolog, ami beugrik, hogy egy ciklussal menjünk végig a számokon és számoljuk meg hány egyforma van.
2019. máj. 29. 18:56
Hasznos számodra ez a válasz?
 5/8 anonim ***** válasza:

Az nagyon rossz módszer, ha sorbarendezzük az elemeket, majd végigiterálunk a tömbön, megszámoljuk, melyik szám hányszor szerepel? Bevezetünk egy változót a maximum előfordulás tárolására.


Ha a maximum előfordulás értéke nagyobb v egyenlő, mint a darabszám, ahányszor egy számnak minimum szerepelnie kell, true-val tér vissza a függvény.



Amúgy megcsináltam ma az 1. által javasolt mádosik módszert.

A vizsgálandó tömb legkisebb eleme 1-10 között generálódott, a legnagyobb a legkisebb értéke és 100 között, a tömb hossza 1 és 50 között. Így elég stabilan működött.

Viszont igen, pl egész int tartomány esetén ez már nem lenne működőképes.



Közel se C-t tanulok amúgy, bár ez a feladat elég nyelvfüggetlen.

2019. máj. 29. 20:29
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:
100%

Mondjuk ez annyira nem nyelvfüggetlen, hogy pythonban egy sor a megoldás:

print ("ok" if len(set(a))<=2 else "")

De az általános megoldás is megadható egy sorban.

Nem mindegy, hogy milyen struktúrákat tartalmaz egy nyelv.

2019. máj. 29. 21:42
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:
100%
#6: EZ nem biztos, hogy jó, hiszen a halmaz mérete úgy is lehet kettő, ha az egyik elemből is kettő van, és a másikból is.
2019. máj. 30. 10:10
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:

ez kijött rendesen xD

[link]

2020. ápr. 15. 22:59
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!