iloczyn logiczny - bład przy kompilacji

0

Witam,
od niedawna zacząłem coś próbować pisać w C++ i mam mały problem z iloczynem logicznym, wiem że dla większości forumowiczów to błahostka, ale mnie jak na razie przerasta:)
Wygląda to tak:

do
    {
    }
while (litera != 'N') || (litera != 'n');

Ma to działać tak, że po wykonaniu pętli pyta czy jeszcze raz ją wykonać (T/N). Chodzi mi o to, żeby bez znaczenia czy dużą literę wpisze czy małą N to program zakończy pracę. Niestety przy kompilacji tego co napisałem wyskakują mi błędy:
error C2143: syntax error: missing ';' before '||'
error C2059: syntax error: '||'

0

Brak nawiasu.
while (litera != 'N' || litera != 'n')

0

jak wpisze w ten sposób to da rade skompilować, ale wtedy wpisanie N czy n nie przerywa programu.

Nie znam się na tyle żeby ocenić czy jest dobrze napisany (przy moich zdolnościach na pewno źle ;)), ale jak zostawie np. tylko dużą literę w ten sposób:
while (litera !='N');
to jest OK

2

Powiem Ci w sekrecie: twój warunek jest zawsze prawdziwy.

Pomoc naukowa:

for c in "nNabc":
	first = c != 'N'
	second = c != 'n'
	print("(c!='N'? {0}) | (c!='n'? {1}) == {2}".format(first, second, first|second))

stdout

(c!='N'? True) | (c!='n'? False) == True
(c!='N'? False) | (c!='n'? True) == True
(c!='N'? True) | (c!='n'? True) == True
(c!='N'? True) | (c!='n'? True) == True
(c!='N'? True) | (c!='n'? True) == True
0

Każda litera nie jest N lub nie jest n.
Pętla ma się zakończyć jeśli wpisana litera nie jest N oraz nie jest n.

Swoją drogą: błahostka

0
twonek napisał(a):

Każda litera nie jest N lub nie jest n.
Pętla ma się zakończyć jeśli wpisana litera nie jest N oraz nie jest n.

Pętla ma być wykonywana dopóki nie zostanie wpisana litera "N" lub "n".

0

Pętla ma być wykonywana dopóki nie zostanie wpisana litera "N" lub "n".

Nie wiem czy znasz logikę (ale pewnie tak), więc:
~(litera == 'N' || litera == 'n') => ~litera=='N' && ~litera=='n' => litera != 'N' && litera != 'n'

0
rycho84 napisał(a):
twonek napisał(a):

Każda litera nie jest N lub nie jest n.Pętla ma się zakończyć jeśli wpisana litera nie jest N oraz nie jest n.

Pętla ma być wykonywana dopóki nie zostanie wpisana litera "N" lub "n".

Źle napisałem, ale dobrze myślałem.
Pętla ma działać dopóki wpisana liczba nie jest N oraz nie jest n.

To co napisałeś to jest

while (!(litera == 'N' || litera == 'n'))

czyli

while (litera != 'N' && litera != 'n')

czyli to co ja napisałem.

0

Dokładnie. Zrobiłem błąd w założeniu, a szukałem go gdzie indziej.
Dzięki wszystkim za pomoc.
Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1