Pomoc C++ - problem z kodem

0

Witam,

Czy na tym forum jestem w stanie uzyskać pomoc ?? - chodzi o odnalezienie błędu w krótkim kodzie programu - tzn. program uruchamia się, ale nie wykonuje wszystkich zadań, które powinien.

Zaznaczę, że dla programistów jest to zapewne bardzo prosty program - dla mnie - początkującego - średnio trudny:(

0

Pokaż kod.

0

Chodzi o program, który wczytuje znaki, aż do napotkania "!". Pod koniec drukuje informacje ile razy wystąpiły po sobie dwa znaki "c", a potem "z" oraz ile razy "r", a potem "z".
Wklejam kod, który napisałem. Program co rpawda wczytuje znaki, aż do "!", ale jest jakiś problem z licznikami.

#include <iostream>
using namespace std;
int main (int argc, char* argv [])

{

int licz_1, licz_2;

char poprz_zn, akt_zn;

licz_1 == 0;
licz_2 == 0;

cout << "Wprowadzaj znaki. Wprowadzenie '!' konczy program. \n";
cout << "Ponadto zostanie wyswietlona informacja o sytuacji w ktorej po znaku 'c'\n";
cout << "zostal wprowadzony znak 'z'\n";
cout << "oraz sytuacja w ktorej po znaku 'r' zostal wprowadzony znak 'z'\n";

akt_zn != '!';

do
{
poprz_zn = akt_zn;

cout << "Wpisz znak: \n";
cin >> akt_zn;

if (poprz_zn == 'c' && akt_zn == 'z')

licz_1++;

else if (poprz_zn == 'r' && akt_zn == 'z')

licz_2++;

}
while (akt_zn != '!');

cout << "Wystapila” << licz_1 << 'sytuacja w ktorej po znaku ‘c’ zostal wprowadzony znak 'z' \n";
cout << "oraz” << licz_2 << „ sytuacja w ktorej po znaku ‘r’ wystąpił znak ‘z’ \n";
return 0;
}

0

Zmienna licz_1 oraz licz_2 są niezainicjowane.

1

poczatkujacyprogrammer jak na naukę języka c++ polecam ci Visual Studio 2012 Express. To środowisko nauczy cię nie popełniać takich błędów. Visual jest chyba najbardziej wymagającym środowiskiem.

0

Oprócz licz_1 i licz_2 musisz jeszcze zainicjalizować zmienną akt_zn.

0

Ok, dzięki za odpowiedzi.

Kod poprawiony - program działa - wykonuje to co miał wykonywać:)

0

Witam forumowiczów.

Mam problem z kodem - chodzi o program, który kończy wczytywanie napisów po wprowadzeniu kolejno po sobie dwóch napisów 'ko' i 'niec'. Na koniec drukuje informację ile wczytanych napisów zaczynało się dużą literą oraz ile wczytanych napisów kończyło się cyfrą.

Oto mój kod:

#include <iostream>
using namespace std;
int main (int argc, char* argv [])

{

int licz_1, licz_2;

int n;

string poprz_napis, akt_napis;

licz_1 = 0;
licz_2 = 0;

cout << "Wprowadzaj napisy. Wprowadzenie napisu 'ko', a po nim 'niec' konczy program. \n";
cout << "Ponadto zostanie wyswietlona informacja ile wczytanych napisow rozpoczynalo sie duza litera \n";
cout << "oraz informacja ile wczytanych napisow konczylo sie cyfra\n";

n = akt_napis.size();

do
{
poprz_napis = akt_napis;

cout << "Wpisz napis: \n";
cin >> akt_napis;

if (akt_napis[0] >= 'A' && akt_napis[0] <= 'Z')

licz_1++;

else if (akt_napis[n-1] >= '0'&& akt_napis[n-1] <= '9')

licz_2++;

}
while (poprz_napis != 'ko' && akt_napis != 'niec');

cout << licz_1 << " napisow rozpoczynalo sie duza litera \n";
cout << " oraz " << licz_2 << " napisow konczylo sie cyfra \n";
return 0;
}

0

Wyskakuje mi komunikat przy WHILE - error: no match for 'operator!=' in 'poprz_napis != 27503'

0

kod dawaj w znaczniki code na forum. I formatuj kod. Wcięcia powinno się robić przy { np

if(true == false)
{
    std::cout << "niemozliwe";
}

Jasno masz określony błąd. Nie potrafisz angielskiego to czas szybko się nauczyć.
http://www.cplusplus.com/reference/string/string/
tu masz wszystkie funkcje klasy string. Lekcja na dziś? Znajdź tą która tutaj Ci pomoże

mało tego, jak chcesz string bezpośredni w programie to się go daje w " " a nie w ' ' i to powoduje u Ciebie błąd (gdybyś wygooglował to byś zapewne wiedział)

0

Wiedza programistyczna jest tu wiele ważniejsza niż dobra znajomość języka angielskiego - co z tego, że ROZUMIEM (przetłumaczę na jęz. Polski) zdanie: "error: no match for 'operator!=' in 'poprz_napis != 27503' ", jeśli nie wiem jak rozwiązać problem - patrząc od strony programisty. Nie zmienia to faktu, że angielski jest potrzebny w dzisiejszych czasach.

Dzięki - pomogło wstawienie " " zamiast ' '.

Ponadto chyba coś źle zrobiłem z długością napisu - mianowicie - chodzi o licznik napisów, w których ostatni znak to cyfra... (akt_napis[n-1] >= '0'&& akt_napis[n-1] <= '9') to chyba nie tak ?

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