Valaki segítene C++ programozásban?
"ö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
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]);
}
#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
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.
#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 ?
if (a=='h' || a=='H') és nem if('a==h || a==H')
A két aposztróf jelzi, hogy ez egy karakter.
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).
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, ", "));
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!