SPOJ nie akceptuje zadania.

0

Mamy takie zadanie:
http://pl.spoj.com/problems/JPESEL/
i moje rozwiązanie:

#include<iostream>
#include<string>
using namespace std;
string pesel(string p);
int main()
{
	int ile;
	string s;
	cin >> ile;
	for (int i = 0; i < ile; i++)
	{
		cin >> s;
		cout << pesel(s)<<endl;
	}
	return 0;
}
string pesel(string p)
{
	string ret = "N";
	int temp[] {1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 1};
	int suma = 0;
	for (int i = 0; i < 11; i++)
	{
		suma += (p.at(i) - 48) * temp[i];
	}
	if (suma > 0)
	{
		if (suma % 10 == 0) ret = "D";
	}
	return ret;
}
 

Dlaczego SPOJ nie akceptuje tego rozwiązania?

0

Podpowiedź, to jest poprawny PESEL: 00000000000.

co do potencjalnego błędu kompilacji, zauważ, że na SPOJ masz stary kompilator 4.3.2, więc całkiem możliwe, że nie łyka inicjalizacji tablicy bez znaku równości.
Popraw tak:

static const int temp[] = {1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 1};

Offtopic:
Zdefiniowałeś osobną funkcję i bardzo dobrze, ale bardziej naturalne by było zwracać z niego wartość bool.

0

Błąd kompilacji? o_O A jak zmienisz

int temp[] = {1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 1};

?
I na pewno kompilujesz to jako C++ a nie jako C?

0

Tak jako C++. Ostatnio przyzwyczaiłem się nie dawać znaku równości. Ze znakiem równości jest w porządku.

2

Tak na przyszłość: Na spoj-u rezultat "błąd kompilacji" jest klikalny, i udostępnia komunikat błędu.

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