Wyszukiwanie podanego parametru w tablicy nie działa.

0

Witam! Mam programik, który najpierw tworzy tablicę jednowymiarową tab o wybranej długości n i wypełnia ją losowymi liczbami. Potem funkcja sprawdz szuka w tej tablicy podanego przez użytkownika parametru a i w zależności od

  1. jeśli znajdzie tylko raz, zwraca i wyświetla jego indeks w tablicy
  2. jeśli znajdzie więcej niż raz, zwraca i wyświetla indeks pierwszego wystąpienia
  3. jeśli nie znajdzie, zwraca -1 i wyświetla że nie ma

Niestety czego bym nie podała zawsze pisze nie ma parametru a w tablicy. Próbowałam też zrobić to w jednej funkcji i jednej pętli, ale wtedy pętla zatrzymywała się po pierwszym znalezionym parametrze.
Co jest nie tak?

int sprawdz( int * tab, int n, int a ) {
    //int r = 1 + (int)(rand() / (RAND_MAX + 1.0) * 100);
   
    // tab[n];
    //int licznik = 0;
    int i;
   
    for( i = 0; i <=( n - 1 ); i++ ) {
       
        if( tab[ i ] == a ) {
            printf( "Index a = %d \n", i );
            return i;
           
        }
       
        //printf("\n");
        if( tab[ i ] != a ) {
            printf( "Brak parametru a w tablicy! \n" );
            return - 1;
           
           
        }
       
    }
}

int main( int argc, char * argv[] ) {
    int n;
    int i;
    int a;
    printf( "Podaj długosć tablicy: \n" );
    fflush( stdout );
    scanf( "%d", & n );
    int tab[ n ];
    for( i = 0; i <=( n - 1 ); i++ ) {
        //tab[i]=(rand() % 10)+1;
        tab[ i ] = 1 +( int )( rand() /( RAND_MAX + 1.0 ) * 10 );
        printf( "Tablica : %d \n", tab[ i ] );
    }
    printf( "Podaj parametr a: \n" );
    fflush( stdout );
    scanf( "%d", & a );
    sprawdz( tab, n, a );
   
    //return 0;
}
1

Nakręciłeś tak że pogubiłeś sens zadania:

int sprawdz( int * tab, int n, int a )
  {
   int i;
   for(i=0;i<n;++i) if(tab[i]==a) return i;
   return -1;
  }
0

Ok, działa. Wystarczyło pozbawić nawiasów pętlę i ify w funkcji sprawdz.

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