pekfos |
» 2017-08-06 16:23:20 Zastanawiam się jeszcze czy na końcu każdej tablicy dodać 0 lub NULL? |
To jedno z możliwych rozwiązań twojego problemu. Nie ma po co tego robić, jeśli problem rozwiążesz w inny sposób. |
|
Monika90 |
» 2017-08-06 17:00:39 Dzięki Monika90 za kod. Nie wpadłbym na takie rozwiązanie.
|
Istnieją nawet biblioteki które to implementują https://github.com/Microsoft/GSL#include <iostream> #include <gsl/span>
const char * tab1[] = { "Piotr", "Pawel" }; const char * tab2[] = { "Tomasz", "Andrzej" }; const char * tab3[] = { "Szymon" }; const char * tab4[] = { "Mateusz" }; const char * tab5[] = { "Marek", "Jakub", "Lukasz" }; gsl::span < const char *> tab[] = { tab1, tab2, tab3, tab4, tab5 };
int main() { for( auto & a: tab ) { for( auto & name: a ) std::cout << name << ' '; std::cout << '\n'; } }
|
|
nanoant20 Temat założony przez niniejszego użytkownika |
» 2017-08-06 18:24:15 Monika90 jeszcze raz dziękuję za pokazanie rozwiązania. Ale i tak postaram się rozwiązać to moje zadanie, odnosząc się do instrukcji (pouczenia) pekfos'a. Muszę uzupełnić ten mój brak wiedzy. P.S. pekfos poprawiłem tego for'a #include <iostream> #include <cstring>
using namespace std;
const char * tab1[] = { "Piotr", "Pawel" }; const char * tab2[] = { "Tomasz", "Andrzej" }; const char * tab3[] = { "Szymon" }; const char * tab4[] = { "Mateusz" }; const char * tab5[] = { "Marek", "Jakub", "Lukasz" }; const char * tab[] = { * tab1, * tab2, * tab3, * tab4, * tab5 };
int main() { for( unsigned int i = 0; i < sizeof tab / sizeof tab[ 0 ]; i++ ) { for( unsigned int j = 0; j < sizeof tab; j++ ) { cout << tab[ i ][ j ] << " "; } cout << endl; } return 0; }
Ale dalej sypią się śmieci z pamięci. |
|
jankowalski25 |
» 2017-08-08 16:46:04 Przekraczasz indeks tablicy. |
|
pekfos |
» 2017-08-08 17:34:51 Gdzie sens? To rozmiar w bajtach i innej tablicy niż potrzeba. Dla danego i potrzebujesz rozmiaru tablicy pod tab[i]. W zależności od konkretnego i rozmiary będą różne, wiec biorąc pod uwagę to, że wartość zmiennej nigdy nie wpłynie na wynik sizeof, żaden sizeof ci nie poda tu poprawnego rozmiaru. |
|
nanoant20 Temat założony przez niniejszego użytkownika |
» 2017-08-08 22:34:26 rozumiem, że powinienem zrobić coś takiego strlen( tab[ i ] ) |
|
pekfos |
» 2017-08-08 22:40:21 I jaki to dało efekt? |
|
nanoant20 Temat założony przez niniejszego użytkownika |
» 2017-08-09 09:15:14 Wyświetla wszystkie elementy z tablcy tab[] #include <iostream> #include <cstring>
using namespace std;
const char * tab1[] = { "Piotr", "Pawel" }; const char * tab2[] = { "Tomasz", "Andrzej" }; const char * tab3[] = { "Szymon" }; const char * tab4[] = { "Mateusz" }; const char * tab5[] = { "Marek", "Jakub", "Lukasz" }; const char * tab[] = { * tab1, * tab2, * tab3, * tab4, * tab5 };
int main() { for( unsigned int i = 0; i < sizeof tab / sizeof tab[ 0 ]; i++ ) { for( unsigned int j = 0; j < strlen( tab[ i ] ); j++ ) { cout << tab[ i ][ j ] << " "; } cout << endl; } return 0; }
|
|
1 « 2 » |