Obliczanie liczby elementów w tablicy

0

Program dziala prawidlowo, jednak testy wykazuja blad, Funkcja zlicza ilosc elementow tablicy

SIGSEIV w linijce w funkcji tab_size  if(*(tab+i) != -1) 

Czy funkcja jest zla czy chodzi o dodatkowe zalozenia?

#include <stdio.h>
#include <stdlib.h>

int tab_size(const int* tab);

int main()
{
	int i, *tab, tablica[100];
	tab = tablica;
	
	printf("Wpisuj wartosci calkowite\n");
	for(i = 0; i < 100; i++)
	{
		scanf("%d", &*(tab+i));
		if(*(tab+i) == -1) break;
	}
	printf("%d", tab_size(tab));
	return 0;
}

int tab_size(const int* tab)
{
	int i, size = 0;
	
	for(i = 0; i < 100; i++)
	{
		if(*(tab+i) != -1) size++;
		else break;	
	}	
	return size;

	if(tab == NULL || i == 0) return -1;
}
0

Ale dlaczego tak kombinujesz z tym *(tab+i) zamiast jak człowiek tab[i]? Potem masz takie kwiatki jak &*(tab+i).

0
pingwindyktator napisał(a):

Ale dlaczego tak kombinujesz z tym *(tab+i) zamiast jak człowiek tab[i]? Potem masz takie kwiatki jak &*(tab+i).

musze korzystac ze wskaznika

0

Wszędzie? Swoją drogą, jeszcze uwaga co do if(tab == NULL || i == 0) return -1; To if(tab == NULL) to chyba powinieneś sprawdzać na początku funkcji.

0

Racja ! Dziala ! Nie wierze ze taki szczegol i jeszcze ten blad SIGSEIV niedokladnie opisywal ten blad. Dziekuje bardzo :)

{
	if(tab == NULL) return -1;
	int i, size = 0;
	
	for(i = 0; i < 100; i++)
	{
		if(*(tab+i) != -1) size++;
		else break;	
	}	
	return size;	
}

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