Jaki warunek wrzucić do else żeby funkcja po napotkaniu 0 w tab1 nie przypisywała tab2 losowej wartości?
Zadanie: Napisz funkcję, która dostaje w argumentach dodatnią liczbę całkowitą n oraz n-elementową tablicę liczb całkowitych tab1 o elementach typu int, i przepisuje do nowo utworzonej tablicy tab2 elementy tablicy tab1 o wartości różnej od zera. Rozmiar nowo tworzonej tablicy tab2 powinien być równy liczbie niezerowych elementów tablicy tab1. Jako wartość funkcja powinna zwrócić wskaźnik na pierwszy element tablicy tab2.
#include <iostream>
using namespace std;
int* f(int n, int *tab1) {
int rozmiar_tab2 = 0;
for (int i = 0; i < n; ++i) {
if (tab1[i] != 0) {
rozmiar_tab2++;
}
}
int *tab2 = new int[rozmiar_tab2];
for (int i = 0; i < rozmiar_tab2; ++i) {
if (tab1[i] != 0) {
tab2[i] = tab1[i];
} else {
//???????????
}
}
cout << "tab2 po przepisaniu: " << endl;
for (int i = 0; i < rozmiar_tab2; ++i)
cout << tab2[i] << "\t";
cout << endl;
return tab2;
}
int main() {
int n;
cin >> n;
int *tab1 = new int[n];
for (int i = 0; i < n; ++i)
cin >> tab1[i];
cout << f(n, tab1);
return 0;
}