Witam serdecznie
Czy może mi ktoś powiedzieć dlaczego dostaje komunikat błędna odpowiedź?:
int t, i=1, tablica[101];
cin>>t;
do
{
cin>>tablica[0];
for (int j=1; j<=tablica[0]; j++)
cin>>tablica[j];
for (int j=tablica[0]; j>=1; j--)
cout<<tablica[j]<<" ";
cout<<endl;
i=i+1;
}
while (i==t);
Będę bardzo wdzięczny za podpowiedź
In
3
7 1 2 3 4 5 6 7
3 3 2 11
3 1 2 3
Poprawny out:
7 6 5 4 3 2 1
11 2 3
3 2 1
Zaprawdę powiadam Ci, wypisanie poprawnej odpowiedzi dla testów przykładowych pozwala jedynie stwierdzić, że być może zrozumiałeś treść zadania . Resztę testów musisz sam wymyślać.
Przy okazji: co to za voodo?
for (int j=1; j<=tablica[0]; j++)
cin>>tablica[j];
for (int j=tablica[0]; j>=1; j--)
cout<<tablica[j]<<" ";
Nie lepiej normalnie?
int ile;
cin >> ile;
for (int j=0; j<ile; j++)
cin>>tablica[j];
for (int j=ile-1; j>=0; j--)
cout<<tablica[j]<<" ";
Trochę zaciemnia to Twoje intencje.
Dziękuję za odpowiedź znalazłem błąd.
Co do voodoo - uczę się sam, mam swoje lata a zaczynam od zera (kiedyś na studiach pisałem w Pascalu) więc czasami mam problem z myśleniem "out of the box". Po prostu stwierdziłem że wszystkie zmienne liczby wczytam do tablicy :).
Nie wiem gdzie szukać takich rozjaśnień.
Jeszcze raz dzięki za pomoc
witam,
Czy doradzi ktoś początkującej jak zmienić kod dostający SIGSEGV (Segmentation fault) na SPOJ'u by został zaakceptowany? Błąd dot. ograniczonego dostępu do pamięci, ale nic mi to nie mówi
Oczywiście tak ja w temacie - chodzi o zadanie PP0502B - Tablice
Chyba że należy tutaj użyć wskaźników?
Mam kod zbliżony rozumowaniu do kodu użytkowników: lukaster i wuduchild. Wasze kody dostały AC?
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 ";