[C/C++] Deklaracja tablic

0

Mam problem w C++. Napisalem programik który ma tworzyć dwa zbiory A i B w postaci tablic. Dokonuję potem odejmowania A\B. Wynik ma wyświetlać ilość elementów zboiru A\B. Wszystko działa jak w programie są już wpisane tablice razem z ich elementami. Większy jest problem gdy na początku ja chce zadeklarowac ich wielkosc i wpisac w nie elementy. Poniżej prezentuję listing mojego programiku. Proszę o proste rozwiazanie i z góry dziękuję.
#include

main()
{
int wielkoscA, wielkoscB; // deklaracja zmiennych
int ilosc, liczbaA, liczbaB, w, i, j ; // deklaracja zmiennych
int A[];
int B[];
cout wielkoscA; // definicja wielkosci zbioru A
cout wielkoscB; // definicja wielkosci zbioru B
for(i=1;i

0

Hej
Taka mała rzecz, która być może coś wyjaśni:
pierwszy element tablicy to tablica [0], drugi to tablica[1], itp, więc spróbuj pętle zbudować jako
for(i=0;i

0

jezeli juz jestesmy przy indeksowaniu komorek tablicy to pamietaj , ze C/C++ nie wykaze Ci bledu w momencie gdy przekroczysz rozmiar tablicy - pascal by to zrobil, jednak C nie. Stwarza to pewne niebezbieczenstwo, gdyz mozesz w ten sposob zamazac istotne dane w pamieci.
Dlatego tez zazwyczaj stosuje sie dosc duze tablice. jezeli jednak nie jestes w stanie przewidziec potrzebnego Ci rozmiaru tablicy to zastosuj np liste jednokierunkowa...

0

A ja bym to zrobil tak:
/* pobranie wielkosci */

int A[wielkoscA];
int B[wielkoscB];

/* reszta kodu */

Ps. Dziwne .. odpowiadalem przedchwila na ten post ale mojej odpowiedzi nie ma. A moze moja wina.

0

po inicjalizacji :

int A[];

kompilator tworzy wskaznik do tablicy ale nie rezerwuje jej miejsca w pamieci , wlasciwie mozna powiedziec ze masz dopiero tablice 1 elementowa, aby ja powiekszyc wystarczy "allokowac" jej pamiec tj:

po podaniu z klawiatury wielkosci(zaluzmy ze to wiel)

A=(int *) malloc(wiel);
if(A==NULL) exit(1);//koniczne zabezbieczenie jakby zabraklo komorek
//nie polecam w modelu pamieci large patrz moj post
//sprzed kilku dni

i na koncu programu nie zapomnij zwolnic pamieci :

free(A);

i to wsio, mozna tez obiektowo - new + delete ale kazdy robi jak lubi

papki!

0

Jak chodzi o ANSI C++, to vector automatycznie zwiększa swój rozmiar push_back(), insert(),
Przykłądowo deklarujemy
vector moj_wektor(100);
//
dodajemy sobie kolejne elementy:
moj_wektor.push.back ("costamcostam");
...
Jeżeli dojde tak do 101 elementu, to vector się "wydłuży".
Oczywiście można to zrobić ręcznie poprzez resize()
Pozdrawiam Mart
PS To takie nowinki w trakcie lektury Stroustrupa - polecam gorąco ;)

0

Sorki za chochlika, miało być moj_wektor.push_beck("costamcostam");
Mart

0

Sorki za chochlika, miało być moj_wektor.push_beck("costamcostam");
Mart

Tak poza tematem:
Jako zarejestrowany użytkownik możesz edytować własne posty. Służy do tego ostatnia ikonka na prawo (ta z ołówkiem).
C++ też nie jest poszkodowane jeżeli chodzi o tagi. Tak samo można umieszczać kod pomiędzy tagami <cpp> i <//cpp> Spowoduje to automatyczne pokolorowanie składni na wzór BCB (zawsze to czytelniejsze).

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