Как инициализировать динамический целочисленный массив с 0 при использовании нового указателя в C++?
#include<iostream> using namespace std; class peak { int n,*p,*q; public: void get() { cout<<"\nenter how many elements u want in array"; cin>>n; } void create() { p=new int[n]; q=new int[n]; } void find(); void show(); void input(); void del() { delete []p; delete []q; } }; void peak:: find() { int j=0,i=1; if(p[0]>p[1]) q[j++]=p[0]; for(i=1;i<n-1;i++) { if(p[i]>p[i-1] && p[i]>p[i+1]) q[j++]=p[i]; } if(p[i]>p[i-1]) q[j]=p[i]; } void peak::show() { cout<<"\nthe peak elements are:"; for(int i=0;i<n;i++) //showing different garbage for *(q+i):6750404 and q[i]:3080388 cout<<q[i]<<"\t"; } void peak::input() { cout<<"\nenter elements "; for(int i=0;i<n;i++) cin>>p[i]; } int main() { peak p; p.get(); p.create(); p.input(); p.find(); p.show(); p.del(); return 0; }
Что я уже пробовал:
выражение:
p=new int[n](0) не работает так, как при динамическом выделении одного целого числа, как:p=new int(25);
кроме того, вывод приведенной выше программы для n=4 и записей:5 10 20 15 является:
20 мусор 0 0
требуемый выход:20 0 0 0
для того же кода, если n=7 с записями: 10 20 15 2 23 90 67-это:
20 90 0 0 0 0 0 что является необходимым выходом без какого-либо мусора!
почему так?просьба помочь.