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

C++ Pytanko, co robie źle ?

Object Storage Arubacloud
0 głosów
259 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ź 142 wizyt
pytanie zadane 27 lutego 2020 w JavaScript przez cez-kot Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 195 wizyt
pytanie zadane 2 lutego 2019 w Rozwój zawodowy, nauka, praca przez mati0074 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 168 wizyt
pytanie zadane 4 listopada 2018 w C i C++ przez Padoski Użytkownik (990 p.)

92,555 zapytań

141,404 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!

...