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

JSPACE - Spacje SPOJ

Object Storage Arubacloud
0 głosów
754 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ź 770 wizyt
pytanie zadane 19 października 2018 w SPOJ przez Archiwista Początkujący (250 p.)
0 głosów
0 odpowiedzi 581 wizyt
pytanie zadane 2 lipca 2017 w SPOJ przez BinaryMan Stary wyjadacz (12,620 p.)
0 głosów
1 odpowiedź 952 wizyt
pytanie zadane 31 maja 2016 w C i C++ przez Kertoip_123 Nowicjusz (120 p.)

92,547 zapytań

141,390 odpowiedzi

319,509 komentarzy

61,932 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!

...