Siemka mam problem, bo nie wiem jak podejsc do tego zadania.
Program pobiera tablice znakow, po czym uzytkownik jest pytany o wartosc do znalezienia i wyswietla indeksy szukanej wartosci. Problem tkwi w tym ile razy mam wywolac funkcje, bo za kazdym razem zwraca mi ona numer indeksu szukanej wartosci, a jesli sie powtorzy? Na jakiej podstawie mam sprawdzac czy wykonac ponownie funkcje? Czy mam zapisywac efekt funkcji find do tablicy? Wiem, ze tam display vector potem wywoluje z tablicy ktorej nic nie robilem, ale chodzi mi tylko o to ile razy funkcje find wykonywac
#include <stdio.h>
#include <stdlib.h>
#include "vector_utils.h"
int main()
{
int element, tab1[100], wynik[100];
int *vec = tab1, *wyn = wynik;
printf("Podaj liczby: ");
int size = read_vector(vec, 100, 0);
if(size == -1)
{
printf("Incorrect input");
exit(1);
}
if(size == 0)
{
printf("Not enough data available");
exit(3);
}
printf("Podaj element ktory chcesz znalezc: ");
int el = scanf("%d", &element);
int efect = find(vec, size, element);
if(size == 1)
{
printf("Incorrect input");
exit(1);
}
display_vector(wyn, size);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include "vector_utils.h"
int read_vector(int* tab, int size, int stop_value)
{
if(tab == NULL || size <= 0 ) return -1;
int sizeD = 0;
while (sizeD < size)
{
int read = scanf("%d", &(*(tab + sizeD)));
if ((read <= 0)) return -1;
if (read != 1 || *(tab+sizeD) == stop_value) break;
++sizeD;
}
return sizeD;
}
int find(const int* tab, int size, int to_find)
{
if(tab == NULL || size <= 0) return 1;
static int j = 0;
for(int i = j; i < size; i++)
{
if(*(tab + i) == to_find)
{
j = i;
return j;
}
}
return 0;
}
void display_vector(const int* tab, int size)
{
if(tab == NULL || size <= 0) return;
for(int i=0; i<size; i++)
{
printf("%d ", *(tab+i));
}
printf("\n");
}