Szukanie elementu podobnego tablica.

Szukanie elementu podobnego tablica.
SP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 120
0

Dobrze skończyłem Matlaba, pora zająć się C++. Jest to jeden z podpunktów zadania, resztę już mam. Muszę stworzyć funkcję:

Kopiuj
int znajdz_podobny(int wartosc_zadana, int *tab)

która będzie wyszukiwała wartość zbliżoną do podanej przeszukując całą tablicy,

myślałem o wyznaczanie różnicy kolejnych elementów i szukaniu najmniejszej na laboratoriach, ale coś mi nie wychodziło, znacie może jakiś algorytm, żeby tą różnicę odnaleźć to kod, który do tej pory udało mi się stworzyć tzn. na laboratoriach (oczywiście wstawiam tylko kod tej funkcji):

Kopiuj
int znajdz_podobny(int zadana, int* liczby)
{
	int r1 = 0, r2 = 0, wynik=0;

	for (int x = 0; x < 9; x++)
	{
		r1 = zadana - liczby[x];
		r2 = zadana - liczby[x + 1];

		if (r1 > r2) wynik = liczby[x + 1];
		else if (r1 > r2 && r2<0) wynik = liczby[x];
		else if (r2>r1 && r1 < 0) wynik = liczby[x];
	}

Sam muszę przyjrzeć się co jest źle. Ale prosiłbym o pomoc, rady. A już mi się przypomniało z czym miałem problem, z tym, że liczby mogą być ujemne i jeśli np:

wartość zadana = -5

tablicę=[1,2,3,6,-5]

to -5-(-5)=10 etc.

PS: Bym zapomniał tablica ma mieć tylko 10 elementów:P

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
int znajdz_podobny(int zadana, int liczby[], int ile)
  {
   int wynik=0,r,R=abs(zadana-liczby[wynik]);
   for(int i=1;i<ile;++i)
     {
      r=abs(zadana-liczby[i]);
      if(R>r)
        {
         R=r;
         wynik=i;
        }
     }
   return wynik;
  }
SP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 120
0

A ten dodatkowy argument czemu służy? Sory, nie zauważyłem, że jest w kodzie funkcji:P A bo pewnie nie wiedziałeś ile elementów ma tablica:P

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Aby działało nie tylko na 9-elementowych tablicach.

SP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 120
0

No akurat tu jest 10 elementowa, dana z góry już:P

A i mały błąd się wkradł w twój kod:

Kopiuj
wynik=liczby[i]

Ale tak to dziękuje:P

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
SPOJowiecaa napisał(a):

A i mały błąd się wkradł w twój kod:

Kopiuj
wynik=liczby[i]

Nie! Jest poprawnie.

SP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 120
0

Dlaczego, w zadaniu mam znajduje element podobny i go wyświetla?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

W takim razie: return liczby[wynik];

SP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 120
0

Ok.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.