Witam, mam pytanie odnośnie definicji Pola o rozmiarze dynamicznym, tzn chce aby pole dla roznych obiektów tej samej klasy miało rózne rozmiary mianowicie chodzi mi o coś takiego:
#include <iostream>
#include <fstream>
using namespace std;
//Naglowki funkcji
int *TabDynam(int n);//Funkcja tworzy tablice dynamiczna o wymiarze n
//Struktury
struct tablice//struktura przechowujaca wczytane ciagi
{ int n;//dlugosc tablicy
int *T=TabDynam(n);//TO POLE !!!!!
~tablice()// dealokacja pamieci
{
delete[]T;
}
};
tablice *TabDynamTab(int n);//tworzy tablice struktury o nazwie tablice
int *przeciecia (tablice Tab[]);//szukanie przeciec ciagow
int main()
{ int n;
char nazwa[100];
//wczytywanie danych z pliku
printf("Podaj nazwe pliku do wczytania:");
scanf("%s",nazwa);
FILE *pf=fopen(nazwa,"r");
fscanf(pf,"%d",&n);//wczytanie ilosci ciagow
tablice *op=TabDynamTab(n);//wskaznik na strukture tablice oraz utworzenie ilosci struktur rownej ilosci ciagow
for (int i=0;i<n;i++)
{
fscanf(pf,"%d",&op[i].n);//wczytywanie ciagow
for(int j=0;j<op[i].n;j++)
{
fscanf(pf,"%d",&op[i].T[j]);
}
}
for (int i=0;i<n;i++)
{
for (int j=0;j<op[i].n;j++)
{
cout<<(op[i].T[j]);
}
cout<<endl;
}
przeciecia(op);
}
//FUNKCJE
int *TabDynam(int n)
{
int *T=new int[n];
return(T);
}
tablice *TabDynamTab(int n)
{
tablice *T=new tablice[n];
return(T);
}
int *przeciecia(tablice Tab[])
{
int i=0,j=0,z=0,k=0;//i=iterator 1 tablicy j= iterator2 tablicy,z=iterator tablicy przeciec, k rozmiart tej tablicy
if (Tab[0].n>=Tab[1].n)//szukanie rozmairu dla tablicy przeciec
{
k=Tab[0].n;
}
else
{
k=Tab[1].n;
}
cout<<k;
int *Tablica=TabDynam(k);//tablica na wartosci przeciec
int *Tablica1=TabDynam(k);//tabica na ideksy i
int *Tablica2=TabDynam(k);//tablica na ideksy j
do{
if (Tab[0].T[i]>Tab[1].T[j])
{
if(j<=sizeof(Tab[1].T)/4)
{
j++;
cout<<"a2";
}
}
else if (Tab[0].T[i]==Tab[1].T[j])
{
Tablica[z]=Tab[0].T[i];
Tablica1[z]=i;
Tablica2[z]=j;
z++;
i++;
j++;
cout<<"b3";
}
else if (Tab[0].T[i]<Tab[1].T[j])
{
if(i<=sizeof(Tab[0].T)/4)
{
i++;
cout<<"c1";
}
}
} while((i!=sizeof(Tab[0].T)/4) && (j!=sizeof(Tab[1].T)/4));
return(Tablica);
}
Problem pojawia się po wywołaniu funkcji przeciecia. Domyslam sie ze moze byc to blad spowodowany bledna definicja pola, ale być może błąd pojawia sie gdzieś indziej, za każda pomoc z gory dziekuje.
std::cerr
:)karolinaa