Witam
Miałem zrobić takie zadanie : dodaj do siebie dwie dynamiczne tablice jednowymiarowe. Wartości w tablicach jak i ich rozmiar należy przyjąc losowe. Do poszczególnych elementów tablicy należy się odwoływad bez użycia "[]".
I taki kod zrobiłem do tego (niestety nie działa):
#include<iostream>
#include<time.h>
#include<cstdlib>
using namespace std;
int tab1(int rozmiar);
int tab2(int rozmiar);
int main()
{
cout << "Podaj rozmiary tablic :";
int n;
cin >> n;
srand(time(NULL));
int* wsk1 = tab1(n); //Błąd
int* wsk2 = tab2(n); //Błąd
cout << "Pierwsza tablica " << endl;
for (int i = 0; i < n; i++)
{
cout << i + 1 << ". Zmienna ma wartosc " << *(wsk1 + i) << endl;
}
cout << "Druga tablica " << endl;
for (int i = 0; i < n; i++)
{
cout << i + 1 << ". Zmienna ma wartosc " << *(wsk2 + i) << endl;
}
cout << "Suma tych dwoch tablic " << endl;
for (int i = 0; i < n; i++)
{
cout << i + 1 << ". Zmienna ma wartosc " << *(wsk1 + i)+*(wsk2+i) << endl;
}
cout << endl;
system("pause");
return 0;
}
int tab1(int rozmiar)
{
int*tab1 = new int[rozmiar];
for (int i = 0; i < rozmiar; i++)
{
tab1[i] = rand() % 10;
}
return tab1;
}
int tab2(int rozmiar)
{
int*tab2 = new int[rozmiar];
for (int i = 0; i < rozmiar; i++)
{
tab2[i] = rand() % 10;
}
return tab2;
}
Dowiedziałem się że problemem sa wskaźniki do których przypisuje adres tablicy (nie romumiem czemu)
A poprawnie powinno to zostać tak zrobione
#include<iostream>
#include<time.h>
#include<cstdlib>
using namespace std;
int* tab1(int rozmiar)
{
int*tab1 = new int[rozmiar];
for (int i = 0; i < rozmiar; i++)
{
tab1[i] = rand() % 10;
}
return tab1;
}
int* tab2(int rozmiar)
{
int*tab2 = new int[rozmiar];
for (int i = 0; i < rozmiar; i++)
{
tab2[i] = rand() % 10;
}
return tab2;
}
int main()
{
cout << "Podaj rozmiary tablic :";
int n;
cin >> n;
srand(time(NULL));
int*(*wsk1)(int) =&tab1;
int*(*wsk2)(int) = &tab2;
int *t1 = wsk1(n);
int *t2 = wsk2(n);
cout << "Pierwsza tablica " << endl;
for (int i = 0; i < n; i++)
{
cout << i + 1 << ". Zmienna ma wartosc " << *(t1 + i) << endl;
}
cout << "Druga tablica " << endl;
for (int i = 0; i < n; i++)
{
cout << i + 1 << ". Zmienna ma wartosc " << *(t2 + i) << endl;
}
cout << "Suma tych dwoch tablic " << endl;
for (int i = 0; i < n; i++)
{
cout << i + 1 << ". Zmienna ma wartosc " << *(t1 + i) + *(t2 + i) << endl;
}
cout << endl;
system("pause");
return 0;
}
I bardzo bym prosił kogoś o wyjaśnienie czemu trzeba stosować taki dziwny zapis
int*(*wsk1)(int) =&tab1;
int*(*wsk2)(int) = &tab2;
int *t1 = wsk1(n);
int *t2 = wsk2(n);
Z góry dziekuje