Kezdőoldal » Számítástechnika » Programozás » Ha két algoritmus között csak...

Ha két algoritmus között csak egy if feltételnyi különbség van, akkor meg tudom csinálni az alábbit?

Figyelt kérdés

Van két feladat, amely megoldása között csak egy kétszer előforduló if feltétel a különbség.

Példa:

Keresd meg a legolcsóbb 500 forint alatti terméket a tömbben!

vs.

Keresd meg a legolcsóbb 500 forint feletti terméket a tömbben!


Az lenne a célom, hogy a két feladathoz egy függvényt írok. Hogyan lehetne ezt megcsinálni? Arra gondoltam, hogy a feltételt egy bool változóban fogom tárolni és függvényhívás előtt a mainben definiálom a boolban a feltételt. Ez működik? Van ennél jobb megoldás? C++.


2020. jan. 14. 22:46
1 2
 1/13 anonim ***** válasza:

Ahelyett hogy bemásolnád a kódot regényt írsz.


"mainben definiálom a boolban a feltételt"

Hogy mi?

2020. jan. 14. 22:49
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:
Be fogom, amint gépközelbe jutok
2020. jan. 14. 23:20
 3/13 anonim ***** válasza:

csinálj egy függvényt egy int visszatérési értékkel és egy int paraméterrel (input értékkel). Az input int ha mondjuk "1" akkor legolcsóbb ha "2" akkor a legdrágább 500 ft alatti/feletti tömb indexet vagy konkrét összeget dobja vissza igény szerint.

Így egy függvényben meg tudod oldani mind a kettőt. Meghívásnál meg igény szerint 1 vagy 2 verziót hívod meg. Nem kell hozzá boolean.

2020. jan. 14. 23:54
Hasznos számodra ez a válasz?
 4/13 anonim ***** válasza:

Ahogy a hármas válaszoló írja, csak két dolgot kell másképp csinálnod:


1. A bemenő egyik paraméter a tömb és a másik a boolean.

2. A visszatérési érték az az elemi adattipus, amiből a tömböd is áll. Ha int akkor int, ha más akkor más.


Még annyit, hogy ha nem bool tipusú paraméterrel választod ki a keresési metódust, akkor legyen char (pl. 'U' és 'D'), de semmiképp sem int.


A char-ból is saját tipust illik, illene létrehozni, de sokkal jobb a boolean, mert az eleve csak két értéket vehet fel.

2020. jan. 15. 00:26
Hasznos számodra ez a válasz?
 5/13 A kérdező kommentje:

Holnap megpróbálok a kommentek alapján javítani. De ez az én kódom, amire gondoltam, de sajnos nem működik. Gondolom a mainben nem jó a feltetel1 feltetel2 változónál az arak[i], mert nem tud vele mit kezdeni, de lehet a függvény maga is rossz.


#include <iostream>


using namespace std;


int feltetelesMinValasztas(int tomb[], bool feltetel, int n);


int main()

{

int n;

cin >> n;

int arak[n];

for(int i=0;i<n;i++){

cin >> arak[i];

}


///1. feladat: Add meg a legolcsóbb 500 forint alatti termék árát!

int i=0;

bool feltetel1;

feltetel1 = arak[i]<=500;

int olcsobbMinimum;

olcsobbMinimum = feltetelesMinValasztas(arak, feltetel1, n);

cout << olcsobbMinimum << endl;


///2. feladat: Add meg a legolcsóbb 500 forint feletti termék árát!

bool feltetel2;

feltetel2 = arak[i]>500;

int dragabbMinimum;

dragabbMinimum = feltetelesMinValasztas(arak, feltetel2, n);

cout << dragabbMinimum << endl;

}


int feltetelesMinValasztas(int tomb[], bool feltetel, int n){

int minimum;

bool nincs = true;

int i=0;

while(i<n && nincs){

if(feltetel){

minimum = tomb[i];

nincs = false;

}

i++;

}


if(nincs){

cout << "Nincs a feltetelnek megfelelo elem" << endl;

}


for(;i<n;i++){

if(tomb[i]<minimum && feltetel){

minimum = tomb[i];

}

}

return minimum;

}

2020. jan. 15. 00:46
 6/13 A kérdező kommentje:

if(nincs){

cout << "Nincs a feltetelnek megfelelo elem" << endl;

}


Itt kimaradt egy exit vagy break.

2020. jan. 15. 00:51
 7/13 anonim ***** válasza:

Most lehet, hogy én nem értem a feladatot, de miért kell ezt ennyire megbonyolítani?


Csinálnék egy függvényt, aminek három paramétere van:


* Bemeneti tömb, amiben keresni kell.

* Egy második paraméter, ami meghatározza, hogy alatti vagy feletti termékeket keresek. (tetszőleges adattípus lehet, ahogyan tetszik, direkt nem határozom meg)

* Egy szám, hogy milyen érték alatt/felett keresek majd.


Ezután össz-vissz annyi a függvény, hogy lenne egy "output" nevű tömb, amibe ciklussal kigyűjtöm egyetlen if-else feltétellel a termékeket, majd a ciklus után egy return-el átadom az output tömböt a meghívónak.


Ha nem tesz semmi eleget a feltételnek, akkor értelemszerűen üres lesz az átadott tömb. Ezt nem külön bool-al meg nem tudom milyen varázslatokkal külön jelezni, csak simán meg kell vizsgálni a kapott tömböt, hogy van-e benne valami.


Egyébként ránézésre nem tűnik rossznak a kódod, de szerintem felesleges túl van bonyolítva.

2020. jan. 15. 00:57
Hasznos számodra ez a válasz?
 8/13 anonim ***** válasza:
Bocs, nem tömb, hanem egyetlen változó. Azt olvastam, hogy az 500 forint alatti termékeKEt kell kigyűjteni. :)
2020. jan. 15. 00:58
Hasznos számodra ez a válasz?
 9/13 anonim ***** válasza:

Helló!


A main a főprogramod. Onnan hívod meg a függvényedet, paraméterezve.


Ha a kérdésedben szereplő 500 nem konstans, akkor két paraméter helyett valóban hármat kell közölj a függvényeddel. A harmadik lesz a tömböd és a keresés iránya mellett az az érték is ami a kérdésedben 500.


Valahogy úgy kéne ezt, hogy a Main() legyen a forrás legalján, legfelül a deklarációk és a kettő között a függvénye(i)d.


A programod végrehajtása mindig a main()-nel kezdődik és (jó esetben) ott is ér véget. A függvényedet is a main-ből hívd meg, a tömb feltöltése után. A változóidat soha ne felejtsd el inicializálni (A ciklusváltozókon kívül, mert azokat úgy is inicializálod a használat során).


* inicializálás = értékadás.

2020. jan. 15. 01:19
Hasznos számodra ez a válasz?
 10/13 anonim ***** válasza:

"Gondolom a mainben nem jó a feltetel1 feltetel2 változónál az arak[i], mert nem tud vele mit kezdeni"


Így, ahogy mondod.


Neked kell egy függvény amiben benne van a minimum és a maximum keresés is.

Ennek a függvénynek a három paramétere:


1. Tömb amiben keres a függvény. Ez az arak[].

2. a keresés intervallumát beállító boolean érték. Default true.

3. Az érték ami alatt/fölött keres. Ez nálad most 500.


FuggvenyAmiKeres (arak, true, 500);

{

if true then {> 500} else {< 500}

}

2020. jan. 15. 01:31
Hasznos számodra ez a válasz?
1 2

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!