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.
0
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.
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;
}