Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Wyjaśnienie pluginu
#21
Napisano 31.12.2014 15:59
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#22
Napisano 31.12.2014 16:11
1 2 3 4 5 6 7
1 1 2 3 4 5 6 7
2 P W S C P S N
Jak może być jeden wymiar, skoro jeden definiuje liczby, a drugi nazwy ? Gdyby był jeden wymiar, zmieściły by się tylko liczby, jak chciałbyś zrobić 1 wymiar z nazwami, zmieściła by się tylko jedna nazwa
nazwytyg[1][Tutaj jest nazwa odpowiadająca "jedynce"]
nazwytyg[1] Nie było by miejsca na nazwe dni tyg
nazwytyg[]
{
"poniedzialek"
"wtorek"
// itd
}
Nie zadziałało by wcale, bo jest tylko jeden wymiar tablicy i nie ma miejsca na więcej nazw niż jedna. ( Nie wiem jednak czy jedna by się zmieściła w taką tablice. )
Użytkownik NoLiFeR edytował ten post 31.12.2014 16:12
#23
Napisano 31.12.2014 16:12
No ale przecież wystarczy tablica jednowymiarowa typu string która będzie przechowywać znaki.
Przykładowo napisałem taki kod ,co prawda on jest napisany w c++ ale wygląda podobnie:
#include <iostream> #include <string> using namespace std; string dni [7] = {"Poniedzialek","Wtorek","Sroda","Czwartek","Piatek","Sobtoa","Niedziela"}; int main() { cout <<"Dzisiaj jest:"<<dni [2]; return 0; }
No i wystarczy że napisze w instrukcji cout nazwę tablicy i konkretny jej element i wyświetla mi się dzień tygodnia tak jaki zapisałem w tej tablicy w tym przypadku "Sroda".
Także nadal nie mogę tego zrozumieć po co tablica dwuwymiarowa ?
#24
Napisano 31.12.2014 16:13
Bo pawn ma lekko inną składnie niż c++
#25
Napisano 31.12.2014 16:23
Czyli w c++ wystarczyła by do tego tylko jednowymiarowa tablica ?A jak chcę się póżniej odwołać w języku Pawn np do Srody to wystarczy że napiszę taką instrukcję:
new dni [7][ ] = {"Poniedzialek","Wtorek","Sroda","Czwartek","Piatek","Sobota","Niedziela"}
client_print(id, print_chat, "Dzisiaj jest%s",dni[2]); //Czy na koncu musi byc dni[2][]
#26
Napisano 31.12.2014 16:25
dni[2] Wystarczy.
Bo 2 jest odwołaniem do drugiego wymiaru tej tablicy licząc od zera, czyli do środy.
Użytkownik NoLiFeR edytował ten post 31.12.2014 16:28
#27
Napisano 31.12.2014 16:37
No ale przecież wystarczy tablica jednowymiarowa typu string która będzie przechowywać znaki.
Przykładowo napisałem taki kod ,co prawda on jest napisany w c++ ale wygląda podobnie:
#include <iostream> #include <string> using namespace std; string dni [7] = {"Poniedzialek","Wtorek","Sroda","Czwartek","Piatek","Sobtoa","Niedziela"}; int main() { cout <<"Dzisiaj jest:"<<dni [2]; return 0; }No i wystarczy że napisze w instrukcji cout nazwę tablicy i konkretny jej element i wyświetla mi się dzień tygodnia tak jaki zapisałem w tej tablicy w tym przypadku "Sroda".
Także nadal nie mogę tego zrozumieć po co tablica dwuwymiarowa ?
ponieważ string(klasa ktora ułatwia obsługę na charach) w c++ to tablica znaków. rownie dobrze z c++ moglbys napisac char dni [x][7]
Sell - System Klanów (wojny, top15 etc)
Kontakt GG: 7285018
#28
Napisano 01.01.2015 00:19
Tablica 1 wymiarowa jest jak oś liczbowa. Tablica 2 wymiarowa jak kwadratowy układ współrzędnych, 3 wymiarowa jak sześcienny (przestrzenny), a czwartą i wyżej już sobie gorzej wyobrazić.
W każdym miejscu takiej osi, układu itp możesz coś zapisać. Może być to znak, liczba, a w przypadku języka C++ nawet i cały string.
Różnica jest tylko taka, że tablica jest numerowana wyłącznie liczbami całkowitymi od 0 w górę i ma ograniczoną wielkość.
Co oznacza, że indeks tablicy NIE ZAJMUJE w niej miejsca.
dni[2] Wystarczy.
Bo 2 jest odwołaniem do drugiego wymiaru tej tablicy licząc od zera, czyli do środy.
A to jest odwołanie do 2 elementu 1 wymiaru tablicy. dni[2][2] wskaże o z wyrazu środa.
W praktyce zarówno w pawnie jak i w C nie istnieje coś takiego jak tablica 2 wymiarowa, wszystkie są jednowymiarowe. Ale... tablica może wewnątrz mieć tablicę, dlatego dni[2] zwraca całą tablicę 1 wymiarową przechowującą napis środa.
I nie ma czegoś takiego jak dni[2][], bo pustych nawiasów kwadratowych możemy używać wyłącznie przy tworzeniu tablicy i dodatkowo wyłącznie wtedy, gdy od razu przypisujemy do niej coś. Pusty nawias informuje kompilator, że rozmiar tablicy musi sobie sam obliczyć na podstawie tego, co do niej wpisujemy przy jej tworzeniu.
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#29
Napisano 01.01.2015 02:17
Mój błąd Dziękuje za poprawkę.
// Czyli mając taką tablice o jakiej jest mowa w temacie, mógłbym podać tam [7] zamiast [] ?
//// Lepiej dla mnie i dla Forum będzie, jak nie będe wypowiadał się w tematach dot tłumaczeń funkcji.
Masz racje, doputy nie napisałeś powyższego postu nie miałem pojęcia czym są tablice dwu, trzy etc wymiarowe. Takie było moje wyobrażenie na ich temat.
Poczytam poradniki i dopiero wtedy zaczne się wypowiadać w tego typu sprawach.
Użytkownik NoLiFeR edytował ten post 01.01.2015 02:27
#30
Napisano 01.01.2015 15:04
W c++ lub w c pewnie tak, ale w pawnie wyświetli "oda".dni[2][2] wskaże o z wyrazu środa.
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#31
Napisano 02.01.2015 05:07
W c++ lub w c pewnie tak, ale w pawnie wyświetli "oda".dni[2][2] wskaże o z wyrazu środa.
Wydaje mi się, że w C++ też. Podajesz w ten sposób punkt początkowy ciągu znaków.
@Proziom1
w pawn nie ma "stringa" jako zmiennej nie będącej tablicą, a i w C++ jest dość ułomny, bo o ile pamiętam nie potrafi przechować białych znaków.
#32
Napisano 02.01.2015 16:28
Niestety nie. W C++ tablica jest wskaźnikiem na 1 jej element, ale już element tablicy jest po prostu elementem. Przy użyciu tego na "starych" stringach (z języka C, czyli tablicowych) otrzymamy błąd typu przy kompilacji, jeśli podasz to zamiast stringa, bo takie miejsce oczekuje wskaźnika. Przy użyciu na nowych stringach nastąpi automatyczne rzutowanie pojedynczego znaku na string i otrzymasz tylko ten 1 znak.Wydaje mi się, że w C++ też. Podajesz w ten sposób punkt początkowy ciągu znaków.
W C++ jest pełnowartościowy string i przechowuje dowolne napisy, łącznie z unicode. Tylko operacje na unicode są dość kłopotliwe.w pawn nie ma "stringa" jako zmiennej nie będącej tablicą, a i w C++ jest dość ułomny, bo o ile pamiętam nie potrafi przechować białych znaków.
W pawnie w zależności od kontekstu Pawn nie posiada wskaźników, a tablica de-facto jest 1 elementem tej tablicy. Jeśli podasz w kontekście znaku tablicę bez indeksu, otrzymasz jej 1 znak. Jeśli podasz w kontekście stringa dowolny indeks tablicy otrzymasz napis zaczynający się na tym indeksie i kończący na pierwszym napotkanym w pamięci nullu (również poza tą tablicą).W c++ lub w c pewnie tak, ale w pawnie wyświetli "oda".
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych