• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Switch dla literek

VPS Starter Arubacloud
0 głosów
581 wizyt
pytanie zadane 26 kwietnia 2015 w C i C++ przez WojciechJot Gaduła (3,410 p.)

Pan mirozslaw zelent pokazuje jak korzystac ze switcha za pomoca wciskania liczby 1,2,3,4 ... da sie zrobic tak aby dzialalo ze po nacisnieciu klawisza g rozpoczyna sie cos i po nacisniecu klawisza f konczy sie cos?

#include <iostream>
#include <cstdlib>
using namespace std;

int start; // chcialem tu dac stringa ale bledy byly
int main()
{
    cout << "No czesc, Wita cie machlojka." << endl;
    cout << "Wcisnij litere G aby przejsc dalej lub F aby wyjsc"<< endl;
    cin >>start; // nie wiem czy to jest konieczne
    switch(start)
    {
        case 'g':
        cout<<"Wybrales opcje startu wiec zaczynamy zabawe"<<endl;
        break;

        case 'f':
            cout<<"Wychodzimy";
            Sleep(10000);
            exit() // czy to jest dobrze?
        break;

    }

    cin.get();
    return 0;

}

 

6 odpowiedzi

+1 głos
odpowiedź 26 kwietnia 2015 przez Boshi VIP (100,240 p.)
edycja 26 kwietnia 2015 przez Boshi

Przecież to co napisałeś nie ma kompletnie sensu.. Wczytujesz inta, a szukasz stringa? Możesz użyć tylko i wyłącznie typu char lub int...  cytat z pierwszego lepszego kursu.

 

 

Zmienna ta musi być typem podstawowym i jednocześnie typem całkowitym. Oznacza to w konsekwencji, że wybór będziemy mogli dokonywać tylko i wyłącznie na podstawie wartości liczby całkowitej czy też kodu znaku ASCII (który również jest liczbą)

komentarz 26 kwietnia 2015 przez WojciechJot Gaduła (3,410 p.)
Doszedlem to tego samego wniosku kiedy wyslales tą odpowiedź przeoczylem w filmiku pana MZ ze nie moze byc stringiem i floatem, dzieki za pomoc bede kombinowal dalej
+1 głos
odpowiedź 26 kwietnia 2015 przez Ursan Bywalec (2,920 p.)

Ja dałbym bool, który zarządzałby startem, ale tak też jest dobrze.

Ten cin jest konieczny, ale start musi być typu char.

Bo np. A rzutowane na int (z char ) to o ile się nie mylę 65


bool petlaGry = true;

while(petlaGry)
{
    cin >> wybor
    switch(wybor)
    {
          case 'f':
              petlaGry = false;
              break;
    }
    // ... tutaj reszta gry
}
komentarz 26 kwietnia 2015 przez WojciechJot Gaduła (3,410 p.)
jak zapisac ta stala wybor? stringiem?
komentarz 26 kwietnia 2015 przez Ursan Bywalec (2,920 p.)

najlepiej char, ponieważ potrzebujemy tylko jednego znakusmiley

komentarz 26 kwietnia 2015 przez WojciechJot Gaduła (3,410 p.)

Mam pomysł, zrobilem cos prostszego:

#include <iostream>
#include <cstdlib>
using namespace std;
int opcja;
int main()
{
    cout << "Hello world!" << endl;
    cout << "Jak sie czujesz?"<<endl;
    cout << "1.FATALNIE"<< endl;
    cout << "2.KORZYSTNIE"<< endl;
    cout << "3.NIE WIEM"<< endl;
    cin >> opcja;
    switch(opcja)
    {
    case 1:
        cout<< "To swietnie!";
        break;
        case 2:
        cout<< "To swietnie!";
        break;
        case 3:
        cout<< "To swietnie!";
        break;

        default:
        system("cls");
        cout<<"SHUT THE FUCK UP! FUCKING ERROR";

    }
    return 0;

}

zamiast 1 2 i 3 jak to zapisac?:)

komentarz 26 kwietnia 2015 przez WojciechJot Gaduła (3,410 p.)
EDIT, udalo mi sie dziek iwielkie leci duzyy plus!
0 głosów
odpowiedź 26 kwietnia 2015 przez krecik1334 Maniak (58,390 p.)
Może zrzutuj te chary na inta, powinno zadziałać.
komentarz 26 kwietnia 2015 przez Ursan Bywalec (2,920 p.)
Lepiej jest pobrać zmienną jako char i nie bawić się w rzutowania.
0 głosów
odpowiedź 26 kwietnia 2015 przez Arkadiusz Waluk Ekspert (288,770 p.)

Typ zmiennej start daj na char i wtedy powinno być dobrze :)

char start;

 

komentarz 26 kwietnia 2015 przez Boshi VIP (100,240 p.)
I się szybko zdziwi jak poda w  charze  'g' a tam wyskoczy mu instrukcja default.
komentarz 26 kwietnia 2015 przez Arkadiusz Waluk Ekspert (288,770 p.)
Że co? Dlaczego miałoby się tak stać?
komentarz 26 kwietnia 2015 przez Boshi VIP (100,240 p.)
o.o mój błąd, o dziwo, wydawało mi się, że dostanie automatycznie konwersję do wartości decy. W każdym razie ostatnio coś poprawiałem komuś (nie pamiętam co) i występowała konwersja z chara na wartość decy.
komentarz 26 kwietnia 2015 przez Arkadiusz Waluk Ekspert (288,770 p.)
Pierwsze słyszę o czymś takim... Dlaczego miałoby robić jakąś konwersję to ja nie wiem ;)
komentarz 26 kwietnia 2015 przez Boshi VIP (100,240 p.)
Wrócę to ci pokazę przykład.
0 głosów
odpowiedź 26 kwietnia 2015 przez Ehlert Ekspert (213,860 p.)

Nawiązując do krecika:

int startint = static_cast<int>(start);

 

0 głosów
odpowiedź 26 kwietnia 2015 przez hit02 Nałogowiec (33,970 p.)
Da się, tylko zmienna start powinna być typu char. Teraz program spodziewa się, że wprowadzisz kod ascii litery.

Co do exit(), to ja dawno z tego nie korzystałem, ale to chyba przyjmuje jako argument wartość zwracaną przez program. Z tego, co wyczytałem ta funkcja niszczy obiekty i strumienie i dopiero wtedy wychodzi, więc w tak prostym programie jest to obojętne, ale chyba lepiej jest używać exit().

Podobne pytania

+10 głosów
14 odpowiedzi 2,822 wizyt
+12 głosów
4 odpowiedzi 2,105 wizyt
pytanie zadane 12 kwietnia 2015 w JavaScript przez krecik1334 Maniak (58,390 p.)
0 głosów
3 odpowiedzi 688 wizyt
pytanie zadane 23 października 2016 w Offtop przez Geckon Nowicjusz (130 p.)

92,962 zapytań

141,924 odpowiedzi

321,161 komentarzy

62,296 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...