Siema wszystkim może na początek wycinek treść z zadania:
"Napisz program, który pozwala użytkownikom zapisywać, kiedy ostatnio rozmawiali ze swoimi znajomymi. Użytkownicy powinni mieć możliwość dodawania nowych znajomych (tylu, ile tylko chcą!) oraz przechowywania liczby dni, które upłynęły od czasu ostatniej rozmowy z danym znajomym."
A oto i problem:
Dlaczego tablica stringow nie chce pomnożyć swojego wymiaru *2 gdy zostaje zapełniona?? jak zmienię wszędzie string na char to literki ładnie zapełniają tablice bez końca, a gdy string dojdzie do ustalonego z góry rozmiaru (w tym przypadku 3) to wyskakuje "STRING.EXE"przestał działać.
Czytałem, że polecacie biblioteke STL, vektory itd. ale to mam za dwa rozdziały dopiero, chce to zrobić bez ich pomocy...Dziękuję z góry za odpowiedź, pozdrawiam i wstawiam kod !!!
#include <iostream>
#include <string>
using namespace std;
string *zwiekszTablice (string* w_family, int *rozmiar)
{
*rozmiar *= 2;
string *w_nowe_wartosci = new string[ *rozmiar ];
for ( int i = 0; i < *rozmiar; ++i )
{
w_nowe_wartosci[ i ] = w_family[ i ];
}
delete [] w_family;
return w_nowe_wartosci;
}
void drukujTablice (string *w_family, int rozmiar, int zajete_pola)
{
cout << "Calkowity rozmiar tablicy: " << rozmiar << endl;
cout << "Liczba zajetych pol tablicy: " << zajete_pola<< endl;
cout << "Wartosci w tablicy: " << endl;
for ( int i = 0; i < zajete_pola; ++i )
{
cout << "w_wartosci[" << i << "] = " << w_family[ i ] << endl;
}
}
int main()
{
int nastepny_element=0;
string ksywa;
int rozmiar=3;
string *w_family = new string[rozmiar];
cout<<"podaj ksywe:"<<endl;
getline(cin,ksywa);
while(ksywa !="a")
{
if ( rozmiar == nastepny_element + 1 )
{
w_family = zwiekszTablice( w_family, & rozmiar );
}
w_family[ nastepny_element ] = ksywa;
nastepny_element++;
cout << "Oto biezce parametry tablicy: " << endl;
drukujTablice( w_family, rozmiar, nastepny_element );
cout << "Podaj a (a - wyjscie z programu): ";
cin >> ksywa;
}
delete [] w_family;
cin.ignore ();
cin.get ();
return 0;
}
P.S byl podobny temat z identycznym zadaniem, ale zostawienie samego komentarza nie przesuwa posta na pierwszą stronę wiec zakaldam nowy ;)