Kezdőoldal » Számítástechnika » Programozás » Mi a hibám ebben a c programkó...

Mi a hibám ebben a c programkódban?

Figyelt kérdés

#include<stdio.h>

#define ELEM 5

int vizsgal(int t[], int N)

{

int i,poz[100],neg[100],p,n;

i=0;

p=0;

n=0;

for(i=0; i<N; i++)

{

if(t[i]>0)

{ poz[p]=t[i];

p++;

}

else if(t[i]<0)

{ neg[n]=t[i];

n++;

}

}

while(poz[p]!=EOF || poz[p]!='\0' )

p++;

if(p==N)

return 1;

while(neg[n]!=EOF || neg[n]!='\0' )

n++;

if(n==N)

return 0;

return 2;

}

//////////////////////

int main(void)

{

int t[ELEM]={2,54,0,1,42};

if((vizsgal(t,ELEM))==2)

printf("egyik sem");

else

printf("vagy poz vagy neg");

return 0;

}



Azt akarom vizsgálni, hogy ha a tömb minden eleme pozitív akkor 1, ha minden negatív akkor 0, különben 2-vel térjen vissza. A programkód lefordítódik, futáskor viszont ezt írja ki: Segmentation fault



2012. dec. 28. 15:52
 1/3 iostream ***** válasza:

while(poz[p]!=EOF || poz[p]!='\0' )

p++;


Ez mi akart lenni? Nem nulláztad ki a tömböt, így az nem nulla alapból, és nem is EOF vagy '\0' (ami NEM 0). Szóval ez így biztos hülyeség, de amúgy is: minek tömb erre? Letárolsz két intet: poz és neg. Ha találkozol egy pozitívval akkor poz 1 lesz, ha negatívval akkor neg 1, alapból meg 0. A végén meg megvizsgálod, hogy mi volt a helyzet.

2012. dec. 28. 16:34
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:

\0 azért kell, és EOF hogy ne fusson ki a tömbből a ciklus


de amúgy már megoldottam, amúgy félig jó a megoldásod, de azért köszi

kivettem a poz, neg tömböket, és a p-n változókat vizsgáltam :)

2012. dec. 28. 16:50
 3/3 anonim ***** válasza:

a '\0' az a 0 kódú karakter (=0) és string végén van,

egy int tömbben mit keresne?

2012. dec. 28. 17:22
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!