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

Dwuwymiarowa dynamiczna tablica typu string

Object Storage Arubacloud
+1 głos
4,657 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 (212,670 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 (212,670 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 (212,670 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ź 476 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,470 wizyt
0 głosów
2 odpowiedzi 395 wizyt
pytanie zadane 6 kwietnia 2016 w C i C++ przez mateusz12 Użytkownik (530 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...