Cześć wszystkim,
Napisałem taki dość prosty program i muszę jego kolejne elementy zamienić na funkcje, tak żeby w int main() było jak najmniej.
Problem polega na tym, że zupełnie nie mogę zrozumieć jak funkcję działają. Czytałem kilka kursów itp. i niby coś tam robiłem, ale zawsze wychodzi mi źle.
I tutaj prośba do Was - czy ktoś mógłby w poniższym kadzie zmienić coś na funkcję i mi to wrzucić? Wtedy postaram się na podstawie tego robić dalej. Myślę, że jak zobaczę coś takiego u siebie w kodzie będzie mi łatwiej to przeanalizować, co się zmieniło itp. Od razu chcę powiedzieć, że ta funkcja na początku programu nie była robiona przeze mnie, to i tak mam zamiar wyrzucić z tego kodu i zastąpić prostszym rozwiązaniem.
Kod w c++, używam Visual Studio 2015.
#include<iostream>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<cstdio>
#include <stdlib.h>
using namespace std;
double pierwiastek(double a, double n)
{
//poczatkowe przyblizenie
double result = a;
//x^n-1
double tmp = pow(result, (n - 1));
//dokladnosc obliczen
double e = 0.00000001;
//dopoki wynik jest mniej dokladny niz zadana wartosc
while (abs(a - tmp * result) >= e)
{
//oblicz nowe przyblizenie
result = 1 / n*((n - 1)*result + (a / tmp));
//x^n-1
tmp = pow(result, n - 1);
}
return result;
}
int main() {
int n, a, p, k, i;
char sposob;
float wynik = 0;
cout << "Podaj ilosc wartosci (Musi byc liczba parzysta): " << endl;
cin >> n;
if (n % 2 != 0) {
cout << "Liczba musi byc parzysta! Wprowadz teraz poprawna:" << endl;
cin >> n;
}
int * ciaga = new int[n];
cout << "Jesli chcesz sam podac wartosci elementow ciagu wpisz t, a jesli chcesz podac zakres z ktorego program je wybierze wpisz n" << endl;
cin >> sposob;
if (sposob == 't') {
for ( i = 0; i <= n - 1; i++) {
cout << "Podaj a: " << endl;
cin >> a;
ciaga[i] = a;
//cout << ciaga[i] << endl;
wynik = wynik + ciaga[i];
}
}
else if (sposob == 'n') {
cout << "Podaj pierwsza i ostatnia liczbe przedzialu, z ktorego program ma wybrac wartosci: " << endl;
cin >> p >> k;
srand(unsigned(time(0)));
for (int i = 0; i < n; i++) {
ciaga[i] = p + rand() % (k - p + 1);
wynik = wynik + ciaga[i];
}
for (int i = 0; i < n; i++)
cout << ciaga[i] << " ";
}
cout << "\n";
int * b = new int[n / 2];
for ( i = 0; i <= (n / 2) - 1; i++) {
b[i] = max(ciaga[i], ciaga[i + 2]);
cout << "b" << i << " = " << b[i] << endl;
}
cout << "Pierwiastek" << n << " stopnia z sumy wyrazow ciagu a = " << pierwiastek(wynik, n) << endl;
for (i = 0; i <= n; i++) {
if (b[i] >= pierwiastek(wynik, n)) {
cout << "Liczba " << b[i] << "jest nie mniejsza od " << pierwiastek(wynik, n) << endl;
break;
}
else
cout << "Dany ciag nie zawiera liczby wiekszej od " << pierwiastek(wynik, n);
}
system("pause");
return 0;
}