Msaada: Nimekwama C programming

Msaada: Nimekwama C programming

magnifico

JF-Expert Member
Joined
Jan 14, 2013
Posts
14,044
Reaction score
34,468
Nimejaribu kupitia jinsi ya kutumia keyword for lakin sijaielewa! Naombeni mnisaidie hiyo keyword for inatumika vipi na kwenye hiyo program ya kucheck prime number imetumikaje! Msaada wenu wakubwa!

int main() {
int n, i;
scanf("%d", &n);
for (i = 2; i<n/2; i++) if (n % i == 0) { printf("Not prime"); return 0; }
printf("Prime");
return 0;
}
 
Nimejaribu kupitia jinsi ya kutumia keyword for lakin sijaielewa! Naombeni mnisaidie hiyo keyword for inatumika vipi na kwenye hiyo program ya kucheck prime number imetumikaje! Msaada wenu wakubwa!

int main() {
int n, i;
scanf("%d", &n);
for (i = 2; i<n/2; i++) if (n % i == 0) { printf("Not prime"); return 0; }
printf("Prime");
return 0;
}


  1. Mkuu hiyo for inaitwa loop ambayo hutumika kurudia kufanya activity fulani kadri itakavyo amuliwa, for loop hutumika pale unapo hitaji ku print au ku scan kitu zaidi ya kimoja chenye data type moja mara kadhaa, mfano ninaweza kua na Array ya Majina ya wanafunzi 30 ni vigumu ku andika scanf 30 kuliko kuandika for loop moja itakayo kubari kuingiza majina yote hayao,
  2. Pili hiyo for kwenye hiyo program imetumika ili kurudia ku print neno "Not Prime" mara ((n/2)-1)

NB:- Hii ni kwa uelewa wangu Unaweza run hiyo program na kuona majibu(Hapa sina Compiler ya kutest)

 


  1. Mkuu hiyo for inaitwa loop ambayo hutumika kurudia kufanya activity fulani kadri itakavyo amuliwa, for loop hutumika pale unapo hitaji ku print au ku scan kitu zaidi ya kimoja chenye data type moja mara kadhaa, mfano ninaweza kua na Array ya Majina ya wanafunzi 30 ni vigumu ku andika scanf 30 kuliko kuandika for loop moja itakayo kubari kuingiza majina yote hayao,
  2. Pili hiyo for kwenye hiyo program imetumika ili kurudia ku print neno "Not Prime" mara ((n/2)-1)

NB:- Hii ni kwa uelewa wangu Unaweza run hiyo program na kuona majibu(Hapa sina Compiler ya kutest)


Nashukuru mkuu atleast naanza kupata mwanga!
 
for ni moja ya aina ya loops(kujirudia) katika programming.

for (i = 2; i<n/2; i++)

i=2 ni nitialization ya i, hii inafanyika mara moja wakati loop inaanza.

i<n/2 hii ndo exit condition, loop itaendelea kujiturudia mpaka hii condition iwe FALSE.

i++, kila loop inapojiruduia i inaongezeka kwa moja.

Hiyo ndo loop na kila kitu ndani yake ni kinajirudia tu.

if (n % i == 0) Inacheki kama salio la kugawanya namba n kwa i ni sifuri, salio likiwa sifuri maana yake namba inagawanyika namba inayogawanyika kwa namba nyingine sio prime program inaprint not prime na ku exit. Kwa hiyo loop inajaribu kuigawanya namba kwa kila namba iliyo ndogo kuliko nusui<n/2 ya namba n

Kwa maoni yangu hiyo loop haijaandikwa vizuri, haiusomeki vizuri, ningeiweka hivi

Code:
int main() {

int n, i;
scanf("%d", &n);
for (i = 2; i<n/2; i++) 
{
    if (n % i == 0) 
    { 
        printf("Not prime"); 
        return 0; 
    }
}
printf("Prime");
return 0;
}

Kwa kutumia curly brackets ipasavyo unaweza kuona mara moja code gani ipo ndani ya for loop.
 
for ni moja ya aina ya loops(kujirudia) katika programming.

for (i = 2; i<n/2; i++)

i=2 ni nitialization ya i, hii inafanyika mara moja wakati loop inaanza.

i<n/2 hii ndo exit condition, loop itaendelea kujiturudia mpaka hii condition iwe FALSE.

i++, kila loop inapojiruduia i inaongezeka kwa moja.

Hiyo ndo loop na kila kitu ndani yake ni kinajirudia tu.

if (n % i == 0) Inacheki kama salio la kugawanya namba n kwa i ni sifuri, salio likiwa sifuri maana yake namba inagawanyika namba inayogawanyika kwa namba nyingine sio prime program inaprint not prime na ku exit. Kwa hiyo loop inajaribu kuigawanya namba kwa kila namba iliyo ndogo kuliko nusui<n/2 ya namba n

Kwa maoni yangu hiyo loop haijaandikwa vizuri, haiusomeki vizuri, ningeiweka hivi

Code:
int main() {

int n, i;
scanf("%d", &n);
for (i = 2; i<n/2; i++) 
{
    if (n % i == 0) 
    { 
        printf("Not prime"); 
        return 0; 
    }
}
printf("Prime");
return 0;
}

Kwa kutumia curly brackets ipasavyo unaweza kuona mara moja code gani ipo ndani ya for loop.

Nashukuru mkuu nimekupata vizuri! Ni lazima kufungulia braces { nyngne unapotumia keyword for?
 
Nashukuru mkuu nimekupata vizuri! Ni lazima kufungulia braces { nyngne unapotumia keyword for?

Sio lazima technically, ila ni good coding practice code isomeke vizuri na iwe vigumu kuleta logical errors baadae.
Kwa mfano program yako na yangu zote zinatoa jibu hilo hilo.

Usipoweka braces baada ya for ni next statement peke yake ndo inakuwa ndani ya loop so hapo kwako if nzima inayofuata ni statement moja ndo maana inafanya kazi. e.g

for(i = 2; i<n/2; i++)
int b=10;//Statement hii tu ndo itakuwa ndani ya for loop
int c=20;//statement hii iko nje ya for loop


//e.g 2

for (i=2; i<n/2;i++)
if(a==b){
....
}
else{
....
}//if else yote itakuwa ndani ya for loop maana if-else ni statement moja kwenye C.

int d =39; // Hii haipo ndanio ya loop.
 
Sio lazima technically, ila ni good coding practice code isomeke vizuri na iwe vigumu kuleta logical errors baadae.
Kwa mfano program yako na yangu zote zinatoa jibu hilo hilo.

Usipoweka braces baada ya for ni next statement peke yake ndo inakuwa ndani ya loop so hapo kwako if nzima inayofuata ni statement moja ndo maana inafanya kazi. e.g

for(i = 2; i<n/2; i++)
int b=10;//Statement hii tu ndo itakuwa ndani ya for loop
int c=20;//statement hii iko nje ya for loop


//e.g 2

for (i=2; i<n/2;i++)
if(a==b){
....
}
else{
....
}//if else yote itakuwa ndani ya for loop maana if-else ni statement moja kwenye C.

int d =39; // Hii haipo ndanio ya loop.

Nashukuru mkuu sasa nimeelewa! Ila naomba nkutoe nje ya swali kidogo!
Nilijaribu kutengeneneza program ya kucheck password kama ni sahihi ama sio! Nikaiweka hivi!

{
int pass;
printf("Enter password:");
scanf("%d",&pass);
if(pass==1000)
printf("Confirmed");
else
printf("Wrong password");
getch();
}

Sasa kuna baadhi ya vitu nlitaka ku0ngezea kama sehemu ya kuingizia username ili niwe na sehem ya username na password! Nimejaribu kutumia nesting of if lakini nimekwama!
 
Back
Top Bottom