• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dwuwymiarowa dynamiczna tablica typu string

VPS Starter Arubacloud
+1 głos
4,830 wizyt
pytanie zadane 14 września 2015 w C i C++ przez Wojtek Wiedeński Bywalec (2,460 p.)

W pokrewnych wątkach nie znalazłem odpowiedzi. W poniższym kodzie na stałe deklaruje rozmiar dwuwymairowej tablicy. Jak dynamicznie przydzielać jej wcześniej ilość kolumn i wierszy?

string tab[2][3] = {{"Ala", "ma", "kota"}, {"Kot", "ma", "problemy"}};
							
	for(int i=0; i<2; i++)
	{
		for(int j=0; j<3; j++)
		{
			cout << tab[i][j] << " ";
		}
		cout << endl;
	}

 

4 odpowiedzi

+1 głos
odpowiedź 14 września 2015 przez Ehlert Ekspert (213,530 p.)
wybrane 14 września 2015 przez Wojtek Wiedeński
 
Najlepsza

TO SAMO dla typu String

+1 głos
odpowiedź 14 września 2015 przez event15 Szeryf (93,790 p.)
int a = 2, b = 3;
cout << "Podawaj wielkości tablic:" << endl;
cin>>a>>b;

int tab[a][b];

W skrócie :)
W przypadku stringu będzie podobnie.
Jeżeli chcesz zrobić to bardziej dynamicznie to pewnie wskaźniki jakieś. Ale to raczej ktoś, kto ma większe doświadczenie z C++ podpowie.

komentarz 14 września 2015 przez Szykem2 Nałogowiec (29,510 p.)
Każdy porządny kompilator powinien zaprotestować i wywalić błąd, że tworzysz tablice nie mając stałych wartości. Jak już podawać wymiary tablicy to lepiej tworzyć operatoren new.
komentarz 14 września 2015 przez Ehlert Ekspert (213,530 p.)
Tak jak kolega wyżej napisał statycznej tablicy tak nie stworzysz.
komentarz 14 września 2015 przez event15 Szeryf (93,790 p.)

Więc chylę głowę! smiley

komentarz 14 września 2015 przez Ehlert Ekspert (213,530 p.)

Spoko luz, wybaczone laugh

+1 głos
odpowiedź 14 września 2015 przez DiZZie Gaduła (3,170 p.)

Musisz zadeklarować wskaźnik do wskaźnika, np

string **tab;
tab = new string*[2];
for(int i = 0; i < 2; i++)
{
tab[i] = new string[3];
}

Nie wiem czy w tym kodzie nie ma błędów, bo nie mam zbytnio czasu i pisałem na szybko ;)

komentarz 14 września 2015 przez Wojtek Wiedeński Bywalec (2,460 p.)
Dzięki za chęci! Znalazłem satysfakccjonującą mnie odpowiedź :-)
0 głosów
odpowiedź 14 września 2015 przez Wojtek Wiedeński Bywalec (2,460 p.)

Dzięki za pomoc, Ehlert podesłał mi praktycznie gotowca, ale poniżej wstawiam kod zmodyfikowany na moje potrzeby dla potomnych :-)

#include <iostream>

using namespace std;

int main(){
	
	 int w,k;
	 cout<<"Liczba wierszy: ";
	 cin>>w;
	 cout<<"Liczba kolumn: ";
	 cin>>k; 
	
	cout<<"\n\nTABLICA 2D - C++\n";
	string **tab2 = new string *[w]; //alokacja pamieci
	for ( int i = 0; i < w; ++i )
	 {
	 	tab2[i] = new string [k]; //alokacja pamieci
	 	for ( int j = 0; j < k; ++j) //wpisanie wartosci do tablicy
	 	{
	 		cout << "Podaj zawartosc ["<<i+1<<"]["<<j+1<<"]: ";
		 	cin >> tab2[i][j];
		}
	 }
	//wypisz tab2[w][k]
	for ( int i = 0; i < w; ++i, cout<<endl )
	 	for ( int j = 0; j < k; ++j)
	 		cout<<tab2[i][j]<<'\t';
	
        //zniszcz tab2
	for ( int i(0); i < w; ++i )
	 	delete [] tab2[i]; //uwolnienie pamieci
		delete [] tab2; //uwolnienie pamieci
	 	tab2 = NULL; 

	return 0;
}

 

Podobne pytania

–1 głos
1 odpowiedź 487 wizyt
pytanie zadane 21 września 2018 w C i C++ przez Kacperos_89 Początkujący (400 p.)
0 głosów
2 odpowiedzi 1,606 wizyt
0 głosów
2 odpowiedzi 483 wizyt
pytanie zadane 6 kwietnia 2016 w C i C++ przez mateusz12 Użytkownik (530 p.)

92,843 zapytań

141,782 odpowiedzi

320,858 komentarzy

62,174 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...