Vercevales Temat założony przez niniejszego użytkownika |
Nie chce utworzyć tablicy znaków » 2010-12-31 19:18:45 #include <iostream>
int main() { int ilosc = 4; int litery = 6; char tab_kraj[ ilosc ][ litery ] = { { 'R', 'o', 's', 'j', 'a' }, { 'P', 'o', 'l', 's', 'k', 'a' }, { 'N', 'i', 'e', 'm', 'c', 'y' }, { 'C', 'z', 'e', 'c', 'h', 'y' }, }; int tab_pkt[ ilosc ] = { 4, 18, 9, 13 }; std::cout << "|" << " lp " << "|" << " Państwo " << "|" << " Punkty " << "|" << std::endl << "-------------------------" << std::endl << "|" << " 1 " << "|" << tab_kraj[ 0 ] << " " << "|" << tab_pkt[ 0 ] << "|" << std::endl; return 0; }
wywala błąd
/home/karol/C++/punkty.cpp||In function ‘int main()’:| /home/karol/C++/punkty.cpp|12|error: variable-sized object ‘tab_kraj’ may not be initialized| /home/karol/C++/punkty.cpp|15|error: variable-sized object ‘tab_pkt’ may not be initialized| ||=== Build finished: 2 errors, 0 warnings ===|
|
|
ison |
» 2010-12-31 19:28:24 int ilosc = 4; int litery = 6; char tab_kraj[ ilosc ][ litery ] = { { 'R', 'o', 's', 'j', 'a' }, { 'P', 'o', 'l', 's', 'k', 'a' }, { 'N', 'i', 'e', 'm', 'c', 'y' }, { 'C', 'z', 'e', 'c', 'h', 'y' }, };
|
masz niepotrzebny przecinek ilość liter się nie zgadza, na końcu zawsze musi być znak '\0' - sam zostanie dopisany :) nie musisz się o to martwić, jedyne co to musisz zrobić dla niego miejsce w przypadku ciągu znaków { 'R', 'o', 's', 'j', 'a' },
możesz zwyczjanie pisać poza tym nie możesz określać rozmiaru tablicy zmiennymi, które nie są stałe const int ilosc = 4; const int litery = 7; char tab_kraj[ ilosc ][ litery ] = { { "Rosja" }, { "Polska" }, { "Niemcy" }, { "Czechy" } };
|
|
DejaVu |
» 2010-12-31 19:43:06 A ja dodam od siebie, że błędem jest latać co i rusz o pomoc na forum zamiast samemu pomęczyć się i pokombinować bądź przeczytać jeszcze raz materiały z których się uczysz. |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2010-12-31 20:52:58 Dziękuję ison za pomoc :) wystarczyło dodać const :) Niestety nie mogę znaleźć zbędnego przecinka (wszystko się już kompiluje) #include <iostream>
int main() { const int ilosc = 4; const int litery = 6; char tab_kraj[ ilosc ][ litery ] = { { 'R', 'o', 's', 'j', 'a' }, { 'P', 'o', 'l', 's', 'k', 'a' }, { 'N', 'i', 'e', 'm', 'c', 'y' }, { 'C', 'z', 'e', 'c', 'h', 'y' }, }; int tab_pkt[ ilosc ] = { 4, 18, 9, 13 }; std::cout << "|" << " lp " << "|" << " Państwo " << "|" << " Punkty " << "|" << std::endl << "-------------------------" << std::endl << "|" << " 1 " << "|" << tab_kraj[ 0 ] << " " << "|" << tab_pkt[ 0 ] << "|" << std::endl; return 0; }
PS, a gdzie się robi miejsce na '\0' i co on daje ?? |
|
ison |
» 2010-12-31 21:00:08 const int ilosc = 4; const int litery = 6; char tab_kraj[ ilosc ][ litery ] = { { 'R', 'o', 's', 'j', 'a' }, { 'P', 'o', 'l', 's', 'k', 'a' }, { 'N', 'i', 'e', 'm', 'c', 'y' }, { 'C', 'z', 'e', 'c', 'h', 'y' }, };
PS, a gdzie się robi miejsce na '\0' i co on daje ?
|
mówi gdzie się kończy ciąg znaków, z czasem jak się będziesz uczył o wskaźnikach i dowiesz co to jest tak na prawdę tablica to zrozumiesz jego znaczenie póki co porównaj sobie to co wypiszą te 2 programy: #include <iostream>
int main() { char str[ 2 ] = { 'a', 'b' }; std::cout << str; }
#include <iostream>
int main() { char str[ 3 ] = { 'a', 'b' }; std::cout << str; }
uwierz mi na słowo że miejsce na ten znak jest ważne, bez niego zamiast słowa Niemcy
możesz kiedyś ujrzeć Niemcy89fh9ergfejpgkys5;yr5y |
|
Vercevales Temat założony przez niniejszego użytkownika |
» 2010-12-31 21:14:34 Bardzo dziękuję. Właśnie mi to uświadomiłeś :) ponieważ: gdy było: wyświetliło
| lp | Państwo | Punkty | ------------------------- | 1 | Rosja PolskaNiemcyCzechy | 4 | | 2 | PolskaNiemcyCzechy | 18 | | 3 | NiemcyCzechy | 9 | | 2 | Czechy | 13 |
a gdy dałem: to już wyświetliło dobrze :)
| lp | Państwo | Punkty | ------------------------- | 1 | Rosja | 4 | | 2 | Polska | 18 | | 3 | Niemcy | 9 | | 2 | Czechy | 13 |
Bardzo dziękuję za pomoc :) |
|
« 1 » |