Kezdőoldal » Számítástechnika » Programozás » Hogyan kell nekiállni a...

Hogyan kell nekiállni a következő feladatnak?

Figyelt kérdés

Készítsen programot, mely bekér Keresztneveket, Autómárkát és azok Árait. Az adatfelvitel akkor fejeződik be, ha névnek * karaktert viszünk be.Az adatfelvitelt követően írassuk ki a felvitt adatokat soronként: pl.: Imre Audi 4100000 Kata Suzuki 1125000

A kiírást követően jelenjen meg a gépkocsik árának összege, átlaga, legkisebb és legnagyobb eleme. Majd pedig kérdezze meg a felhasználót, hogy növekvő vagy csökkenő ársorrendben szeretné kiíratni a felvitt adatokat. Ha „c” betűt választ a felhasználó írassa ki a felvitt adatokat ár szerint csökkenően ha pedig ”n” betűt nyom, akkor ár szerint növekvően.



2016. febr. 22. 21:47
1 2
 1/14 A kérdező kommentje:
C++-ban kellene,ha lehetséges
2016. febr. 22. 21:48
 2/14 anonim ***** válasza:
Senki se fogja megírni C++ban neked. Inkább bonsd elemekre a feladatot és úgy valósítsd meg. Sajnos én nekem agy zsibbadásom van (fáradtság), és csak bambulok ki a fejemből, pedig kirészletezném...
2016. febr. 22. 21:59
Hasznos számodra ez a válasz?
 3/14 A kérdező kommentje:
Félreértés ne essék, nem azt szeretném, hogy bárki is megcsinálja (bár annak igazán örülnék), hanem hogy az egyes részek hogyan kivitelezhetőek, például a végén a növekvő meg a csökkenő rendezés.
2016. febr. 22. 22:38
 4/14 anonim ***** válasza:

Ugyan ezt a kérdést nem te tetted fel pár órával ezelőtt is?


http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..


Úgy kell nekiállni hogy először beolvasod a kért adatokat. Az megvan már?

2016. febr. 22. 22:55
Hasznos számodra ez a válasz?
 5/14 A kérdező kommentje:
Valószínűleg osztálytársam volt :D igen, az már megvan
2016. febr. 22. 22:57
 6/14 anonim ***** válasza:
...utána elteszed egy-egy tömbbe, majd ha kész, végigszaladsz rajta és megvizsgálod.
2016. febr. 22. 23:00
Hasznos számodra ez a válasz?
 7/14 anonim ***** válasza:
100%

kezdetnek:

- Létrehozol egy struktúrát, aminek van Név, Márka, és Ár adattagja. Gondolom tanultátok, hogy mi az a struktúra, és hogy kell készíteni.

- Létrehozol egy vector-t, aminek az elemei az előbb megadott struktúrák lesznek. (Azért vectort, és nem tömböt, mert ezt dinamikusan bővítheted, ami most jól jön)


Aztán:

- beolvasod a nevet

Ha a név nem egyenlő *-al:

- beolvasod a márkát

- beolvasod az árat

- a beolvasott adatokat eltárolod egy structba, és beteszed a vectorba

- Ezt ismétled, amíg *-ot nem kapsz.


Ha a beolvasás kész:

- Deklarálsz egy átlag, összeg, minimum, és maximum változót. A Maximum és a Minimum nem a legnagyobb és legkisebb összeget fogja tartalmazni, hanem az indexét a legkisebb és legnagyobb elemnek.


Ezután végigiterálsz a vector minden elemén egy ciklus segítségével. A ciklus minden iterációjában:

- Kiírod az aktuális adatokat

- Hozzáadod az autó árát az összeghez

- Ellenőrzöd, hogy kisebb, avagy nagyobb-e a jelenlegi elem összege, mint a minimum/maximum. Ha igen, beteszed az aktuális elem indexét a min/max változóba.


Ha végigért a ciklus:

- Az összeget elosztod a vector elemszámával, és az eredményt az átlagba teszed.

- Kiírod az összeget, átlagot, minimum, maximum elemet.

- Bekéred a rendezési sorrendet.


és végül: A rendezés. Nem kell cifrázni, egy Minimum vagy Maximum rendezés teljesen jó lesz ide. A léyneg annyi, hogy minimum rendezés esetében pl végigmész a vectoron, megkeresed a legkisebb elemet, és kicseréled az első elemmel. Majd újra végigmész a vectoron, de mostmár a második elemtől kezdve, és azzal cseréled ki a minimumot, majd a harmadikkal, és így tovább. Mivel neked már megvan a minimum és a amximum elemek indexe, célszerű kezdésnek kicserélni őket a vector első, és utolsó elemével. Így az első és az utolsó elem már rendezve van, így ha n elemű a vektorod, akkor csak a 2. elemtől az n-1. elemig kell rendezni. Rendezed, és utána kiíratod őket sorban egy újabb ciklussal, mint már fentebb is írtam.

2016. febr. 23. 01:42
Hasznos számodra ez a válasz?
 8/14 anonim ***** válasza:

Vagy ha már nem assemblyben írja használja a nyelv nyújtotta funkciókat.


