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

Powtarzająca się zmienna w pętli

Object Storage Arubacloud
+1 głos
254 wizyt
pytanie zadane 7 stycznia 2016 w C i C++ przez X3ven Nowicjusz (180 p.)

Witajcie!

Mam pewien problem. Próbuje napisać pewien program lecz natrafiłem na błąd. Gdy za pierwszym razem przypisze wartość do zmiennej to za każdym razem gdy chce przypisać kolejny raz wartość do tej zmiennej zamiast pustego pola wyświetla mi się wartość zmiennej. Wiem. że kiepsko tłumacze, ale wszystko będzie widać na screenie. Oto kod i screenshot problemu.

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    bool banan=false;
    double x=0;
    while(true)
    {
        if ( HIBYTE (GetKeyState(VK_F8)))
        {
            banan=true;
        }
        else
        {
            if(banan==true)
            {
                cout << "Podaj x: ";
                cin >> x;
                banan=false;
            }
        }
    }
}

Po ponownym kliknięciu F8 na ekranie ukazuje się "Podaj x: 4" zamiast "Podaj x: ". Macie jakieś pomysły jak to naprawić? 

2 odpowiedzi

0 głosów
odpowiedź 7 stycznia 2016 przez katolik6 Dyskutant (8,140 p.)
1) po co ci else
2)czy to 4 da się usunąć przez backspace?
3)nie lepiej zawartość drugiego ifa wkleić do pierwszego, a potem drugiego wogule usunąć razem z banan=true;?
komentarz 7 stycznia 2016 przez X3ven Nowicjusz (180 p.)
edycja 7 stycznia 2016 przez X3ven
1. Z przyzwyczajenia. Gdyby nie było tam cin i else, to przy naciśnięciu przycisku i jego trzymaniu funkcja if by się powtarzała, aż do puszczenia przycisku :P

2. tylko za pomocą przycisku delete

3. Nie zauważyłem 3) :P Można. ale jak wyżej napisałem, napisałem ten kod w takiej postaci z przyzwyczajenia :)
komentarz 7 stycznia 2016 przez katolik6 Dyskutant (8,140 p.)
Nie wiem, nie spotkałem się z tym, ale jest to problem z kompilatorem, ja muszę np. używać zawsze system("color 0a"); bo bez tego wyświetla się czarne na czarnym :P Nie przejmuj się tym, po prostu zdobądź dostęp do kompilatora na innym kompie, albo zrób reinstall środowiska, myślę, że pomoże, ale nie próbowałem, dlatego przed ponownym zainstalowaniem polecam wyczyścić rejestr np. Ccleanerem dla pewności.
komentarz 7 stycznia 2016 przez X3ven Nowicjusz (180 p.)
Sprawdziłem na 2 komputerach. Cały czas problem jest ten sam :C
komentarz 7 stycznia 2016 przez katolik6 Dyskutant (8,140 p.)
Hmmm... Ciekawe, normalnie cin się tak nie zachowuje, kiedy to się zaczęło? Od pierwszego projektu?
komentarz 7 stycznia 2016 przez katolik6 Dyskutant (8,140 p.)
Zaraz! Z tego, co wiem winapi ma sposób symulowania wciśnięcia klawisza, tak? A w internecie można znaleźć ile maksymalnie liter może być użytych do wyświetlenia doubla., prawda? Chyba już rozumiesz, o co chodzi :)
komentarz 7 stycznia 2016 przez X3ven Nowicjusz (180 p.)
To nie to. Zamiast double można wstawić string, char, int i nadal problem jest ten sam. Poza tym winapi ma sposób symulowania wciśnięcia klawisza, ale tutaj sprawdzamy czy klawisz jest wciśnięty, a nie symulujemy jego wciśniecie. Poza tym gdyby VK_F8 zamienić na VK_F1 to jest wtedy możliwość usunięcia tej 4 za pomocą backspace
komentarz 7 stycznia 2016 przez katolik6 Dyskutant (8,140 p.)
A, nie, nieważne, zapomniałem, że cin jest blokujący, dawno nie używałem, przepraszam. Nie wiem, jak to wyelminować algorytmem, skoro nie działa na drugim komputerze, to może sprubój innego środowiska albo chociaż kompilatora.
0 głosów
odpowiedź 8 stycznia 2016 przez draghan VIP (106,230 p.)

Po ponownym kliknięciu F8

Jakiego IDE używasz?

komentarz 8 stycznia 2016 przez X3ven Nowicjusz (180 p.)
Code::Blocks
komentarz 9 stycznia 2016 przez draghan VIP (106,230 p.)
Wybacz, źle zrozumiałem pytanie. Problem nie ma nic wspólnego z IDE. To konsola systemu Windows jest "winowajcą".

Zmień klawisz, którym wywołujesz akcję, np. na VK_SPACE, po czym zrób krótki eksperyment. Wprowadź do swojego programu kilkukrotnie różne liczby, po czym - przy ponownym pobieraniu wartości zmiennej - wciśnij F8. Widzisz już, dlaczego masz taki problem? :) Twój kod jest w porządku, IDE również. ;)

Podobne pytania

0 głosów
1 odpowiedź 201 wizyt
0 głosów
1 odpowiedź 305 wizyt
pytanie zadane 22 grudnia 2017 w C i C++ przez MikeMG Początkujący (330 p.)
0 głosów
2 odpowiedzi 217 wizyt
pytanie zadane 1 czerwca 2017 w JavaScript przez crova Użytkownik (940 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...