Kezdőoldal » Számítástechnika » Programozás » C++: Hogyan tudnám az alant...

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.

Figyelt kérdés

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.



2014. jan. 15. 20:05
 1/5 anonim ***** válasza:

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

2014. jan. 15. 20:32
Hasznos számodra ez a válasz?
 2/5 SimkoL ***** válasza:
getchar();
2014. jan. 15. 21:07
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
100%

"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.


[link]

[link]


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.

2014. jan. 15. 22:30
Hasznos számodra ez a válasz?
 4/5 SimkoL ***** válasza:

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.

2014. jan. 15. 23:18
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

#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.

2014. jan. 17. 22:46
Hasznos számodra ez a válasz?

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!