Да се напише програма, която пита с колко числа ще работим и заделя динамично необходимата памет. Програмата да съдържаща 3 функции за работа с цели числа:
- Първата да позволява въвеждане на стойности на числата.
- Втората да ги извежда в ред, обратен на въведения, разделени със запетаи.
- Третата отпечатва средното им аритметично.
** По желание: Питането за броят на числата и заделянето на памет за тях да се направи в първата функция. Функцията да се реализира така, че да може да бъде извиквана повече от веднъж.


#include <cstdlib> #include <iostream> using namespace std; void vuvejdane(int n,int p[]){ for(int i=0;i<n;i++){ cout<<"Vavedete chislo: "; cin>>p[i]; } } void obratno_izvejdane(int n,int p[]){ for(int i=n-1;i>=0;i--){ if(i>0) cout<<p[i]<<", "; else cout<<p[i]; } } float sredno_arit(int n,int p[]){ float sum=0; for(int i=0;i<n;i++){ sum+=p[i]; } return (sum/n); } int main(int argc, char *argv[]) { int n; cout<<"Vavedete broi chisla: "; cin>>n; int *p=new int[n]; vuvejdane(n,p); obratno_izvejdane(n,p); cout<<endl<<endl; sredno_arit(n,p); if(n>0) cout<<"Srednoto aritmetichno e: "<<sredno_arit(n,p)<<endl; else cout<<" "; delete[] p; system("PAUSE"); return EXIT_SUCCESS; }I Вариант
Супер! Опитай обаче варианта по желание в условието по-горе: паметта да се заделя в самата функция и да се връща указател към нея. Също пробвай към функциите да се подава указател, а не масив и обхождането на масива да стане с адресна аритметика вместо с индексиране, за да проиграеш и този метод.
#include <iostream> #include <cstdlib> using namespace std; float functions(int n){ int *p=new int[n]; float sum=0; for(int i=0;i<n;i++){ cout<<"Vavedete chislo: "; cin>>p[i]; sum+=p[i]; } for(int i=n-1;i>=0;i--){ cout<<p[i]<<", "; } return (sum/n); delete[] p; } int main(int argc, char** argv) { int n; float arit; cout<<"Vavedete broi chisla: "; cin>>n; arit=functions(n); cout<<endl<<endl; cout<<"Otgovorut e: "<<arit<<endl; system ("PAUSE"); return 0; }II Вариант
#include <iostream> using namespace std; struct array { int *masiw; int razmer; }; array wuwejdane() { array arr; cout<<"Wuwedi razmera na masiwa: "; cin>>arr.razmer; cout<<"Wuwedi elementite na masiwa: "; arr.masiw=new int[arr.razmer]; for (int i=0;i<arr.razmer;i++) cin>>*(arr.masiw+i); return arr; } void izwejdane(array arr) { for (int i=--arr.razmer;i>0;i--) cout<<*(arr.masiw+i)<<", "; cout<<*(arr.masiw)<<"\n"; } void sredno_aritmetichno(array arr) { float suma=0; for (int i=0;i<arr.razmer;i++) suma+=*(arr.masiw+i); cout<<(float)suma/arr.razmer<<endl; } int main(int argc, char *argv[]) { array arr=wuwejdane(); izwejdane(arr); sredno_aritmetichno(arr); delete[] arr.masiw; return 0; }Охо, със структура и заделяне на памет в първата функция! Много добре! Опитай и друг вариант – да обхождаш масива само чрез инкрементиране на указателя – например p++; (и цикъл while, да кажем).