Gdzie błąd? - wczytywanie znaków

0

Niedawno zaczęłam uczyć się programowania w C++. Niestety kompilator napotkał błąd, a ja nie wiem, o co mu chodzi :( Treść zadania to:
Wczytywać znaki aż do wczytania kolejno znaków 'a', 'l', 'a'.
Wydrukować, ile wczytano małych liter, dużych liter i cyfr.

#include <iostream>

using namespace std;

int main()
{
int ml=0;
int dl=0;
int c=0;
char n, n1, n2;
cin >> n >> n1 >> n2;
    if (n>='A' && n<='Z') {dl++;}
    if (n>='a' && n<='z') {ml++;}
    if (n>='0' && n<='9') {c++;}
    if (n1>='A' && n1<='Z') {dl++;}
    if (n1>='a' && n1<='z') {ml++;}
    if (n1>='0' && n1<='9') {c++;}
    if (n2>='A' && n2<='Z') {dl++;}
    if (n2>='a' && n2<='z') {ml++;}
    if (n2>='0' && n2<='9') {c++;}
while (!(n=='a' && n1=='l' && n2='a')) {
    n=n1;
    n1=n2;
    cin >> n;
    if (n>='A' && n<='Z') {dl++;}
    if (n>='a' && n<='z') {ml++;}
    if (n>='0' && n<='9') {c++;}}
cout << dl << " " << ml << " " << c;
    return 0;
}

EDIT: zapomniałam podać, jaki błąd się wyświetla. "lvalue required as left operand of assignment"

0
while (!(n=='a' && n1=='l' && n2='a')) {

Kompilator na 100% pokazał Ci tę linijkę. Zauważasz czym różni się n2='a' od reszty? ;-)

0

Hmm na oko wygląda mi na to, że
while (!(n=='a' && n1=='l' && n2='a')) {
trzeba by zamienić na
while (!(n=='a' && n1=='l' && n2=='a')) {
Z resztą kompilator mówi Ci co mu nie pasuje - "lwartość wymagana jako lewy operand przypisania"

0

Jej, rzeczywiście. Nie pierwszy raz zdarza mi się zamienić przypisanie z równością :) Dziękuję za pomoc.

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