potrebujem radu v C++

Programovacie jazyky, rady, poradňa...
tomikaco
Medium Expert
Medium Expert
Príspevky: 110
Registrovaný: 27 jan 2008, 21:02

potrebujem radu v C++

Príspevok od používateľa tomikaco »

caute, ucim sa sam C++ a potrebujem v nieco poradit .. povedzme ze mam takyto kod

Kód: Vybrať všetko

...
cout << "Ako sa volas ?" << endl;
cin >> meno;
cout << "Si si isty, ze sa volas "<<meno<<" ?" << endl;
no a tu chcem spravit moznosti .. 1. moznost bude Ano a vykona sa to co bude v "if" a 2. moznost bude Nie a vrati ma vlastne na tento riadok :

Kód: Vybrať všetko

cout << "Ako sa volas ?" << endl;
a bude ma tam vracat az dokym neodpoviem na tu otazku Ano

.. ako taku vec spravit ? este pripominam ze zatial to robim iba v konzole bez grafickeho rozhrania
bzgzd
Novice
Novice
Príspevky: 5
Registrovaný: 28 júl 2009, 0:35

Príspevok od používateľa bzgzd »

Sice uz par rokov nepouzivam C++ ale C# ...
Najlepsie je na taketo nieco pouzit "do... while..." cyklus. Teda pytat si zadavanie mena pokial na kontrolnu otazku neodpovie kladne:

Kód: Vybrať všetko

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string meno;
    string odpoved;

    do
    {
        cout << "Ako sa volas ?" << endl;
        cin >> meno;
        cout << "Si si isty, ze sa volas " << meno << " ?" << endl;
        cin >> odpoved;
    }
    while((odpoved != "Ano") && (odpoved != "ano"));

    return 0;
}
Pokial by si chcel nieco ako "menu v konzole" a nevadi ti pouzitie _getch() ktore nie je v C++ standarde ale v kniznici conio.h
Vyhodou "_getch()" na rozdiel povedzme od cin je ze netreba stlacat na konci enter a ze zadany znak sa nezobrazi - cize pre vybratie polozky z menu idealne. Nevyhoda je ze to nie je v C++ standarde a nie vsetky C++ kompilatory na vsetkych operacnych systemoch take nieco maju.
http://msdn.microsoft.com/en-us/library ... S.80).aspx

Kód: Vybrať všetko

#include <iostream>
#include <string>
#include <cstdlib>
#include <conio.h>

using namespace std;

int main()
{
    string meno;
    int ch;

    do
    {
        system("cls");
        cout << "Ako sa volas ?" << endl;
        cin >> meno;
        cout << "Si si isty, ze sa volas " << meno << " ?" << endl;
        cout << "1. Ano ; 2. Nie (stlac 1 alebo 2)" << endl;
        do
        {
            ch = _getch();
        }
        while( (ch != '1') && (ch != '2'));
    }
    while(ch != '1');

    return 0;
}
tomikaco
Medium Expert
Medium Expert
Príspevky: 110
Registrovaný: 27 jan 2008, 21:02

Príspevok od používateľa tomikaco »

jj dakujem, tu prvu vec som presne potreboval .. a mam dalsi otazku .. viem ze ulohy sa tu neriesia, ale ja som v podstate uz v polovici toho zadania, ale neviem ako dalej .. mam zadanie, ze mam zadat nejake cislo od 1 do 50 a tolko riadkov bude mat pyramida..
napriklad napisem 5 a mala by vyzerat takto :
....*
...***
..*****
.*******
*********

samozrejme ze v konzole to bude vyzerat lepsie, miesto bodiek musia byt medzery, bude to vycentrovane a este je dolezite to, aby bola formatu 1 3 5 7 9 12 atd .. (pocet znakov v riadku) .. no a tu je u mna problem .. mne sa podarilo napisat iba nieco, co robi takyto tvar :
*
**
***
****
*****

tu je k tomu kod

Kód: Vybrať všetko

#include <iostream>

using namespace std;

int main()
{
    int pocet_riadkov;
    int r;
    int k;

    cin >> pocet_riadkov;
    for (r=0;r<pocet_riadkov;r++) {
        for (k=0;k<=r;k++) {
            cout << "*"; }
            cout << "\n"; }
}
su tam vlastne 2 cycle funkcie, jedna pre riadok a jedna pre pocet znakov v riadku .. no z tohto bodu sa neviem absolutne pohnut dalej, vobec nic ma nenapada ako to dostat do toho pyramidoveho formatu ako mam zadane .. mohol by mi niekto pomoct, pripadne dat aspon nejaky hint ?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

vopred sa ospravedlňujem ak tam je chyba, píšem to z hlavy. Ako hint ti to ale isto pomôže aj tak

Kód: Vybrať všetko

#include <iostream>

using namespace std;

int main()
{
    int pocet_riadkov;
    int r;
    int k;

    cin >> pocet_riadkov;
    for (r=0;r<pocet_riadkov;r++) {
      for(k=pocet_riadkov;k>r;k--) cout << " ";
        for (k=1;k<=2*r-1;k++) {
            cout << "*"; }
            cout << "\n"; }
}
tomikaco
Medium Expert
Medium Expert
Príspevky: 110
Registrovaný: 27 jan 2008, 21:02

Príspevok od používateľa tomikaco »

ok diky, facha :) konecne som pochopil uz tym loopom .. inak da sa to spravit milion dalsimi sposobmi

a este jedna vec .. ako napisem viacslovny string ? teda mam nieco taketo

Kód: Vybrať všetko

#include <iostream>

using namespace std;

int main()
{
    string slovo;
    cin >> slovo;
    cout << " "<<h<<" ";
    return 0;
}
a ked napisem viac slov odelenenymi medzerami, tak to proste napise iba to prve
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

vypisuješ nejakú premennú h a nie to slovo
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

Na vstup celeho riadku pouzi getline(cin, str);
tomikaco
Medium Expert
Medium Expert
Príspevky: 110
Registrovaný: 27 jan 2008, 21:02

Príspevok od používateľa tomikaco »

audiotrack napísal:vypisuješ nejakú premennú h a nie to slovo
v tom kode som sa pomylil, malo tam byt "<<slovo<<", lebo som nieco skusal, ale o to nejde .. no vyriesil som to tym getline(cin,slovo); a ide to, diky
Napísať odpoveď