"Spacje" Spoj-problem

0

Witam! Chodzi o zadanie ze spoja. Wszystkie przykłady mi wychodzą dobrze, a jednak sędzia wyrzuca błędną odpowiedź. http://pl.spoj.com/problems/JSPACE/

#include <iostream>
#include <string>

using namespace std;


int main()
{
    string napis;
    getline(cin,napis);
    string szukaj=" ";
    while(true)
    {
       size_t pozycja;
       pozycja=napis.find(szukaj);
       if(!(pozycja!=string::npos)) break;
       if(napis[pozycja+1]>=97 && napis[pozycja+1]<=122) napis[pozycja+1]-=32;
       napis.erase(pozycja,1);
    }
    cout<<napis;
    return 0;
}

 
0

Testowałeś na kilku linijkach czy zawsze na jednej? :]

0

Twój kod nie działa nawet z przykładem z zadania!
http://ideone.com/pGqO70
tak ma to wyglądać:

int main()
{
    string linia;
    while(getline(cin, linia))
    {
         istringstream in(linia);
         string s;
         while(in >> s)
         {
               … … …
         }
         … … …
    }
    return 0;
}
0

W sumie to na jednej, ale jak testować na kilku linijkach?

0

Dzięki za pomoc, wystarczyło go tylko tak przerobić :D :

 #include <iostream>
#include <string>

using namespace std;


int main()
{
    string napis;
    string szukaj=" ";
   while(getline(cin,napis))
   {
    while(true)
    {
       size_t pozycja;
       pozycja=napis.find(szukaj);
       if(!(pozycja!=string::npos)) break;
       if(napis[pozycja+1]>=97 && napis[pozycja+1]<=122) napis[pozycja+1]-=32;
       napis.erase(pozycja,1);
    }
    cout<<napis<<endl;
   }
    return 0;
}
0

Zastanów się przy okazji, czy naprawdę potrzebujesz dwóch pętli, dzielenia całości na linie i tak dalej.

Mimo czasu 0.0 rozważ opcję, w której przetwarzasz znak po znaku.

np:

#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>

int main() {
	bool capitalize = true;
    char c = ' ';
    while((c = getchar()) != EOF) {
    	if(c == ' ') {
    		capitalize = true;
    	} else {
    		putchar(capitalize? toupper(c) : c);
    		capitalize = false;
    	}
    }
    return 0;
}
0
#include <cstdio>
#include <cctype>
using namespace std;

int main()
  {
   for(int ch,sp=1;(ch=getchar())!=EOF;0) if(ch==' ') sp=1; else if(ch=='\n') putchar('\n'); else if(!sp) putchar(ch); else { putchar(toupper(ch)); sp=0; }
   return 0;
  }
0
int main()
{
    string linia;
    while(getline(cin, linia))
    {
         istringstream in(linia);
         string s;
         in >> s;
         cout << s;
         while(in >> s)
         {
               s[0]=toupper(s[0]);
               cout << s;
         }
         cout << endl;
    }
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1