Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Nie chce utworzyć tablicy znaków

Ostatnio zmodyfikowano 2010-12-31 21:14
Autor Wiadomość
Vercevales
Temat założony przez niniejszego użytkownika
Nie chce utworzyć tablicy znaków
» 2010-12-31 19:18:45
C/C++
#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 ===|

P-26039
ison
» 2010-12-31 19:28:24
C/C++
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
C/C++
{ 'R', 'o', 's', 'j', 'a' },
możesz zwyczjanie pisać
C/C++
{ "Rosja" },

poza tym nie możesz określać rozmiaru tablicy zmiennymi, które nie są stałe

C/C++
const int ilosc = 4;
const int litery = 7;
char tab_kraj[ ilosc ][ litery ] = {
    { "Rosja" },
    { "Polska" },
    { "Niemcy" },
    { "Czechy" }
};
P-26040
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.
P-26041
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)

C/C++
#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 ??
P-26044
ison
» 2010-12-31 21:00:08
C/C++
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' }, // <--------------- zbędny przecinek
};

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:
C/C++
#include <iostream>

int main()
{
    char str[ 2 ] = { 'a', 'b' };
    std::cout << str;
}
C/C++
#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
P-26045
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:
C/C++
// ...
const int litery = 6;
// ...

wyświetliło



| lp | Państwo | Punkty |
-------------------------
| 1  |  Rosja PolskaNiemcyCzechy |   4    |
| 2  |  PolskaNiemcyCzechy |   18   |
| 3  |  NiemcyCzechy |   9    |
| 2  |  Czechy |   13   |


a gdy dałem:
C/C++
// ...
const int litery = 7;
// ...

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 :)
P-26048
« 1 »
  Strona 1 z 1