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

C++ Pytanko, co robie źle ?

VPS Starter Arubacloud
0 głosów
248 wizyt
pytanie zadane 25 listopada 2018 w C i C++ przez Padoski Użytkownik (990 p.)

11.

Napisz program, który zlicza ilość wystąpień par sąsiadujących ze sobą liter ’o’ w

podanym przez użytkownika ciągu. Program nie rozróżnia małych i dużych liter. Np.

dla podanego ciągu: Ooo ale fajny piesioo! bedzie wynosilo 3 pary.

#include <iostream>

using namespace std;

void liczenieO(char x[]);

int main()
{
    char zdanie[1024];
    cout << "Podaj dowolne zdanie:";
    cin.get(zdanie,1024);
    liczenieO(zdanie);
}
void liczenieO(char x[])
{
    int suma=0;
    for(int i=0; x[i]!='\0'; i++)
    {
        if((x[i]=='o'||'O')&&(x[i+1]=='o'||'O'))
        {
            suma++;
        }
    }
    cout<< suma;
}

Napisalem cos takiego, co jest zle? Wgl program inkrementuje mi sume jak byle co wpisze, czemu tak sie dzieje ?

komentarz 25 listopada 2018 przez Potopiec Obywatel (1,550 p.)
Dlaczego masz funkcje bez ciała nad main a później już z ciałem pod?
komentarz 25 listopada 2018 przez niezalogowany
Tak się robi w C++. W czym problem?
1
komentarz 25 listopada 2018 przez kenjiro244 Dyskutant (8,600 p.)
Nie wyglądało to przypadkiem tak że każda funkcja w c++ musi zostać zadeklarowana. Umieszczenie jej nad funkcją main powoduje jej zadeklarowanie automatycznie a gdy chcemy umieścić ją pod main musimy właśnie ja zadeklarować najpierw?
1
komentarz 25 listopada 2018 przez Potopiec Obywatel (1,550 p.)

@Hipcio, Problemu nie mam. Jak nie wiem to pytam, tak to śmiesznie u mnie działa.

1 odpowiedź

0 głosów
odpowiedź 25 listopada 2018 przez niezalogowany
wybrane 25 listopada 2018 przez Padoski
 
Najlepsza
  1. Takie coś nie ma sensu:

    x[i]=='o'||'O'
    // Powinno być:
    x[i]=='o' || x[i]=='O'
    
  2. Jeżeli para złożona z dużej i małej litery się nie liczy trzeba zmienić warunek.

  3. Wychodzisz poza zakres tablicy. Popraw warunek pętli na x[i + 1] != '\0'

Poprawny kod:

for (int i = 0; x[i + 1] != '\0'; i++)
	{
		if ((x[i] == 'o' && x[i + 1] == 'o') || (x[i] == 'O' && x[i + 1] == 'O'))
		{
			suma++;
		}
	}
komentarz 25 listopada 2018 przez Padoski Użytkownik (990 p.)

Dzieki za pomoc, ale chyba Twoj warunek nie bedzie poprawny ponieważ nie dupuszcza pary Oo ani oO, powinno być

if ((x[i] == 'o'||x[i] == 'O') && (x[i+1] == 'o' || x[i+1] == 'O'))

Jezeli sie myle, popraw mnie.

komentarz 25 listopada 2018 przez Padoski Użytkownik (990 p.)

wtedy wynik powinien wynosić 3, czyli tak jak ty napisales + ten moj warunek bedzie poprawnie?

#include <iostream>

using namespace std;

void liczenieO(char x[]);

int main()
{
    char zdanie[1024];
    cout << "Podaj dowolne zdanie:";
    cin.get(zdanie,1024);
    liczenieO(zdanie);
}
void liczenieO(char x[])
{
    int suma=0;
    for(int i=0; x[i+1]!='\0'; i++)
    {
        if ((x[i] == 'o'||x[i] == 'O') && (x[i+1] == 'o' || x[i+1] == 'O'))
        {
            suma++;
        }
    }
    cout<< suma;
}

 

 

komentarz 25 listopada 2018 przez niezalogowany

A okej w takim wypadku wystarczy zinkrementować i po znalezieniu pary:

	suma++;
	i++;

Podobne pytania

0 głosów
1 odpowiedź 139 wizyt
pytanie zadane 27 lutego 2020 w JavaScript przez cez-kot Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 189 wizyt
pytanie zadane 2 lutego 2019 w Rozwój zawodowy, nauka, praca przez mati0074 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 163 wizyt
pytanie zadane 4 listopada 2018 w C i C++ przez Padoski Użytkownik (990 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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!

...