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

JSPACE - Spacje SPOJ

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
864 wizyt
pytanie zadane 4 września 2018 w SPOJ przez Piotr Błaszczak Bywalec (2,890 p.)

Cześć, mam problem z zadaniem ze SPOJA (https://pl.spoj.com/problems/JSPACE/). Napisałem program który u mnie działa jak należy, ale SPOJ odrzuca mi go z powodu rzekomej "Błędnej odpowiedzi". Wie ktoś dla czego? Mój kod:

#include <iostream>
#include <string>

using namespace std;

string napis;

int main()
{
    while(getline(cin, napis))
    {
        for(int i=0; i<napis.length(); i++)
        {
            if(napis[i]==32)
            {
                napis[i+1]=napis[i+1]-32;
                napis.erase(i,1);
            }
        }
        cout<<napis<<endl;
    }
    return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 4 września 2018 przez niezalogowany
wybrane 4 września 2018 przez Piotr Błaszczak
 
Najlepsza

Test dla którego nie działa (każda spacja ważna):

      cos A A a a

Spostrzeżenia:

  1. Wszystkie spacje muszą zostać usunięte. 
  2. Sprawdź czy litera jest mała i dopiero wtedy zamieniaj ją na dużą.
  3. W 16 linii wychodzisz poza łańcuch.

Uwzględnij to wszystko. Do zamieniania na duże litery możesz użyć funkcji std::toupper z <cctype>. Zastanów się czy za każdym razem gdy usuniesz literę możesz przesunąć iterator 'i' w pętli. 

+2 głosów
odpowiedź 4 września 2018 przez RafalS VIP (122,820 p.)
edycja 4 września 2018 przez RafalS

Spróbuj taki string:

Antoni Macierewicz zepsul Twoj program, bo nazwiska piszemy duza litera
Podobnie jak wielokrotne spacje.     Tak jak     tutaj.
Cyfry tez potrafia wygenerowac 127 bledow.

A co do kodu to rozwiązanie jest mega nieefektywne. Każdy erase na stringu powoduje, że zostaje on pod spodem przepisany w całości, żeby zachować ciągłość pamięci. Proponuje wynik zapisywać do drugiego stringa pomocniczego albo od razu na ekran.

 

Podobne pytania

0 głosów
1 odpowiedź 912 wizyt
pytanie zadane 19 października 2018 w SPOJ przez Archiwista Początkujący (250 p.)
0 głosów
0 odpowiedzi 898 wizyt
pytanie zadane 2 lipca 2017 w SPOJ przez BinaryMan Stary wyjadacz (12,620 p.)
0 głosów
1 odpowiedź 1,087 wizyt
pytanie zadane 31 maja 2016 w C i C++ przez Kertoip_123 Nowicjusz (120 p.)

93,444 zapytań

142,436 odpowiedzi

322,698 komentarzy

62,806 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

...