// Nem kell az összes include de ha fejből elkezdem kiválogatni biztos kimarad valamelyik


#include <algorithm>

#include <array>

#include <bitset>

#include <chrono>

#include <codecvt>

#include <complex>

#include <fstream>

#include <functional>

#include <iomanip>

#include <iostream>

#include <iterator>

#include <list>

#include <locale>

#include <map>

#include <memory>

#include <mutex>

#include <numeric>

#include <random>

#include <regex>

#include <set>

#include <unordered_set>

#include <sstream>

#include <string>

#include <thread>

#include <time.h>

#include <type_traits>

#include <unordered_map>

#include <vector>


struct UserData

{

using CarPriceType = int;


std::string firstName;

std::string carBrand;

CarPriceType carPrice;

};


std::istream& operator>>(std::istream& is, UserData& ud)

{

std::cout << "Add meg a keresztnevet: ";

std::cin >> ud.firstName;

if (ud.firstName == "*") { return is; }


std::cout << "Add meg az automarkat: ";

std::cin >> ud.carBrand;


std::cout << "Add meg az auto arat: ";

std::cin >> ud.carPrice;


return is;

}


std::ostream& operator<<(std::ostream& os, const UserData& ud)

{

return os << ud.firstName << ' ' << ud.carBrand << ' ' << ud.carPrice;

}


bool operator<(const UserData& lhs, const UserData& rhs)

{

return lhs.carPrice < rhs.carPrice;

}


bool operator>(const UserData& lhs, const UserData& rhs)

{

return lhs.carPrice > rhs.carPrice;

}


int main()

{

std::vector<UserData> userData;

for (UserData ud; std::cin >> ud && std::cout << '\n' && ud.firstName != "*";)

{

userData.emplace_back(ud);

}


std::copy(userData.cbegin(), userData.cend(), std::ostream_iterator<UserData>{std::cout, "\n"});


const auto allCarPrice = std::accumulate(userData.cbegin(), userData.cend(), UserData::CarPriceType{0}, [](auto&& val, auto&& ud) {return val + ud.carPrice; });

const auto allCarMeanPrice = allCarPrice / userData.size(); // Ha nem egeszre jonne ki, el lesz dobva a tizedesvesszo utani resz

const auto mostAndLessExpensiveCarPrice = std::minmax_element(userData.cbegin(), userData.cend());


std::cout

<< "Az osszes kocsi ara: " << allCarPrice << '\n'

<< "Az osszes kocsi aranak atlaga: " << allCarMeanPrice << '\n'

<< "A legolcsobb kocsi ara: " << mostAndLessExpensiveCarPrice.first->carPrice << '\n'

<< "A legdragabb kocsi ara: " << mostAndLessExpensiveCarPrice.second->carPrice << "\n\n";


std::cout << "Irj 'c' betut a csokkeno sorrendhez vagy 'n' betut a novekvohoz: ";

char choice;

std::cin >> choice;

if (choice == 'c') { std::sort(userData.begin(), userData.end(), std::greater<>{}); }

else if (choice == 'n') { std::sort(userData.begin(), userData.end()); }


std::copy(userData.cbegin(), userData.cend(), std::ostream_iterator<UserData>{std::cout, "\n"});


std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

std::cin.get();

}

2016. febr. 23. 01:50
Hasznos számodra ez a válasz?
 9/14 A kérdező kommentje:
Nagyon szépen köszönöm mindenkinek..:D
2016. febr. 23. 13:11
 10/14 anonim ***** válasza:

#8 És ennek most mi értelme is van? :D

Írtál egy kódot, ami:

1. Olyan szinten túlbonyolítja a feladatot, hogy tapasztaltabb programozóknak is időbe telik értelmezni, egy totális kezdőnek meg egyenesen lehetetlen, rengeteg teljesen fölösleges dolgot pakoltál bele, csak hogy még komplexebb legyen.

2. Pont a lényeget hagyja ki. Nagyon kényelmes meghívni az std::sort-ot, vagy a std::minmax_element-et, csak ebből a kérdező épp azt nem tanulja meg, hogy hogyan működik egy rendezőalgoritmus, vagy egy maximumkeresés. Nem véletlenül írtam neki példának a minimumkiválasztásos rendezést, az egy egyszerű, könnyen emészthető rendezőalgoritmus, amit ő is le tud implementálni.


Ehelyett te mit mutattál neki? A legrandomabb beépített függvényeket (emplace_back? Komolyan?), operátortúlterhelést (a szó jelentését sem érti a kérdező, nemhogy magát az eljárást), és egy nagy halom nyelvi elemet, ami totálisan értelmezhetetlen lesz számára.


Ha a tanára meglátja ezt a kódot, mint házi feladat, egy pillanatra sem lesz kérdéses, hogy ő írta-e. Hamar be is bizonyosodik majd, hogy nem. Erre a célra teljesen alkalmatlan tehát. Tanulni semmit nem fog ebből, mert egy mukkot sem fog kb érteni belőle. Akkor zárásként újra megkérdezem: Mi értelme is van ennek?

2016. febr. 23. 13:55
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!