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

"Zabawne dodawanie Piotrusia"-SPOJ Błąd Wykonania

0 głosów
906 wizyt
pytanie zadane 20 lipca 2018 w SPOJ przez Piotr Błaszczak Bywalec (2,890 p.)

Cześć, ma problem z zadaniem ze spoja(https://pl.spoj.com/problems/BFN1/). Napisałem program który u mnie działa jak należy, ale spoj odrzuca mi go. Wie ktoś o co chodzi? Mój kod:

#include <iostream>
#include <cstdlib>
#include <sstream>
using namespace std;
int ilosc, liczba; int ile,k;
int convert_to_string(int liczba)    //  zamienia na string, odwraca i konwertuje na int
{
    string tekst;
    ostringstream ss;
    ss << liczba;
    tekst = ss.str();
    ss.clear();
    ss.str(string());
    string wynik;
    for(int i = 0; i < tekst.length(); i++)
    wynik.insert(0, tekst.substr(i, 1));
    string str=wynik;
    int i = atoi(str.c_str());
    return i;
}
string test_palindromu(int a, int b)
{
    ile=0;
   b=convert_to_string(b);
   while(a!=b)
  {

      ile++;
      a=a+b;
      b=a;
      b=convert_to_string(b);
  }
  cout<<a<<" "<<ile<<endl;
}

int main()
{

    cin >> ilosc;
    for(int i = 0; i < ilosc; i++)
    {
        cin >> liczba;
        int p=liczba;
        test_palindromu(liczba,p);

    }
}

 

komentarz 20 lipca 2018 przez RafalS VIP (122,780 p.)
Z jakiego powodu odrzuca? Błędny wynik? Błąd kompilacji? Przekroczono czas oczekiwania?

1 odpowiedź

+1 głos
odpowiedź 20 lipca 2018 przez RafalS VIP (122,780 p.)
wybrane 20 lipca 2018 przez Piotr Błaszczak
 
Najlepsza

Dziwne, że Twój kompilator Ci to przepuszczał, bo:

string test_palindromu(int a, int b)

ta funkcja nic nie zwraca mimo, że deklaruje zwrócenie stringa. Zmień na void i zadziała. 

A tak poza tym to strasznie to przekombinowałeś funkcje conver_to_string, która tak  na marginesie ma dziwną nazwe, bo ma konwertować inta na stringa a zwraca int :D

int convert_to_string(int liczba)    //  zamienia na string, odwraca i konwertuje na int
{
	//string tekst;
	//ostringstream ss;
	//ss << liczba;
	//tekst = ss.str();
	string tekst = std::to_string(liczba);
	//ss.clear();
	//ss.str(string());
	//string wynik;
	//for (int i = 0; i < tekst.length(); i++)
	//	wynik.insert(0, tekst.substr(i, 1));
	//string str = wynik;
	std::reverse(tekst.begin(), tekst.end());
	return atoi(tekst.c_str());
}

 

komentarz 20 lipca 2018 przez Piotr Błaszczak Bywalec (2,890 p.)

Zrobiłem tak jak pokazałeś i zmieniłem ciało funkcji convert_to_string, ale program nie wie co to jest to_string, zapomniałem o jakiejś bibliotece?

#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <string>
using namespace std;

int convert_to_string(int liczba)
{

  string tekst = to_string(liczba);
    reverse(tekst.begin(), tekst.end());
return atoi(tekst.c_str());
}

 

komentarz 20 lipca 2018 przez RafalS VIP (122,780 p.)
#include <string>

jak nie pomoże to prawdopodobnie używasz mingw GCC 4.8.0, na którym to nie działa.

komentarz 20 lipca 2018 przez Piotr Błaszczak Bywalec (2,890 p.)
używam mingw32-g++.exe i nie działa :( Ale SPOJ przyjmuje :)
komentarz 20 lipca 2018 przez RafalS VIP (122,780 p.)

No to zostaje Ci stary sposób ze stringstream, ale zrób to ładniej:

int a = 10;
stringstream ss;
ss << a;
string str = ss.str();

 

Podobne pytania

0 głosów
0 odpowiedzi 699 wizyt
pytanie zadane 10 września 2017 w SPOJ przez Józef Niecierski Początkujący (440 p.)
0 głosów
1 odpowiedź 357 wizyt
pytanie zadane 14 października 2017 w SPOJ przez michal12334 Obywatel (1,510 p.)
0 głosów
1 odpowiedź 557 wizyt
pytanie zadane 23 sierpnia 2017 w SPOJ przez seba Dyskutant (8,900 p.)

93,742 zapytań

142,680 odpowiedzi

323,299 komentarzy

63,329 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...