Avatar
rplsicik
Člen
Avatar
rplsicik:

Drahy ludia tak ma tu máte zas, plne chapem že pri vyskyte mojho nicku na fóre dostavate infarktove stavy, ale dovolil by som si vas znova požiadat o pomoc a zopár rád.
Problem je nasledovny: Vytvoril som si menu zo cez switch() myslim si že som dodržal všetky syntakticke naležitosti, a cyklus do-while funguje no žial pri zvoleni jednej s možnosti menu sa mi prikazi v case 'xy' nevykonaju a cyklus sa len opakuje.
Určite si znova nejaku naležitost neuvedomujem a prehliadam.

#include "uzivatel.h"
#include "stdafx.h"
#include <iostream>
#include <string>
#include <Windows.h>
#include <vector>

using namespace std;


int main()
{
        ///system("color 18");

        ///VYTVORENIE Kontejneru vytvorenie pomocnych premennych
        int i,j, volba;
        string m,h;
        vector <uzivatel> Databaza;


        do
        {
                ///Menu
                cout << "1 - Pre registraciu" << endl;
                cout << "2 - Pre vypis uzivatelov s pamate PC" << endl;
                //cout << "3 - Pre vypis uzivatelov s txt dokumentu" << endl;
                //cout << "5 - Pre Koniec" << endl;

                cin >> volba;
                switch (volba)
                {
                case  '1':

                        cout << "Zadaj pocet mien" << endl;
                        cin >> i;
                        for (j=0;j<i;j++)
                        {
                                cout << "\n\tRegistracia uzivatela" << endl;
                                cout << "Zadaj meno: ";
                                cin >> m;
                                ///system("pause");
                                cout << "Zadaj heslo: ";
                                cin >> h;
                                uzivatel objekt = uzivatel(m,h);
                                Databaza.push_back(objekt);
                                cout << "Zapisali ste sa pod cislom: " << Databaza.size() << endl;
                                static int velkost = Databaza.size();
                                Databaza[j].fvypis();
                                break;
                        }


                case '2':
                        for (i=0;i<Databaza.size();i++)
                        {
                                Databaza[i].vypis();
                        }
                        break;


                }
        } while (volba!=5);
}
 
Odpovědět 4.6.2015 9:46
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na rplsicik
Jan Vargovský:

'1' != 1

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +3 4.6.2015 10:22
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na rplsicik
patrik.valkovic:

Tím chtěl říct, že znak "1" není to samé jako číslo 1. cin ti automaticky přetypuje vstup na číslo, takže musíš použít jednoduše case 1:...

Editováno 4.6.2015 10:56
Nahoru Odpovědět  +1 4.6.2015 10:56
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
rplsicik
Člen
Avatar
Odpovídá na patrik.valkovic
rplsicik:

Jasné že ma to skôr nenapadlo ano ano chapem :) absolutne som si to neuvedomil.
Vďaka vám :)

 
Nahoru Odpovědět  +1 4.6.2015 11:48
Avatar
Libor Šimo (libcosenior):

Nemá byť náhodou v každom case príkaz "break" až na konci? V case 1: nie je.

Nahoru Odpovědět 4.6.2015 13:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rplsicik
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
rplsicik:

Má, moja chyba omylom som sem vložil verziu ktora ma break; v cykle.
Taktiež čast:

cout << "Zadaj pocet mien" << endl;
                        cin >> i;
                        for (j=0;j<i;j++)
                        {
                                cout << "\n\tRegistracia uzivatela" << endl;
                                cout << "Zadaj meno: ";
                                cin >> m;
                                ///system("pause");
                                cout << "Zadaj heslo: ";
                                cin >> h;
                                uzivatel objekt = uzivatel(m,h);
                                Databaza.push_back(objekt);
                                cout << "Zapisali ste sa pod cislom: " << Databaza.size() << endl;
                                static int velkost = Databaza.size();
                                Databaza[j].fvypis();
                                break;
                        }

čo sa tyka cyklu for() je nezmyselna a bola odtial vylučena preč, no tym mi vznikol dalši problem a to je:
Databaza[j].fvy­pis(); mi spôsobovalo chybu niečo ako v zmysle preplnenia kontajneru. No to je už vyriešene.

 
Nahoru Odpovědět 4.6.2015 14:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.