Zadanie spoj "spacje"

0

Otóż napisałem program , lecz spoj nie chce zaakceptować i nie wiem dlaczego mógł by ktoś zobaczyć co moge mieć nie tak. A o to treść zadania:

W celu zaoszczędzenia ilości znaków w krótkich wiadomościach tekstowych (SMS) nie pisze się spacji, a każdy wyraz rozpoczyna się z dużej litery. Twoim zadaniem jest otrzymany tekst przerobić zgodnie z powyższym trendem.
Input

Na wejściu znajduje się dowolny tekst bez polskich znaków.
Output

Tekst wprowadzony z wejścia, ale bez spacji, ponadto każdy wyraz zaczyna się z dużej litery.
Example

Input:
Dzisiaj jest czwartek,
A jutro bedzie piatek.

Output:
DzisiajJestCzwartek,
AJutroBedziePiatek.

#include<iostream>
#include<string>
#include<cctype>
using namespace std;
void przeksztalc(string nowy);
int main()
{
	string sms;
	getline(cin,sms,'.');
	przeksztalc(sms);
	cin.ignore();
	cin.get();
}
void przeksztalc(string nowy)
{
	for(unsigned int i=0;i<nowy.size();i++)
	{
		if(nowy[i]==' ')
		{
		       nowy.erase(i,1);
		       nowy[i]= toupper(nowy[i]);
		}
	}
	cout<<nowy+'.';
}
0

SMS zwierający kilka zdań, dla twojego programu nie przejdzie cały. Np

To jest test. A to drugie zdanie, które ignorujesz.

a jeszcze jedno spacja przed kropką i masz crush.

0

Zamiast do kropki ogranicz się do "EOF" ([ctrl + z] / [ctrl + d]) w zależności od systemu

0

raczej powinno być tak:

while(getline(cin,sms)) {
     cout << przeksztalc(sms) << endl;
}
0

Poprawilem na takie cos i nadal nie dziala :/

#include<iostream>
#include<string>
#include<cctype>
using namespace std;
string przeksztalc(string nowy);
int main()
{
	string sms;
	while(getline(cin,sms)) 
	{
		cout<<przeksztalc(sms)<<endl;
	}
	
	cin.ignore();
	cin.get();
}
string przeksztalc(string nowy)
{
	for(unsigned int i=0;i<nowy.size();i++)
	{
		if(nowy[i]==' ')
		{
		        nowy.erase(i,1);
		        nowy[i]= toupper(nowy[i]);
		}
		if(nowy[i]=='.')
		{
		        nowy[i+1]= toupper(nowy[i+1]);
		}
	}
	
	return nowy;
}
0

A kto ci kazał poprawiać coś po kropce?
Poza tym już pisałem, masz crush jeśli na końcu jest spacja!

Weź zrób testy, czyli coś takiego:

struct TestCase {
    string wejscie;
    string wyjscie;
} daneTestowe[] = {
     {
           "wyraz",
           "wyraz"
     },
     {
           "wyraz ",
           "wyraz"
     },
     {
           " wyraz",
           "Wyraz"
     },
     {
           "Ide na spacer z psem. Do zobaczenia.",
           "IdeNaSpacerZPsem.DoZobaczenia."
     }

// i coś jeszcze powymyślaj, żeby uwzględnić dużo przypadków szczególnych i nietypowych
}

const int ileTestow = sizeof(daneTestowe)/sizeof(daneTestowe[0]);


void main()
{
   int ileZle = 0;
   for(int i=0; i<ileTestow; ++i) {
      string wynik = przeksztalc(daneTestowe[i].wejscie);
      if(wynik != daneTestowe[i].wyjcie) {
           cout << "nadal jest zle dla wejscia: \"" << daneTestowe[i].wejscie << '"' << endl;
           cout << "wyszło:   \"" << wynik  << '"' << endl;
           cout << "powinno: \"" << daneTestowe[i].wyjscie<< '"' << endl;
           ileZle++;
      }
   }

   cout << "Obecnie źle jet dla " << ileZle << " przypadków." << endl;
}

Mniej więcej coś takiego dzieje się na SPOJ.

0

Ok dzieki za pomoc juz jest git :)

0

Jeśli pliki masz kodowane wg jednego standardu to najkrócej by było zamienić tekst na wartości dziesiętne i pousuwać kody spacji (i innych sekwencji robiących odstępy najczęściej zaczynających się od 13d) prostym whilem, potem znowu konwersja na text. No ale jak działa to git ;-P

0

nie no, nie mogę.. kpisz z tematu, prawda?:)

0

ja popatrzyłem na inne jego posty, on nie kpi!

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