28 / 80
Nov 2017

aby nie mieć SIGSEV nie należy używać elementów tablicy z poza jej zakresu :slight_smile:

czyli np. dla:

int tabela[10];

wolno użyć tabela[0], tabela[1], ..., tabela[9] ale nie tabela[-1], czy tabela[10]

Człowieku, naucz się najpierw pisać i mówić, a dopiero potem zajmij się programowaniem. "Mam taki problem nie bardzo rozumie..." Sorry za upierdliowść ale niezmiernie mnie denerwuje powszechny analfabetyzm...

Chętnie zniosę dysleksję, dysgrafię, niegramatyczne i nieortograficzne pytania.

Tylko niech one mają sens, a nie, że sugerują, że zadający pytanie skończył czytanie podręcznika C/C++
na okładce, ale już wstęp był dla niego za trudny

3 months later

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

2 months later
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 :wink: ]

Jaki ja jestem teeeeeeeepyyyyy.
Zapamiętam, czytać ze zrozumieniem.
Dzięki wielkie.

6 months later

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 ";

Przeanalizuj ten fragment to znajdziesz odpowiedź na swoje pytanie.

wiem że ten fragment szwankuje, ale nie wiem czemu;
dla mnie wygląda to tak jakby dla pierwszej połowy wyświetlały się adresy zamiast wartości;
próbowałem dorzucić * oraz &, ale nie mogę tego potem skompilować;
głowiłem się nam przedziałem, ale uznałem że jesk OK;
nie ogarniam tych wskaźników

4 redysz

Napisałam przeanalizuj, rozpisz krok po kroku co robisz, gdzie wpusujesz, co wypisujesz, jakie indeksy używane. Możesz przedtym wypełnić tablicę zerami lub inną wartością.

@majormarino

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:

  1. 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ź.

  2. Dlaczego definiujesz n przed int 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.

  3. 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ą?

  1. To co wskazała @yula. Podpowiedź: przypisujesz coś do jakiegoś elementu tablicy, a wyświetlasz inny.

  2. 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ć.

  1. 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 :slight_smile:

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?

Jedyne dobre i pewne źródła wiedzy o C++ dostępne w internecie to dokumentacja i stackoverflow.

Przepisywanie z jednej do drugiej tablicy na wskaźnikach rozumianych w taki sposób jak we wklejonym fragmencie kodu przebiega identycznie jak przy zwykłych zmiennych tablicowych.