Potrzebuję dynamicznej tablicy

Potrzebuję dynamicznej tablicy
Trad d
  • Rejestracja:około 6 lat
  • Ostatnio:9 miesięcy
  • Postów:19
0

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

Kopiuj
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

edytowany 1x, ostatnio: kq
Trad d
rozmiar oczywiście uprzednio zdefiniowany
Trad d
@kq: no faktycznie tytuł biedny pomijając fakt że sam nie do końca wiedziałem czego szukam to będę zwracał uwage
kq
Nie musi być idealny, ale mogłeś się ciut bardziej postarać ;​)
pasasap
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 2 lata
5

.
Trad d
dzięki za rozbudowaną odpowiedź, aż mi sie odechciało
_13th_Dragon
  • Rejestracja:ponad 20 lat
  • Ostatnio:7 miesięcy
3

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
Trad d
taką właśnie chce mieć dzięki za rozwinięcie//
IR
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 2 lata
  • Postów:25
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.

Kopiuj
#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;

}
Trad d
dzięki za szczegółowe opisanie!
_13th_Dragon
Czemu nie używasz operator []? Metoda at() sprawdza zakresy i rzuca wyjątek, czyli na "normalną pracę" się nie nadaje

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.