Funkcja bool

0

Napisać program
bool sprawdz (int tab[], int n, int x) - funkcja ma zwrócić true,
jeżeli w n-elementowej tablicy przekazanej za pomocą
parametru tab znajduje się wartość x lub jej wielokrotności lub
zwrócić false w przeciwnym wypadku. Elementy tablicy oraz
wartość parametru x wczytaj w funkcji main(), wynik wydrukuj
na ekranie (również w funkcji main).

Głównie chodzi mi o zaznaczony kod. Wiem, że coś się tam nie zgadza, ale nie do końca potrafię rozwiązać ten problem.

#include<iostream>
#include <cstdlib>
using namespace std;
bool sprawdz(int tab[], int n, int x);
int main()
{
int n, x;
int tab[10];
cout<<"Podaj szukana liczba";
cin>>x;
cout<<"Ile elementowa tablica";
cin>>n;

for(int i=0; i<n; i++ )
{
	tab[i]=rand()%n;
	cout<<tab[i]<<" ";
}

for (int i=0;i<tab[i]; i++)
	{
		if((tab[i]=x) )
 return true;
}
if else (tab[i]!=x))
		

	  for( int i=0; i<10; i++)
	  {
		  if(( x*i)<tab[i])
		return true;
		
	
	}
	 else if((tab[i]!=0))
	return false;
}
1

Tak na szybko:

  • popraw formatowanie
  • tab[i]=x to przypisanie a nie porównanie
  • if else nie ma takiej konstrukcji w C, powinno być if (tab[i]!=x))
    Ale to tylko błędy składniowe. W samym algorytmie też masz błędy.
    Wielokrotność liczny możesz sprawdzić za pomocą a % b == 0, jeśli true to a jest wielokrotnością b. Chyba że jest zerem
0

Wielokrotność, to chyba wystarczy sprawdzić dzieleniem z resztą. Wtedy tylko zostaje rozwazyć oddzielnie przypadek zera.

bool isElement(int arr [], int sz, int e) {
	if (0 == e) {
		for (int i = 0; i < sz; ++i) {
			if (e == arr[i])
				return true;
		}
		return false;
	}
	else {
		for (int i = 0; i < sz; ++i){
			if (0 != arr[i] && 0 == arr[i] % e)
				return true;
		}
		return false;
	}
}
0

Gdzie masz zdefiniowaną funkcję sprawdz - widzę tylko jej deklarację.
Deklarujesz tablicę 10 elementową a później coś takiego:

for(int i=0; i<n; i++ )
{
    tab[i]=rand()%n;
    cout<<tab[i]<<" ";
}

Jak wczytasz n większe od 10, to będziesz miał UB.
Spróbuj przynajmniej zamieścić taki kod, który można poprawnie skompilować.

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