zadanie ze SPOJ (c)

0

Chodzi o to zadanie : http://pl.spoj.com/problems/POL/
Moje rozwiązanie jest w załączniku, na ekranie niby dobrze wyświetla, ale na SPOJ-u pokazuje błędna odpowiedź.
Niech się ktoś zlituje i rzuci jakąś wskazówkę co robię źle.

2
#include <iostream>
#include <string>
using namespace std;

int main() {
	ios_base::sync_with_stdio(true);
	int n;
	cin >> n;
	string result;
	while(1+n--){
		string line;
		getline(cin, line);
		result += string(line, 0, line.size()/2) + '\n';
	}
	cout << result;
	return 0;
}

Dopasuj se pan logikę pod ten program.

3

@spartanPAGE: wiem że to stary kod:

while(1+n--){
...
}

...ale korciło mnie sprawdzić czy działa poprawnie.
Zakładam że wczytywane n to liczba uruchomień pętli.

Wynik poniżej.

http://ideone.com/970Hj9

Kod

#include <iostream>

using namespace std;
int main(void) {
	int n;
	
	cout << "wersja 1" << endl;
	n = 3;
	while(1+n--) {
	  cout << "n: " << n << endl;
	}
	  
	cout << "wersja 2 (zmierza do 0)" << endl;
	n = 3;  
	do {
		cout << "n: " << n << endl;
	}  while(n --> 0);
	
	cout << "wersja 3 (czytelniejsza wersja pierwszej)" << endl;
	n = 3;  
	do {
		cout << "n: " << n << endl;
	}  while((n--)> 0);

	cout << "wersja 4 (czytelna, uruchamia się tyle razy ile potrzeba)" << endl;
	n = 3;  
	do {
		cout << "n: " << n << endl;
	}  while((--n)> 0);

	cout << "wersja 5 (jajcarska, poprawna)" << endl;
	n = 3;  
	do {
		cout << "n: " << n << endl;
	}  while(0 <-- n);

	cout << "wersja 6 (styl K&R, poprawna)" << endl;
	n = 3;  
	while(n--) {
		cout << "n: " << n << endl;
	}  

	cout << "wersja 7 (while, równoważnik pierwszej wersji)" << endl;
	n = 3;  
	while((n--)>=0) {
		cout << "n: " << n << endl;
	}  
	
	return 0;
}

Wynik

wersja 1
n: 2
n: 1
n: 0
n: -1
wersja 2 (zmierza do 0)
n: 3
n: 2
n: 1
n: 0
wersja 3 (czytelniejsza wersja pierwszej)
n: 3
n: 2
n: 1
n: 0
wersja 4 (czytelna, uruchamia się tyle razy ile potrzeba)
n: 3
n: 2
n: 1
wersja 5 (jajcarska, poprawna)
n: 3
n: 2
n: 1
wersja 6 (styl K&R, poprawna)
n: 2
n: 1
n: 0
wersja 7 (while, równoważnik pierwszej wersji)
n: 2
n: 1
n: 0
n: -1

Edit: dodałem wersje while()

0

Albo...

#include <cstdio>
#include <cstring>

int main(int, char**)
{
	int t = 0;
	scanf("%i", &t);
	
	char buffer[2048] = { 0 };
	
	for(int i = 0; i < t; ++i)
	{
		scanf("%s", buffer);
		buffer[strlen(buffer)/2] = '\0';
		printf("%s\n", buffer);
	}
	return 0;	
}

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