Kezdőoldal » Számítástechnika » Programozás » Valaki segítene C++ programozá...

Valaki segítene C++ programozásban?

Figyelt kérdés
Nem rég kezdünk el foglalkozni C++-al és feladatként kaptuk hogy késítsünk egy programot ami bekér egy betűt és azzal a kezdőbetűvel írja ki a napokat(Pl. megadjuk sz betűt és kírja hogy "szerda,szombat") Valaki letudná írni ezt ? Csináltam valami de szerintem nagyon rossz :D Ezért ha valaki leírná összetudnám vetni sajátommal :D
2013. jan. 18. 11:44
1 2
 1/14 anonim ***** válasza:

"összetudnám vetni sajátommal :D"

ja, vagy beadni helyette.. amúgy meg külön kéne írni :)



char c, *napok[] = {"Hetfo", "Kedd", "Szerda", "Csutortok", "Pentek", "Szombat", "Vasarnap"};


cin >> c;


for(int i=0; i<7; i++) if (napok[i][0]==c) cout << napok[i] << ' ';



mivel C-t használok, nem biztos, hogy minden c++ lehetőséget kihasználtam, de asszem valahogy így kéne

2013. jan. 18. 12:26
Hasznos számodra ez a válasz?
 2/14 anonim ***** válasza:

Lássuk csak, hozzávalók:

- szöveg bekérése bill.ről

- több ágú elágazás VAGY tömbkezelés + szövegkezelés


Egyszerűbb változat:

szöveg s = bekér_a_billentyűzetről();

ha (s == "h") kiír("hétfő");

különben ha (s == "k") kiír("kedd");

// értelemszerű folytatás

különben kiír("nincs ilyen betűvel kezdődő nap");


"Bonyolultabb" változat:

szöveg[] napok = { "hétfő", ..., "vasárnap" };

szöveg s = bekér_a_billentyűzetről();

for(i = 0..napok_száma-1) {

ha (napok[i]-nek prefixe s) kiír(napok[i]);

}

2013. jan. 18. 12:27
Hasznos számodra ez a válasz?
 3/14 anonim ***** válasza:
Másold be mit írtál.
2013. jan. 18. 12:47
Hasznos számodra ez a válasz?
 4/14 A kérdező kommentje:

#include <iostream>


using namespace std;


int main()

{

cout << "Adja meg a gondolt nap kezdobetujet" << endl;

char a;

cin >>a;

if(a='h,H')

cout << "Hetfo" << endl;

else

if(a='k,K')

cout << "Kedd" << endl;

else

if(a='s,S,sz,Sz,SZ')

cout << "Szerda,Szombat" << endl;

else

if(a='c,C,Cs,CS,cs')

cout << "Csutortok" << endl;

else

if(a='p,P')

cout << "Pentek" << endl;

else

if(a='v,V')

cout << "Vasarnap" << endl;

else

cout << "Ezzel a kezdobetuvel egy nap sincs" << endl;

return 0;

}


Nem kell kiröhögni tényleg most kezdtem :D

2013. jan. 18. 13:42
 5/14 anonim ***** válasza:

Az elgondolás végülis jó, habár meglehetősen egyszerű, ám a kód tele van hibákkal.

C++-ban az "=" értékadás, egyenlőségvizsgálatot a "=="-tal csinálunk.

Valamint char típus egy karaktert jelent, ergo "sz", "Sz" és hasonlók egész biztosan nem lesznek char típusú változóban.

Valamint ilyen sincs: 'h,H' ez azt jelentené, hogy egy olyan karakter, hogy h'H, ami inkább 3 karakter...

Ezt úgy tudod leírni, hogy vagy h, vagy H.

if (a=='h' || a=='H')

Ha ezeket javítod akkor már szépen működik, de lényegesen elegánsabb megoldás, ha egy tömbben tárolod a napokat, és kiíratod az összes olyat, ami ilyen betűvel kezdődik.

2013. jan. 18. 13:54
Hasznos számodra ez a válasz?
 6/14 A kérdező kommentje:

#include <iostream>


using namespace std;


int main()

{

cout << "Adja meg a gondolt nap kezdobetujet" << endl;

char a;

cin >>a;

if('a==h || a==H')

cout << "Hetfo" << endl;

else

if('a==k || a==K')

cout << "Kedd" << endl;

else

if('a==s || a==S')

cout << "Szerda,Szombat" << endl;

else

if('a==c || a==C')

cout << "Csutortok" << endl;

else

if('a==p || a==P')

cout << "Pentek" << endl;

else

if('a==v || a==V')

cout << "Vasarnap" << endl;

else

cout << "Ezzel a kezdobetuvel egy nap sincs" << endl;

return 0;

}


Kijavítottam így de még mindig nem jó.Akármit írok be kiírja hogy hétfő és ennyi.Probléma ?

2013. jan. 18. 14:05
 7/14 anonim ***** válasza:

if (a=='h' || a=='H') és nem if('a==h || a==H')

A két aposztróf jelzi, hogy ez egy karakter.

2013. jan. 18. 14:07
Hasznos számodra ez a válasz?
 8/14 A kérdező kommentje:
Igen közben rájöttem :D Végre jóóó .... tiszta egyszerű az egész és csak összezavarodom a sok jelben :D
2013. jan. 18. 14:12
 9/14 iostream ***** válasza:

Ha már elegancia, akkor tároljon egy karakterrel indexelt mapben string vectorokat. Akkor nagyjából 0 ciklussal meg lehet oldani a feladatot.

De mivel a hét napjai meglehetősen stabilnak tekinthetők, és előreláthatólag sosem lesz igény ennek megváltoztatására, szerintem teljesen jó megoldás az if-es táblázat (bár akkor már inkább switch és ugrótábla).

2013. jan. 18. 17:21
Hasznos számodra ez a válasz?
 10/14 iostream ***** válasza:

Ugyanitt: VÉGRE egy kérdező, aki tényleg csinált valamit, nem csak mással akarja megcsináltatni a házit.


Úgyhogy tessék, itt egy megoldás, amit most fordítás nélkül csak begépelek, ciklus nélkül. A betű fogalmát karakterre cserélem, az egyszerűség kedvéért. Szorgalmi feladat a betűs megoldás (tipp: nem olyan egyszerű, mint amilyennek elsőre tűnik, de nem rossz gyakorlófeladat).


Disclaimer: a megoldás just for fun, nem állítom, hogy ideális, leggyorsabb, legkisebb, legolvashatóbb, csak annyit, hogy ciklus és elágazás nélküli.



#include <map>

#include <vector>

#include <iostream>

#include <iterator>

#include <algorithm>


using namespace std;


int main()

{

map<char, vector<string>> HetNapjai{{'H', {"Hetfo"}},

{'K', {"Kedd"}},

{'S'}, {"Szerda", "Szombat"}},

{'C', {"Csutortok"}},

{'P', {"Pentek"}},

{'V', {"Vasarnap"}}};


char c;

cin >> c;

copy(HetNapjai[c].begin(), HetNapjai[c].end(), ostream_iterator<string>(cout, ", "));

}

2013. jan. 18. 17: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!