Tablice dwuwymiarowe, pomoc (krotki kod)

Tablice dwuwymiarowe, pomoc (krotki kod)
Pabloo111
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 57
0
Kopiuj

	void parts() {

		int count = 1;
		for (int i = 0; i < user_add.length(); i++)
		{
			if(user_add[i] != 44)
			if (user_add[i] == 44)count++;
		}

		string **tab = new string*[user_add.length()];
		
		for (int i = 0; i < count; i++)
		{
			tab[i] = new string [user_add.length()];
		}
		
		int j = 0;
		int i=0;
		do{
			tab[i][j] = user_add[i];
			cout << tab[i][j];
			if (user_add[i] == 44)
			{
				cout << endl;
				j++;
			}
			i++;
		} while (user_add[i] != '\0');

	
		for (int i = 0; i < count; i++)delete[] tab[i];
		delete[] tab;
			
		

	}

Witam, po wysietleniu pierwszej literki wywala błąd
"Exception thrown at 0x011D4B9B in L1Z5.exe: 0xC0000005: Access violation writing location 0xCDCDCDE1."

Domyślam się że coś źle zrobiłem z dostępem do pamięci lub allokacja pamięci ?
Program ma dzielić zdanie na podstawie przecinków i wrzucać je do dynamicznej tablicy. Proszę o pomoc(jestem początkujący).

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
1
  1. Skąd Ci się magicznie bierze user_add?
  2. Czemu używasz new[] zamiast std::vector?
Pabloo111
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 57
0
hauleth napisał(a):
  1. Skąd Ci się magicznie bierze user_add?
  2. Czemu używasz new[] zamiast std::vector?

1.To jest atrybut klasy, wkleiłem tylko metodę klasy żeby nie wklejać całego kodu bo reszta działa prawidłowo.
2. Powiedziano mi że tak najlepiej, nie znam std::vector ale jeśli jest to lepsza metoda mogę spróbować w ten sposób.

tajny_agent
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1340
1

Pierwsza pętla jest totalnie wycinana z kodu przez kompilator i Twoje count jest zawsze równe 1.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.