Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Dynamiczna alokacja tablic


Rekomendowane odpowiedzi

Opublikowano

Ku mojemu zdziwieniu fragment kodu: 

...
    char **tab1 = new char*[n]; // tryb
    char **tab2 = new char*[n]; // rodzaj talerza

    for(int i = 0; i < n; i++)
    {
        tab1[i] = new char[10];
        tab2[i] = new char[10];
        cin >> tab1[i];
        cin >> tab2[i];


        if(tab1[i] == "dziekuje" && tab2[i] == "plytki") {cin >> ident[0][i]; *wskP = ident[0][i]; wskP++;}
        else if(tab1[i] == "dziekuje" && tab2[i] == "gleboki") {cin >> ident[1][i]; *wskG = ident[1][i]; wskG++;}

        if(tab1[i] == "prosze" && tab2[i] == "plytki") {*wskN = *wskP; wskN++;}
    }
... 

nie działa tak, jak powinien. Otóż mimo wpisania w pierwszą i drugą tablicę odpowiednich słów, warunki instrukcji nie są spełniane. Dlaczego?

Opublikowano

Pod tab masz adres to tablicy charów które alokujesz

tab1[i] = new char[10];

Musisz zmienić 

cin >> tab1[i];

na 

cin >> *tab1[i];

I w ifach 

if (strcmp(tab1[i], "dziekuje") && ...)
Opublikowano

 

Pod tab masz adres to tablicy charów które alokujesz

tab1[i] = new char[10];

Musisz zmienić 

cin >> tab1[i];

na 

cin >> *tab1[i];

I w ifach 

if (strcmp(tab1[i], "

edit:

if jest ok, ale pomija drugi cin.

Opublikowano

 

 

Pod tab masz adres to tablicy charów które alokujesz

tab1[i] = new char[10];

Musisz zmienić 

cin >> tab1[i];

na 

cin >> *tab1[i];

I w ifach 

if (strcmp(tab1[i], "dziekuje") && ...)

 

Zgodnie z tym drugi cin jest pomijany, a przy instrukcji warunkowej wyświetlany jest błąd: "ISO C++ forbids comparison between pointer and interger". 

 

 

Pisałem na telefonie i źle Ci to napisałem.

 

cin >> tab zostaw jak miałeś ale w ifach zrób 

if (strcmp(tab1[i], "dziekuje") == 0 && ...)

zapomniałem że strcmp zwraca 0 jeśli łańcuchy znaków są równe

Opublikowano

 

 

 

Pod tab masz adres to tablicy charów które alokujesz

tab1[i] = new char[10];

Musisz zmienić 

cin >> tab1[i];

na 

cin >> *tab1[i];

I w ifach 

if (strcmp(tab1[i], "dziekuje") && ...)

 

Zgodnie z tym drugi cin jest pomijany, a przy instrukcji warunkowej wyświetlany jest błąd: "ISO C++ forbids comparison between pointer and interger". 

 

 

Pisałem na telefonie i źle Ci to napisałem.

 

cin >> tab zostaw jak miałeś ale w ifach zrób 

if (strcmp(tab1[i], "dziekuje") == 0 && ...)

zapomniałem że strcmp zwraca 0 jeśli łańcuchy znaków są równe

 

Zupełnie nie zwróciłem uwagi, że nie mogę tak porównywać łańcuchów. Dziękuję za pomoc.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...