IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Neposlušny switch

Aktivity
Avatar
rplsicik
Člen
Avatar
rplsicik:4.6.2015 9:46

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ý
Tvůrce
Avatar
Odpovídá na rplsicik
Jan Vargovský:4.6.2015 10:22

'1' != 1

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
4.6.2015 10:22
Avatar
Odpovídá na rplsicik
Patrik Valkovič:4.6.2015 10:56

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
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 Valkovič
rplsicik:4.6.2015 11:48

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

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

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:4.6.2015 14:48

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.