Kezdőoldal » Számítástechnika » Programozás » Eljárás (void) probléma c-ben...

Eljárás (void) probléma c-ben (nem deklarált változó)? És breakkel kilépés ciklusból?

Figyelt kérdés

Szóval ha írok eljárásokat a main függvény elé,akkor miért panaszkodik nem deklarált változókra mikor azok deklarálva lesznek a mainben és csak utána vannak meghívva az eljárások?

A másik meg hogy hogy lehet ciklusból kilépni,ha abban van egy elágazás?

pl van egy while ciklusom abban pedig egy if(valami) és ha a valami teljesül akkor akarok csak kilépni a cikusból

"break statement not within a loop or switch"


2016. okt. 15. 17:08
 1/10 anonim ***** válasza:

> ha írok eljárásokat a main függvény elé,akkor miért panaszkodik nem deklarált változókra

Mutass konkrét kódot és konkrét hibaüzenetet.


> hogy lehet ciklusból kilépni,ha abban van egy elágazás?

Minden extra trükk nélkül beírsz egy break-et. Működnie kell a cikluson belül. Kapcsosokat nem felejtetted el a ciklus törzse körül?

2016. okt. 15. 17:11
Hasznos számodra ez a válasz?
 2/10 A kérdező kommentje:

#include <stdio.h>

void abc (){

if(a=15) break;

}

int main(){

int a=0;

for(a=0;a<20;a++){

printf("%d\n",a);

abc();

}

return 0;

}


egy elég egyszerű példa,erre is bedob 2 hibát

-'a' undeclared

-break statement not within a loop or switch

2016. okt. 15. 18:40
 3/10 A kérdező kommentje:
devc++-ban írtam nem tudom az lehet-e baj
2016. okt. 15. 18:48
 4/10 anonim ***** válasza:

Először is az abc egy függvény, aminek saját változói vannak. Az abc függvényben pedig nincsen a nevű változó, így nem is tudja megmondani, hogy az 15-e.

Gondolom azt szeretted volna, hogy amit a main-ben megadsz a-t, azt nézze meg az abc. Ehhez az kell, hogy átírod a függvényt:

void abc (int a){

//akármi

}


de ez sem jó szerintem, mert te azt akarod nézni, hogy 15-e vagy sem, tehát neked nem void, hanem int típusú függvény kell.

breaket ciklusban használunk, nem függvényben, neked return kell oda.

Azonban mivel úgysem kezdesz semmit az a-val, így nincs értelme a függvénynek sem.

Esetleg az lehetne, hogy:

int abc (int a){

if(a=15) return 1;

return 0;

}


de mivel rájöttem, mit akarsz írni, a megoldás:


#include <stdio.h>

int tizenot_e(int szam){

if(szam=15) return 1;

return 0;

}

int main(){

int a=0;

for(a=0;a<20;a++){

printf("%d\n",a);

if(tizenot_e(a))

break;

}

return 0;

}

2016. okt. 15. 18:52
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:
Arról meg ne is beszéljünk, hogy egyenlőség-vizsgálathoz ==-t kell írni, nem =-t, mert ezutóbbi értékadás.
2016. okt. 15. 19:00
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:
Ez egy tragédia, amit idehánytál.
2016. okt. 15. 19:02
Hasznos számodra ez a válasz?
 7/10 A kérdező kommentje:

igazából az lenne a célom,hogy külön megírok egy programrészt,aztán azt meghívom a mainben,paraméterek nem kellenek

gondoltam így átláthatóbb a main


pl egy ilyet:

[link]

nem akarok belerakni,hanem a mainben csak annyit akarok hogy if(valami) akkor hívja meg ezt

2016. okt. 15. 19:11
 8/10 A kérdező kommentje:
ezek szerint ezt nem így kell csinálni...
2016. okt. 15. 19:26
 9/10 anonim ***** válasza:

Ahogy elnézem, a fogalomzavar (legalábbis az egyik) onnan ered, hogy nem érted, pontosan mit is jelent a függvény meghívása. A függvény nem makró, az, hogy valahol meghívsz egy függvényt nem azt jelenti, hogy a függvény definíciója kerek perec bemásolódik a hívás helyére, és úgy fog viselkedni, mintha eleve oda írtad volna. Ezért nem működik a break-ed, mert az nem ciklusban van, hanem egy tök más függvényben. Amikor egy függvényt meghívsz, akkor az lefut, de külön blokkban, csak azt látja, amit a függvényben, vagy azon kívül, globálisan már deklaráltál.

Azt se tessék elfelejteni, hogy a fordító sorról sorra halad, így hiába hívod meg a függvényedet később, mint egy olyan kifejezést, változót, akármit, amit a függvényedben is használsz, amikor a fordító a függvény definícióján végighalad, fenn fog akadni, hogy ez vagy az a kifejezés nem volt sehol deklarálva. Lehet, hogy később van, de ő sorban halad.

2016. okt. 15. 19:39
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:

"paraméterek nem kellenek gondoltam így átláthatóbb a main"

Persze, minek is azok, legyen minden változó globális, attól biztos átlátható lesz.

2016. okt. 15. 19:45
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!