Zwracanie elementu tablicy zawartego w przedziale

0

Witam kolegów, męczę się strasznie z jednym programem, może mógłby mi ktoś pomóc.
z góry dziękuję . Dopiero zaczynam proszę o wyrozumiałość
Utworzyć funkcję main(). Zadeklarować tablicę o nazwie C o rozmiarze 14.
Zaprogramować funkcję przeszukiwania o nazwie (Michal) z parametrem X, który ma typ danych zgodny z elementami tablicy. Funkcja powinna zwracać index drugiego elementu tablicy, wartość którego znajduje się w przedziale (-2x;x) do przeszukiwania tablicy użyć pętli for.
W funkcji main() wprowadzić wartość poszukiwaną X oraz zademonstrować działanie funkcji wyświetlając wynik i jej działania na ekranie.

 int Michal(int C[14],int x)
{
	int Michal=0;
	for (int i=0;i<14;i++)
	if ((i>=(-2)*x)&&(i<=x))
            Michal=Michal+C[i];
	                 
 return Michal;
}        

int main()
{
    int C[14];
    int i=0;
    int x; 
    cout<<"wprowadz 14 liczb do tablicy"<<endl;
    	for (int i=0;i<14;i++)
    	cin>>C[i];
    	cout<<"Drugi element tablicy to"<<" "<<Michal(C,x)<<endl;
    		system("pause");
    return 0;
}
0

W main'ie zmienna x nie jest zdefiniowana.

0
int Michal(int C[14],int x)
{
        int Michal=0;
        for (int i=0;i<14;i++)
        if ((i>=(-2)*x)&&(i<=x))
            Michal=Michal+C[i];
 
 return Michal;
}        
 
int main()
{
    int C[14];
    int i=0;
    int x; 
    cout<<"wprowadz 14 liczb do tablicy"<<endl;
    for (int i=0;i<14;i++)
        cin>>C[i];

    // vvvv
    cin>>x;
    // ^^^^
    cout<<"Drugi element tablicy to "<<Michal(C,x)<<endl;
    system("pause");
    return 0;
}
0

Nie wiem czy dobrze rozumiem, ale czy w main muszę podać ten przedział?

0
if ((i>=(-2)*x)&&(i<=x))

Ten warunek jest genialny :)

0

Tak myślałem, podpowiesz mi jaki powinien być?

0

Miałeś znaleźć element (i to drugi), który znajduje się w podanym przedziale a sprawdzasz, że zmienna i się tam znajduje. Jak widzisz linijkę wyżej zmienna i jest indeksem pętli for. Rozwiązanie wprost:

pierwszyRaz = prawda

dla elementów C[i] w C:
  jeżeli C[i] znajduje się w przedziale
    jeżeli p == prawda
      p = fałsz
    w przeciwnym wypadku
      zwróć i

To możesz bezpośrednio przerobić na C/C++.

0

Wiem że może to może zabrzmieć żenująco, ale czy mógłbym prosić jaśniej

#include <iostream>
using namespace std;
int Michal(int C[14],int x)

{
        int Michal=0;
        for (int i=0;i<14;i++)
        if ((i>=(-2)*x)&&(i<=x))
            Michal=Michal+C[i];
 
 return Michal;
}        
 
int main()
{
    int C[14];
    int x; 
    cout<<"wprowadz 14 liczb do tablicy"<<endl;
    for (int i=0;i<14;i++)
        cin>>C[i];
 
    
    cout<<"Drugi element tablicy to "<<Michal(C,x)<<endl;
    system("pause");
    return 0;
} 
0

Jasne
pierwszyRaz = prawda //Tu wstaw zmienna

dla elementów C[i] w C: // Petla for
jeżeli C[i] znajduje się w przedziale // Warunek if(Wartosc i'tego elementu znajduje sie w przedziale)
jeżeli p == prawda // jezeli zmienna z pierwszej linii == prawda
p = fałsz // ustaw ja na falsz
w przeciwnym wypadku // jezeli zmienna jest falszywa
zwróć i // zwroc i.

Wciecia w tekscie informuja o przynaleznosci do konkretnych warunkow/petli.
Zmienna logiczna ustawiona jest w celu zwrocenia drugiego wystapienia wartosci z podanego przedzialu.

0
int Michal(int C[14],int x) 
  {
   int i=0,min=-2*x;
   while((i<14)&&((C[i]<min)||(x<C[i]))) ++i;
   ++i;
   while((i<14)&&((C[i]<min)||(x<C[i]))) ++i;
   return i<14?i:-1;
  }

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