Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

PP0504B - StringMerge

Ostatnio zmodyfikowano 2016-05-11 20:24
Autor Wiadomość
ja4563
Temat założony przez niniejszego użytkownika
PP0504B - StringMerge
» 2016-05-11 19:18:13
Hej, mam problem - czy ktoś widzi błąd w poniższym programie?
Jego zadaniem jest wypisywanie na wyjście sklejonych ze sobą naprzemianlegle, po jednym znaku, dwóch napisów. W przypadku, gdy jeden napis się zakończy nie kontynuujemy działania.
Testy podane na stronie(napisane tam) przeszedł śpiewająco - a sędzia go nie przyjmuje.
Oto kod:



C/C++
#include <iostream>
#include <cstring>
using namespace std;
const int T_SIZE = 1001;

char * string_merge( char * S1, char * S2 )
{
    char napis[ T_SIZE ];
    int licz = 0;
    int i = 0;
    while( S1[ i - licz ] != '\0' && S2[ i - licz ] != '\0' )
    {
        napis[ i ] = S1[ i - licz ];
        napis[ i + 1 ] = S2[ i - licz ];
        i = i + 2;
        licz++;
    }
    napis[ i ] = '\0';
    return napis;
}


int main()
{
    int t;
    char S1[ T_SIZE ], S2[ T_SIZE ], * S;
    cin >> t; /* wczytaj liczbê testów */
    while( t )
    {
        cin.clear();
        cin.sync();
        cin.getline( S1, T_SIZE, ' ' );
        cin.getline( S2, T_SIZE );
        S = string_merge( S1, S2 );
        cout << S << endl;
        delete[] S;
        t--;
    }
    return 0;
}

P-148122
carlosmay
» 2016-05-11 19:25:49
W C++ używamy
const
 zamiast
#define T_SIZE 1001
.
P-148123
ja4563
Temat założony przez niniejszego użytkownika
» 2016-05-11 19:32:36
Widać przesiadkę z C?
Ok, ale to jednak nie dotyka istoty problemu. :)
P-148124
mateczek
» 2016-05-11 19:36:41
u mnie program nie działa w ogóle !!!
P-148125
carlosmay
» 2016-05-11 19:37:17
Testy podane na stronie(napisane tam) przeszedł śpiewająco - a sędzia go nie przyjmuje.
Jakie testy i czego nie akceptuje sędzia?
P-148126
carlosmay
» 2016-05-11 19:48:23
delete[] S;
 - a co to?
P-148127
mateczek
» 2016-05-11 19:52:10
//edit: luknołem na treść na spoju!!! Napisy są podawanie w jednej Lini getline odpada!!!
w stylu :
aaa bb

C/C++
#include <iostream>
#include <cstring>
using namespace std;
const int T_SIZE = 1001;

char * string_merge( char * S1, char * S2 )
{
    char * napis = new char[ T_SIZE ];
    int licz = 0;
    int i = 0;
    while( S1[ licz ] != '\0' && S2[ licz ] != '\0' )
    {
        napis[ i ] = S1[ licz ];
        napis[ i + 1 ] = S2[ licz ];
        i = i + 2;
        licz++;
    }
    napis[ i ] = '\0';
    return napis;
}


int main()
{
    int t;
    char S1[ T_SIZE ], S2[ T_SIZE ], * S;
    cin >> t; /* wczytaj liczbê testów */
    while( t-- )
    {
        cin.ignore();
        cin >> S1 >> S2;
        S = string_merge( S1, S2 );
        cout << S << endl;
        delete[] S;
    }
    return 0;
}
P-148128
ja4563
Temat założony przez niniejszego użytkownika
» 2016-05-11 20:10:08
Spokojnie, spokojnie. :)

@mateczek - zmieniłeś indeksy tablic - rzeczywiście, niepotrzebne działania tam robiłem - ale działać musiało. Różnica intów jako indeks to nic dziwnego, wydaje się.
Poza tym, do mainowego while'a dodałeś dekrementację. Naprawdę, wydaje mi się, że to nie jest odkrycie koła.

@carlosmay - testy in/out. Gdy wprowadzam dane, dane wyjściowe zgadzają się. Cała filozofia. SPOJ natomiast twierdzi, że odpowiedź jest błędna.
P-148129
« 1 » 2
  Strona 1 z 2 Następna strona