Będzie ktoś na tyle miły i powie co u mnie się nie zgadza?
LINK DO KODU25
Pozdrawiam.
może po prostu przetestuj dla przykładowych danych z zadania twoje rozwiązanie na ideone.com17, a sam zobaczysz co jest nie tak
równie dobrze możesz przetestować na swoim komputerze przekierowując wejście i wyjście do pliku
import re
def remove_duplicates(values):
output = []
seen = set()
for value in values:
if value not in seen:
output.append(value)
seen.add(value)
return output
for i in range(0, int(input())):
num = str(input())
pattern = re.compile(r'[0-9-]{1,}')
matches = pattern.finditer(num)
tab = []
for match in matches:
tab.insert(0, match.group())
tab = remove_duplicates(tab)
print(*tab)
Powie mi ktoś, gdzie tu ten sędzia widzi “Błędną odpowiedź”?
Input/Output taki sam jak w przykładzie http://pl.spoj.com/problems/PP0502B/1.
Testowane tutaj: https://ideone.com/neYMOG4 oraz w IDE.
Ktoś ma jakieś sugestie? (Od razu mówię że wykluczona jest niespójność kodu między wersją środowiska, w której został napisany a tą, w której jest sprawdzany)
To ma bardzo małe znaczenie, żeby nie powiedzieć, że bez znaczenia. To tylko malutki przykład, jak powinien działać program.
BTW
Skąd wziąłeś pomysł na usuwanie duplikatów? Nic o tym w zadaniu nie napisano.
Dla takiego np testu:
5 1 2 2 2 3
Poprawny out to:
3 2 2 2 1
bez zbędnego dodatkowego kombinowania, usuwania [i udziwniania ]
Czy ktoś mógłby rzucić okiem na wytwór mojej wyobraźni i stwierdzić czemu działa poprawnie dopiero po przekroczeniu pierwszej połowy tablicy. Chciałem ogarnąć to na wskaźnikach.
#include
//dynamiczne alokowanie
using namespace std;
int n;
int main()
{ cout<<"podaj ilosc danych ";
cin>> n;
int *wskaznik;
wskaznik= new int [n];
int *wskaznik2;
wskaznik2= new int [n];
for (int i=0; i<n; i++)
{cin>>wskaznik[i];}
for (int i=0; i<n; i++)
{cout<<wskaznik[i]<<" ";}
cout<<endl;
for (int i=0; i<n; i++)
{wskaznik2[(n-1)-i]=wskaznik[i];
cout<<wskaznik2[i]<<" "; }
delete [] wskaznik, wskaznik2;
return 0;
}
dziękuję
Ty poprawisz formatowanie swojego kodu (patrz kilka postów wyżej jak ładnie to zrobił @hartez) lub ewentualnie prześlij go przez ideone, a ja wtedy Ci powiem co zepsułeś.
Czyli chcę żeby Twój kod nie wyglądał tak:
#include
//dynamiczne alokowanie
using namespace std;
int n;
int main()
{ cout<<"podaj ilosc danych ";
a tak:
#include <iostream>
//dynamiczne alokowanie
using namespace std;
int n;
int main()
{
cout<<"podaj ilosc danych ";
Spójrz na ten kod. Na prawdę masz tam
#include
bez niczego?
Bez wcięć programujesz?
Odpiszę za jakieś dwie godziny, a Ty popraw.
Edit
Więc tak:
-
Co to jest
cout<<"podaj ilosc danych ";
? Twój program ma wyświetlać tylko i wyłącznie to co jest podane w zadaniu. Twój output ma być identyczny z podanym w zadaniu. Każda literka ma się zgadzać. Nie możesz wypisywać takich rzeczy jak “podaj ilosc danych” bo zostanie to przecież uznane za część odpowiedzi czyli za błędną odpowiedź. -
Dlaczego definiujesz
n
przedint main
? W jakim celu? Jeżeli jesteś kolejnym słuchaczem kursu Pana Zelenta (który bardzo upodobał sobie zmienne globalne) to natychmiast zmień kurs. Jeśli mam rację to jest to dla Ciebie najważniejszy punkt i zrób to jak wspomniałem: natychmiast. -
Treść zadania:
Najpierw liczba testów t (t ≤ 100). Następnie dla każdego testu liczba n (n ≤ 100) i n liczb oddzielonych spacjami.
Jeszcze raz:
Najpierw liczba testów t (t ≤ 100).
gdzie jest Twój kod obsługujący tę zmienną?
-
To co wskazała @yula. Podpowiedź: przypisujesz coś do jakiegoś elementu tablicy, a wyświetlasz inny.
-
Co to robi i po co:
for (int i=0; i<n; i++)
{cin>>wskaznik[i];}
for (int i=0; i<n; i++)
{cout<<wskaznik[i]<<" ";}
cout<<endl;
przecież masz wyświetlić liczby z tablicy w odwrotnej kolejności, a Ty je tutaj wyświetlasz tuż po wpisaniu tak jak zostały podane. W ogóle tego nie powinieneś robić.
- Kod ma być ładny, a nie tylko działać. Nie rób takiego czegoś:
for (int i=0; i<n; i++)
{cout<<wskaznik[i]<<" ";}
cout<<endl;
bo to boli innych wokół i ich rodziny. Yuli dzieci płaczą, narbej chodzi zdenerwowany, tarpauwatratar ma depresję, a jaroo gubi się przy dodawaniu.
ten fragment (gdyby w ogóle do czegoś był potrzebny) mógłby wyglądać przejrzyście:
for (int i = 0; i < n; i++)
{
cout << wskaznik[i] << " ";
}
cout << endl;
są zadania na jak najmniejszą liczbę znaków (challenge), ale to nie jest jedno z nich.
Poprawisz to wszystko i będzie przez chwilę zielono w zakładce status
mam zaliczone to zadanie na spoju juz dawno
zrobilem petle odwrotna ktora wypisuje mi wartosci z orginalnej tablicy
wiem ze mozna je zrobic na jednej tylko tablicy
chcialem sie dowiedziec jak przepisac wartosci z jednej tablicy do drugiej na wskaznikach bo ucze sie sam z neta (Zelenta ogladalem tez btw i troche zamula ale daje niezle przyklady)
Mozecie mi polecic jakis dobry pdf albo forum o wskaznikach i ogolnie dzialaniach na tablicach takich jak zliczanie elementow, scalanie kopiowanie wycinanie porownywanie wartosci na dwoch tablicach z alokowana pamiecia?