Witam !
Mam następujący problem :
Program ma tworzyć N-elementową tablicę (wszystko ok na razie), ma znaleźć maxa tej tablicy (działa), znaleźć gdzie jest największy skok wartości między elementami tablicy (np. 2 3 7 1 3 - to max jest 7 a największy skok jest 6 (7-1) - nie do końca działa).Następnie program ma porównać największy skok z 1, jeśli jest większy od jeden to zastąpić ma największy element tablicy x dwoma elementami o wartościach równych x/2.
Proszę o pomoc w zadaniu !
Z góry dzięki za pomoc
Kod:
#include <iostream>
#include <cmath>
using namespace std;
float *tablica;
float *tablica2;
int N,stop,ile;
float maximum,x,b,maximums;
void wartosci()
{
cout<<"Podaj dlugosc tablicy : ";
cin>>N;
tablica = new float[N];
cout<<endl;
for(int i=0; i<N; i++)
{
cout<<"tablica["<<i<<"] : ";
cin>>tablica[i];
}
}
void max()
{
for(int i = 0; i < N; i++)
maximum = tablica[0];
for(int i = 1; i < N; i++)
if(tablica[i] > maximum) maximum = tablica[i];
cout <<"Maksymalna wartosc talbicy : "<<maximum<<endl;
}
void wyswietlanie()
{
cout<<"Tablica wejsciowa : ";
for (int i=0;i<N;i++)
{
cout<<tablica[i]<<" ";
}
cout<<endl;
}
void skok()
{
cout<<"Poszczegolne skoki : ";
tablica2 = new float[N-1];
for (int i=0;i<N-1;i++)
{
b=tablica[i]-tablica[i+1];
tablica2[i]=b;
cout<<abs(b)<<" ";
}
}
//tutaj nie za dobrze dziala
void maxskok()
{
for(int i = 0; i < N-1; i++)
maximum = abs(tablica2[0]);
for(int i = 1; i < N-1; i++)
if(abs(tablica2[i]) > maximums) maximums = abs(tablica2[i]);
cout <<"Maksymalna wartosc talbicy : "<<maximums<<endl;
}
int main()
{
wartosci();
max();
wyswietlanie();
skok();
maxskok();
system("pause");
return 0;
}