Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[PYTANIE] Sprawdzenie ilosci wartosci


Pr0sikor

Rekomendowane odpowiedzi

Opublikowano

Siemka.

 

Mam jeden problem w programie.

Program ma polegać na sprawdzeniu jak najdłuższego nie przerwanego ciągu znaku spełniający warunek a>b przy czym ciąg tych znaków za każdym razem jest losowy i warunek musi być spełniony dla obu stron.

 

Ostatnio już o to pisałem ale musiałem zmodyfikować program bo nauczyciel go coś nie zaakceptował. Dotarłem teraz do momentu wpisania losowych wartości do tablicy i wypisania ich oraz do stworzenia odwrotnej do niej tablicy (odwrócenia jej) oraz jej wypisania. Problem tera tkwi jak sprawdzić czy warunek a>b został spełniony w obu tablicach i aby program wypisał jak długi jest ciąg spełniający ten warunek.

 

Dotychczasowy kod programu :

 

#include <iostream>
#include <conio.h>
#include <ctime>

using namespace std;

int main()
{
    int n;
    srand(time(NULL));

    cout << "Podaj ilosc znakow..." << endl;
    cin >> n;

    char ciag[n];
    char a='a', b='b';
    
    
    for (int i = 0; i < n; i++)
    {
        if (rand() % 2 == 0)
        {
            ciag[i]='a';
        }
        else
        {
            ciag[i]='b';
        }
    }
       
    
    for (int i=0; i<n; i++)
    {
        cout<<ciag[i];
        }
        
    cout<<"\n";
        
    for (int j=n-1; j>=0; j--)
    {
        cout<<ciag[j];
        }
        
     
    getch();
}

 

Weteran
Opublikowano

Nauczyciel nie powiedział co się nie zgadza? Tak jak mówiłem, to polecenie jest dla mnie nie jasne i skoro nie ma odpowiedzi, to widocznie dla innych też.

Warunek ma być spełniony dla obu stron? Stron czego? Czyli program ma zwrócić dwa wyniki dla sprawdzenia tablicy od lewej do prawej i od prawej do lewej?

Jeśli faktycznie jedne czego w tym programie brakuje to:

sprawdzić czy warunek a>b został spełniony w obu tablicach i aby program wypisał jak długi jest ciąg spełniający ten warunek.

To wystarczy dodać dwie pętle, które mogą wyglądać tak:

 int ca = 0, cb = 0, cx = 0;
    for (int i = 0; i < n; i++)
    {
        if (ciag[i] == 'a')
            ++ca;
        else
            ++cb;
        if (cb > ca)
            cx = i+1;
    }

cx będzie zawierać długość ciągu, który będzie spełniać ten warunek.

Opublikowano

Od lewej do prawej czy od prawej do lewej rozni sie tylko tym ze lancuchy sa wzgledem siebie lustrzanym odbiciem...

 

Wiec nie trzeba sprawdzac z osobna tych lancuchow , wystarczy na samym koncu majac juz najdluzszy lanucuch spelniajacy wybrany warunek wyswietlic go od tylu xD

 

Tak w nawiasie to napisalem Ci to juz w Twoim poprzednim temacie





http://www.mpcforum.pl/topic/1062547-pytanie-znajdz-ciag-znakow-spelniajacych-warunek/

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...