73 / 110
Feb 2018

Hex. Po poprawieniu wyświetlania outputu dostałem tym kodem AC.

Kolega wyswietla (WA):

 OPSS♪◙ABCDEF♪◙ABBC3D4E5FGGHIIJK3L       ♪◙A10B16                    ♪◙

Zamiast (AC):

OPSS♪◙ABCDEF♪◙ABBC3D4E5FGGHIIJK3L♪◙A10B16♪◙

PS:
Nie sprawdzałem testu @mariusz193, ale możliwe, że algorytm lub implementacja nie są do końca poprawne, natomiast danego testu nie ma w zadaniu lub moją poprawką niechcący rozwiązałem jeszcze jakiś problem :wink:

spojrzałem na kod, i zobaczyłem, że dla 111 kolejnych takich samych znaków da błędny wynik, dalej już nie sprawdzałem :slight_smile:

Napisałem cały program C-stringami, problem z przypadkiem A111 rozwiązałem i rozwiązanie przeszło. Ale nadal nie wiem jak rozwiązać problem tych stringów, długość stringa po przerobieniu (tzn. po dodaniu liczby po literze np. A10) jest taka sama jak długość przed przeróbkami, jest jakby uzupełniana(?). @tarpauwatratar jak poprawiłeś ten output ? Bo w debuggerze nie ma żadnych znaków(?), spacji(?), za napisem.


Przechwytywanie1

Moje poprawki: cin.sync -> cin.get oraz:

for (int i=0; i<x; i++)
{
  for(int j = 0; j < napis[i].length(); ++j) 
  {
    if(isalnum(napis[i][j])) 
    {
      cout << napis[i][j];
    }
  }
  cout << endl;
}

Witam, pomoże ktoś? Nie znalazłem wartości, dla których odpowiedź się nie zgadza. Wrzucenie do pliku też nic nie zmienia. Macie jakiś pomysł?

Masz jakiś pomysł jak zrobić, żeby dla więcej niż 1 cyfrowych takich samych liter?
Bo zupełnie nie wiem jak to zrobić :confused:

W przypadku Twojego kodu oczywiście nie - nie pamiętam go po ok 9h od ostatniego czytania, nota bene na szybko. A kilka konstrukcji zdecydowanie utrudnia jego czytanie (np. for(same=2, licznik=i; slowo[licznik+1]==slowo[licznik+2]; same++, licznik++)).

Mam jednak dziwne przeczucie, że nie umiesz operować ASCII, i np. same+48 to tak na prawdę same+‘0’, zaś wyniki dla więcej niż 1-cyfrowych testów to po prostu graficzna reprezentacja kodów ASCII od 58 w górę. Jak zapewne się domyślasz, przyjrzenie się temu zagadnieniu powinno doprowadzić do AC :wink:

Dzięki, spróbuję uprościć ten kod i przyjrzeć się zagadnieniu kodu ASCII :wink:

Dlaczego sędzia nie akceptuje tego kodu?

#include <iostream>
using namespace std;
int a,b,c,z;
string w,g[1];
char s;
int main()
{
    cin>>c;
    string t[c];
    for(int i=0; i<c; i++)
        cin>>t[i];
    for(int i=0; i<c; i++)
    {
        w=t[i];
        s=w[0];
        a=1;
        b=w.length();
        z=0;
        for(int j=1; j<=b; j++)
        {
            if (w[j]==s)
                a++;
            else
            {
                if(a>2)
                {
                    for(int l=z; l<=j-a; l++)
                        cout<<w[l];
                    cout<<a;
                    z=j;
                }
                a=1;
                s=w[j];
            }
        }
        for(int l=z; l<=b; l++)
            cout<<w[l];
        cout<<endl;
    }
}

Bardzo proszę o pomoc.

moja standardowa rada dla tego zadania, już kilkakrotnie powtarzana - poszukaj jej gdzieś powyżej

2 months later

Witam mam problem program dziala dobrze, natomiast nie dostaje AC mogłby ktoś nasunąć podpowiedź? Dzieki z góry i pozdrawiam

Hej,

nie musisz sprawdzać poprawności wejścia takich jak ilość testów albo czy zawiera tylko duże litery, to jest tylko informacja dla Ciebie która może pomóc np. w doborze zmiennych.

Jakkolwiek to co napisałem wcześniej raczej nie ma wpływu na wynik, tak to, że kod rzuca dla jednoliterowych wyrazów:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.charAt(String.java:658)
at Ideone.main(Main.java:39)

prawdopodobnie ma.

9 months later
21 days later

@oskarr_08
cos nas oszukujesz, twierdzisz ze dziala.
na dwa strumienie wejscia masz tylko jeden strumien wyjscia. Sprawdz prosze jeszcze raz kod, I czy wszystkie warunki sa spelnione.

4 months later

Witam, wymyśliłem taki kod: http://ideone.com/Dpz9ES8
Jak widać na załączonym obrazku, dobrze wskazuje litery i ich ilość, jeśli jest ich więcej niż 3, nie mam kompletnie pomysłu jak sprawić aby pokazywało resztę… Jakby ktoś mógłby pomóc byłbym bardzo wdzięczny :slight_smile:

Mam wrażenie, że trochę się nie zrozumieliśmy.
Jeśli na wejściu wpiszę np.:
AABBBCCCCEEDDDDDDDCC
to na wyjściu w moim programie otrzymam:
B3C4D7
a powinienem otrzymać AAB3C4EED7CC i właśnie nie mam pomysłu jak wypisywać zmienną “napis” od początku do momentu, w którym natrafimy na przynajmniej trzy takie same litery, później od trzech takich samych liter do kolejnych trzech takich samych liter i później jeśli już nie natrafimy na trzy kolejne takie same litery, to żeby wypisało resztę zmiennej “napis” do końca.
Powiem szczerze, że inspirowałem się tym linkiem: Flamaster i wykonałem trzy pierwsze podpunkty z 4, o których pisałeś i nie mam pomysłu jak poprawić czwarty.

Masz [błędnie]:

if (k>=2){ ... }

[Zamień i] dodaj:

   if (k > 2) { ...}  // nie **>= 2** tylko **> 2**
   else if (k == 2) {....}
   else {...} // czyli jeśli k == 1

Dodatkowo zmień koniecznie int k = 0 na:

int k = 1; //na początku zawsze masz jedną literę, którą porównujesz z następną/ymi