Potrzebuję dynamicznej tablicy

0

Dobry wieczór,
ma ktoś może fajny sposób na stworzenie czegoś w rodzaju struktury dynamicznej
powiedzmy w strukturze mam zmienną

char nazwa[ROZMIAR]; 

w moim programie chce zapytać użytkownika ile pól chce wprowadzić, po czym właśnie tyle pól wprowadzam do struktury

3

std::string ?
Z opisu jednak wydaje mi się że chcesz mieć strukturę o dynamicznej liczbie pól?
Wtedy std::map<string,string>

1

Mnie osobiście bardzo odpowiadają wektory. Poniżej taki oto "na poczekaniu" zrobiony program, demonstrujący możliwe działania na wektorach. Tu akurat użyłem typu int, ale oczywiście równie dobrze można zastosować char. Na początku programu użytkownik wpisuje jedynie rozmiar wektora, a na końcu jest opcja z samodzielnym wpisywaniem elementów do wektora o wybranym rozmiarze.

#include <iostream>
#include <vector>//NIEZBEDNA BIBLIOTEKA
#include <time.h>
#include <windows.h>


int rozmiar,elementow1,elementow2,wartosc,numer;

using namespace std;

int main()
{

    ////////////////////DEKLARACJA WEKTOROW//////////////////////
//PIERWSZE W NAWIASIE-LICZBA ELEMENTOW W WEKTORZE, DRUGIE W NAWIASIE-ZAWARTOSC KOMORKI WEKTORA

    vector <int> vec1(elementow1,wartosc);
    vector <int> vec2(elementow2,wartosc);

    ////////////////////PRZYKLADOWE OPERACJE//////////////////////
    //TWORZENIE WEKTORA O DANEJ DLUGOSCI:

    cout<<"Podaj rozmiar wektora 1: ";
    cin>>rozmiar;

    srand(time(NULL));

    for(int i=0;i<rozmiar;i++)
    {
        wartosc=rand()%10;//LOSOWANIE WARTOSCI OD 0-1 DO KOMOREK WEKTORA
        vec1.push_back(wartosc);//FUNKCJA DODAWANIA NOWEJ WARTOSCI NA KONCU WEKTORA
    }

    cout<<endl<<endl<<"Oto rozmiar wektora 1: "<<vec1.size()<<endl<<endl;//FUNKCJA PODAWANIA ROZMIARU WEKTORA

    cout<<"Oto elementy wektora 1: ";
    for(int i=0;i<vec1.size();i++)
    {
        cout<<vec1.at(i)<<",";//FUNKCJA POKAZYWANIA WARTOSCI W WYBRANEJ KOMORCE WECTORA
    }

    cout<<endl<<endl<<"Podaj numer komorki wectora (od 0 do "<<vec1.size()<<"), ktorej wartosc chcesz poznac: ";
    cin>>numer;
    cout<<endl<<endl<<"Wybrana komórka ma wartosc: "<<vec1.at(numer)<<endl<<endl;

    cout<<"Pierwsza komorka wektora 1 ma wartosc: "<<vec1.front()<<endl<<endl;//WYSWIETLANIE ZAWARTOSCI PIERWSZEJ KOMORKI

    cout<<"Ostatnia komorka wektora 1 ma wartosc: "<<vec1.back()<<endl<<endl;//WYSWIETLANIE ZAWARTOSCI OSTATNIEJ KOMORKI

    ////////////////////ODCINANIE OSTATNIEJ KOMORKI WEKTORA//////////////////////////
    vec1.pop_back();

    cout<<"Po usunieciu ostatniego elementu wektora 1 jego rozmiat to: "<<vec1.size()<<endl<<endl;

    //////////////////TWORZENIE ODWROCONEJ WERSJI WECTORA 1 W WECTORZE 2////////////////////////////

   cout<<"Wector 1 sklada sie w tej chwili z nastepujacych elementow: ";

   for(int i=0;i<vec1.size();i++)
   {
       cout<<vec1.at(i)<<",";
   }


   while(vec1.empty()==0)//DOPOKI NIEPRAWDA JEST, ZE WEKTOR 1 JEST PUSTY
   {
       wartosc=vec1.back();
       vec2.push_back(wartosc);
       vec1.pop_back();
   }

   cout<<endl<<endl<<"Po przeniesieniu elementow wectora 1 do wectora 2,";
   cout<<" otrzymojemy taka ich odwrocona sekwencje: ";

   for(int i=0;i<vec2.size();i++)
   {
       cout<<vec2.at(i)<<",";
   }

   cout<<endl<<endl;

   vec2.clear();//CZYSZCZENIE WEKTORA Z WSZYSTKICH ELEMENTOW

   cout<<"Po usunieciu wszystkich elementow, rozmiar wektora 2 wynosi: "<<vec2.size()<<endl;

   cout<<endl<<"Wpisz ile elementow chcesz osobiscie wpisac do wektora 2: ";
   cin>>rozmiar;

   for(int i=0;i<rozmiar;i++)
   {
       cout<<"Wpisz "<<i+1<<" wartosc: ";
       cin>>wartosc;
       vec2.push_back(wartosc);
   }

   cout<<endl<<endl<<"Wpisane wartosci to: ";

   for(int i=0;i<vec2.size();i++)
   {
       cout<<vec2.at(i)<<",";
   }
   cout<<endl<<endl;

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1