Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Wyjaśnienie pluginu


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
31 odpowiedzi w tym temacie

#21 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 31.12.2014 15:59

każdy znak zajmuje 1 komórkę tablicy. W 1 wymiarze masz zapisane konkretne dni tygodnia, w 2 wymiarze poszczególne znaki każdego z dni tygodnia.
  • +
  • -
  • 0

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ę.
 
1988650.png?theme=dark


#22 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

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

  • +
  • -
  • -1

#23 Proziom1

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:30
  • Imię:Damian
  • Lokalizacja:Polska
Offline

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 ?


  • +
  • -
  • 0

#24 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 31.12.2014 16:13

Bo pawn ma lekko inną składnie niż c++


  • +
  • -
  • 0

#25 Proziom1

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:30
  • Imię:Damian
  • Lokalizacja:Polska
Offline

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][]

 

 


  • +
  • -
  • 0

#26 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

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

  • +
  • -
  • -1

#27 Klakier

    Volenti non fit iniuria

  • Power User

Reputacja: 391
Wszechpomocny

  • Postów:878
  • GG:
  • Imię:Sebastian
  • Lokalizacja:Mogilno
Offline

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]


  • +
  • -
  • 0

Sell - System Klanów (wojny, top15 etc)

 

Kontakt GG: 7285018


#28 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 01.01.2015 00:19

Po 1. pana NoLiFeRa nie słuchaj bo bzdury wygaduje... I nie wie czym są wymiary na dodatek.

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.
  • +
  • -
  • 1

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ę.
 
1988650.png?theme=dark


#29 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

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

  • +
  • -
  • 0

#30 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 01.01.2015 15:04

dni[2][2] wskaże o z wyrazu środa.

W c++ lub w c pewnie tak, ale w pawnie wyświetli "oda".
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#31 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 02.01.2015 05:07

 

dni[2][2] wskaże o z wyrazu środa.

W c++ lub w c pewnie tak, ale w pawnie wyświetli "oda".

 

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.


  • +
  • -
  • 0

#32 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 02.01.2015 16:28

Wydaje mi się, że w C++ też. Podajesz w ten sposób punkt początkowy ciągu znaków.

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.

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 C++ jest pełnowartościowy string i przechowuje dowolne napisy, łącznie z unicode. Tylko operacje na unicode są dość kłopotliwe.

W c++ lub w c pewnie tak, ale w pawnie wyświetli "oda".

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ą).
  • +
  • -
  • 0

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ę.
 
1988650.png?theme=dark





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych