• 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
417 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 (287,550 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 (287,550 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 (287,550 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 (212,630 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,522 wizyt
+12 głosów
4 odpowiedzi 1,964 wizyt
pytanie zadane 12 kwietnia 2015 w JavaScript przez krecik1334 Maniak (58,390 p.)
0 głosów
3 odpowiedzi 633 wizyt
pytanie zadane 23 października 2016 w Offtop przez Geckon Nowicjusz (130 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...