problem z tablicami

0

Zadanie.
Napisz funkcje, która zadaną tablicę jednowymiarową o długości N przekształci w tablicę, w której sąsiednie elementy będą różniły się o wartość nie większą niż D. Funkcja powinna działać według następującego algorytmu:

  1. Przeszukując tablicę sprawdzić wielkość skoku wartości pomiędzy sąsiednimi elemętami i porównać go z D
  2. Jeżeli wielkość maksymalnego skoku jest większa od D:
    WTEDY: zastąpić większy element tablicy ‘X’ dwoma elemętami o wartościach równych ‘X/2’;
  3. Jeżeli wielkość maksymalnego skoku jest mniejsza bądź równa d – zakończyć działanie funkcji.

Przykład:
Długość tablicy: N=7
Docelowa maksymalna wielkość skoku wartości między sąsiednimi elementami d=1
Tablica wejściowa: 2 4 7 3 5 2 1
Krok 1: 2 4 7 3 5 2 1 -maks. Skok=4; maks. Wartość tablicy=7
Krok2: 2 4 3,5 3,5 3 5 2 1 -maks. Skok=3; maks. Wartość tablicy=5
Krok3: 2 4 3,5 3,5 3 2,5 2,5 2 1 -maks. Skok=2; maks. Wartość tablicy=4
Krok4: itd………………………….. aż do maks. Skok=<1

mam tam coś napisane, ale i tak nie działa mi poprawnie :/ Proszę o pomoc ;*

0

to co napisałam....

 #include <iostream>
#include <iomanip>

using namespace std;

int n=7;
int N=20;
int d=1;

float*Tab=new float[N];

void main()
{
	int a=0;
	int z=0;

	for (int i=0; i<n; i++)
	{
		Tab[i]=rand()%7;
		cout << setw(2) << Tab[i];
	}
	cout << endl;



	for (int i=0; i<n; i++)
	{
		z=abs(Tab[i]-Tab[i+1]);

		cout << setw(3) << z;
		cout << endl;

		if(z>d)
		{

			if (Tab[i]>Tab[i+1])
			{
				a=Tab[i+1];
				Tab[i]=Tab[i]/2;
				Tab[i+1]=Tab[i];
				Tab[i+2]=a;
			}
			else //Tab[i]<Tab[i+1])
			{
				a=Tab[i+2];
				Tab[i+1]=Tab[i+1]/2;
				Tab[i+2]=Tab[i+1];
				Tab[i+3]=a;
			}
		}
	}


	for (int i=0; i<N; i++)
	{
		cout << setw(4) << Tab[i];
	}



	system("PAUSE");
}
0

zadaj jakieś konkretne pytanie;p

1 użytkowników online, w tym zalogowanych: 0, gości: 1