Tablica symetryczna

Tablica symetryczna
P2
  • Rejestracja:prawie 10 lat
  • Ostatnio:prawie 8 lat
  • Postów:29
0

Witam, muszę napisać funkcję sprawdzającą czy tablica jest symetryczna, poniżej jest mój kod , nie wiem co zrobić w momencie gdy 'i' przekroczy 'n/2', nie mogę stosować bocznych wyjść z pętli ! z góry dzięki za pomoc.

Kopiuj
 int sym(int n,int tab[]){
 int i=0,flaga=1;
 while(flaga){
 	if(i<n/2){
 		if(tab[i]!=tab[n-1-i])
 			flaga=0;
 		i++;
	 }
	 else ???;
 }
 return flaga;
 } 
stryku
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:607
1
Kopiuj
while( i < n/2 )

I teraz if(i<n/2) {} else {} jest zbędne
flaga jest zbędna.

jak wejdziesz do if(tab[i]!=tab[n-1-i]) to od razu zwracasz 0

na końcu funkcji zwracasz 1

edytowany 1x, ostatnio: stryku
P2
nie moge od razu zwrocic 0 bo to jest boczne wyjscie z petli, ale zrobilme z while tak jak napisales i if(i<n/2) wywalilem i dziala
fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
1

gdy zwroci 0 to znaczy ze nie jest. Jak 1 to znaczy ze jest. Zrob sobie z tego funkcje i bedziesz miec

Kopiuj
for (int i = 0, j = NUM_ELEMENTS - 1; i < j; i++, j--) {
    if (userArray[i] != userArray[j]) {
        printf("\nTa tablica nie jest symetryczna\n");
        return 0;
    }
}
return 1; 
P2
nie moge dac fora bo nie wiem ile razy ma sie petla obrocic i nie moge tam dam return 0 bo jest to boczne wyjscie petli
_13th_Dragon
@pg2464 - chrzani waść, nie musisz wiedzieć wystarczy że umiesz zapisać warunek.
_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:20 dni
0
Kopiuj
int sym(size_t n,int tab[])
  {
   int *p=tab,*k=p+n;
   while((p<--k)&&(*p==*k)) ++p;
   return (p>=k);
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.