C++: Hogyan tudnám az alant listázottakat megoldani? Nem vagyok egy hű de nagy profi. Hogy gyakoroljak, szeretnék magamnak egy adatbázist létrehozni a szükséges adatokkal, ennek csírája ez a kis programrészlet.
A program:
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "Segítséget szeretnél, vagy új parancsot akarsz hozzáadni az adatbázishoz?" << endl;
cout << "Ha parancsot akarsz hozzáadni, akkor nyomd meg ezt: +" << endl;
cout << "Ha böngészni szeretnél, nyomd meg ezt: h" << endl;
string decision;
cin >> decision;
if (decision == "+")
{
cout << "Írd be, milyen parancsot szeretnél hozzáadni!" << endl;
ez a része egy külső szövegfájlt fog írni, amit a lentebbi olvasni fog]
}
if (decision == "h")
{
cout << "Írd be, melyik parancsot szeretnéd megtekinteni!" << endl;
string parancs;
cin >> parancs;
[ez a része majd a külső szövegfájlból fogja olvasni, ha eljutok addig]
}
return 0;
}
Elsődleges kérdés: miért nem aktiválódik a két if parancs közül az, amelyiknek éppen kellene (mert a sor mindössze, amit bekértem, csak egy h-t vagy +-t tartalmaz)?
Másodlagos: a decision változónál hogyan érhetem el, hogy egy gombnyomás után már aktiválódjon (ahelyett, hogy egy sort olvasna, csak egy karaktert)? Ez C#-ban a Console.readkey parancs volt.
A string nem így működik, csak egy tömb elejére mutató pointer. Ha összehasonlítani akarsz: strcmp()
Sokat lendítene a helyzeteden ha megtanulnál keresni. A keresés közben is ragad rád valami, sokkal gyorsabb (a sokadik alkalom), gyakoratilag nincsen olyan téma amit itt megtudunk válaszolni de nincsen belőle 100 oldal angolul.
Google <-
C++ string handling
C++ readkey
"A string nem így működik, csak egy tömb elejére mutató pointer. Ha összehasonlítani akarsz: strcmp() "
Szeretnélek kijavítani. A string egy osztály, beépített compare és operator== metódusokkal. Amire the gondolsz az a char[]. A kérdező jól írta meg ezen részét.
Kérdező: Ha az első szó + vagy h akkor aktiválódnia kéne. A cin a következő whitespace-ig olvas, ez lehet egy szóköz, vagy akár egy soremelés. A cin használata amúgy ellenjavallott, sok fejtörést okoz, főleg kezdőknél.
Ha egy karaktert vagy meghatározott mannyiségű karaktert akarsz beolvasni akkor használd a cin.get() parancsot, egyébként a getline(cin, string) paranccsal olvasd be a szöveget és azt dolgozd fel.
Abban egyetértek #1-vel hogy ezt beírni a google-be pár másodperc és általábban pár másodperc alatt visszadobja a megoldást, eze felül pedig érdemes a www.cplusplus.com -ot böngészni a parancsokért.
Amúgy if-if szerkezet helyett használj if - else if szerkezetet, hogy ha az első lefutott a másodikat feleslegesen ne ellenőrizze. Ha sok karaktert kell ellenőrizni, akkor pedig gondolj a switch case szerkezetre.
if (decision == "+")
{
cout << "Írd be, milyen parancsot szeretnél hozzáadni!" << endl;
ez a része egy külső szövegfájlt fog írni, amit a lentebbi olvasni fog]
}
Ez kapásból 'elszalad' mivel nincs cin >> akármi :) amire megálljon.
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <stdlib.h>
using namespace std;
int main()
{
string decision;
bool kilep=1;
int i;
char parancs[50],mentett_parancs[50];
ofstream fout ("text.txt");
ifstream fin ("text.txt");
while (kilep)
{
cout << "Segítséget szeretnél, vagy új parancsot akarsz hozzáadni az adatbázishoz?" << endl;
cout << "1.Parancs hozzáadás" << endl;
cout << "2.Parancs Olvasás" << endl;
cout << "3.Kilépés"<<endl;
getline(cin, decision);
if(decision=="1"){
cout << "Írd be, milyen parancsot szeretnél hozzáadni!" << endl;
cin>>parancs;
fout<<parancs;fout<<endl;
//ez a része egy külső szövegfájlt fog írni, amit a lentebbi olvasni fog
}
if(decision=="2"){
while (!fin.eof())/**a file vegeig beolvassa(fin) es megszamolja(int n) az elemeket**/
{
fin>>mentett_parancs;
cout<<mentett_parancs<<endl;
i++;
}
}
if(decision=="3") kilep=0;
system("cls");// képernyő törlés
}
return 0;
}
Kérlek pontozz ha segített.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!