Kezdőoldal » Számítástechnika » Programozás » Mi a hiba a programomban?

Mi a hiba a programomban?

Figyelt kérdés

Készítsen programot, amely tetszőleges számú téglalap területét számítja ki. A számolást a program addig végezze, amíg bármelyik bemenő adat nem nulla. A feladatot elöl tesztelő ciklussal oldja meg!


ez a feladat és én így oldottam meg de vmi nem jó és nem tudom hogy mi


#include <stdio.h>

#include <stdlib.h>


int main ()

{

int a,b,terulet;

printf("\n Kerem a: "); scanf("%d",&a);

printf("\n kerem b: "); scanf("%d",&b);

b=a;

while(a!=0 || b!=0)// a program 0-ra áll le .

{

terulet=a*b;

printf("terulet: %d \n",terulet);

printf("\n Kerem a: ");scanf("%d",&a);

printf("kerem b: "); scanf("%d",&b);


}

printf("\n terulet : %d \n",terulet);


system("Pause");

}


2014. nov. 2. 19:45
1 2
 1/16 tabaki ***** válasza:
Nem mélyedtem el benne, de minek kell a cikluson kívül is bekérni az adatokat? Miért kell ott b-t is bekérni, amikor rögtön a értékét adod neki, akármit kapott?
2014. nov. 2. 19:52
Hasznos számodra ez a válasz?
 2/16 anonim ***** válasza:

#include <stdio.h>

#include <stdlib.h>


int main ()

{

int a,b,terulet;

printf("a = ");

scanf("%d",&a);

printf("b = ");

scanf("%d",&b);

while(a!=0 && b!=0)// a program 0-ra áll le .

{

terulet=a*b;

printf("terulet: %d\n",terulet);

printf("a = ");

scanf("%d",&a);

printf("b = ");

scanf("%d",&b);

}

system("Pause");

}

2014. nov. 2. 20:07
Hasznos számodra ez a válasz?
 3/16 anonim ***** válasza:

én a helyedbe ugy csinálnám hogy elkezdem a ciklust, bekérem kiszámolom kiirod, és aztán a feltétel.

az elöltesztelős cikls meg igy néz ki: do

{amit a ciklsba irsz}

while (feltétel)

2014. nov. 2. 20:08
Hasznos számodra ez a válasz?
 4/16 anonim ***** válasza:
#3 do..while mint elöltesztelős ciklus?
2014. nov. 2. 20:13
Hasznos számodra ez a válasz?
 5/16 anonim ***** válasza:

Két hiba van.


1. A bekérés után az a oldalnak újra értéket adsz, így konkrétan egy négyzetet számolsz.


2. a Ciklus feltétele helytelen, ÉS operátort kell használnod, hiszem ha bármelyik nulla meg kell állnod.



Amúgy az elöl tesztelő ciklus nem a legjobb megoldás

2014. nov. 2. 20:23
Hasznos számodra ez a válasz?
 6/16 tabaki ***** válasza:

Nem tudok C-ben programozni, de szerintem ez kábé azt csinálja, amit szeretnél:


#include <stdio.h>


int main ()

{

int a,b,terulet;

terulet=1;

while(terulet!=0)// a program 0-ra áll le .

{

printf("Kerem az a oldal hosszusagat: "); scanf("%d",&a);

printf("Kerem a b oldal hosszusagat: "); scanf("%d",&b);

terulet=a*b;

if (terulet!=0)

{printf("Terulet: %d\n",terulet); printf("\n");}

else

printf("Vege a programnak.\n");

}

getchar();

return 0;

}


Engedelmeddel átírtam az idétlen „Kerem a:”, „Kerem b:” bekéréseket is. Szerintem egyébként nem elegáns, hogy a program akkor is bekéri a második értéket, ha elsőre megkapta a nullát, tehát biztosan ki kell lépnie.

2014. nov. 2. 20:26
Hasznos számodra ez a válasz?
 7/16 tabaki ***** válasza:

„Ciklus feltétele helytelen”


Az speciel helyes... Ha OR helyett ÉS lenne, csak akkor lépne ki, ha mindkét érték 0 volna.

2014. nov. 2. 20:28
Hasznos számodra ez a válasz?
 8/16 tabaki ***** válasza:

Módosítás, amelyik első nullára is kilép:


#include <stdio.h>


int main ()

{

int a,b;

a=1;

while(a!=0){

printf("Kerem az a oldal hosszusagat: "); scanf("%d",&a);

if(a!=0){

printf("Kerem a b oldal hosszusagat: "); scanf("%d",&b);

a=a*b;

if(a!=0){printf("Terulet: %d\n",a); printf("\n");}

}

}

printf("Vege a programnak.\n");

getchar();

return 0;

}

2014. nov. 2. 20:37
Hasznos számodra ez a válasz?
 9/16 tabaki ***** válasza:

Hátultesztelős ciklussal, a negatív terület kiküszöbölésével:


#include <stdio.h>

#include <stdlib.h>


int main ()

{

int a,b; a=1;

do{

printf("Kérem az a oldal hosszúságát: "); scanf("%d",&a);

if(a!=0){

printf("Kérem a b oldal hosszúságát: "); scanf("%d",&b); a=a*b;

if(a!=0){printf("Terület: %d\n",abs(a)); printf("\n");}

}

}while(a!=0);

printf("Vége a programnak.\n"); getchar(); return 0;

}


Ha nem akarod az abs() miatt becsatolni a <stdlib.h>-t:


#include <stdio.h>


int main ()

{

int a,b; a=1;

do{

printf("Kérem az a oldal hosszúságát: "); scanf("%d",&a);

if(a!=0){

printf("Kérem a b oldal hosszúságát: "); scanf("%d",&b);

a=a*b; if (a<0) a=a*-1;

if(a!=0){printf("Terület: %d\n",a); printf("\n");}

}

}while(a!=0);

printf("Vége a programnak.\n"); getchar(); return 0;

}

2014. nov. 2. 20:55
Hasznos számodra ez a válasz?
 10/16 tabaki ***** válasza:
+Fenébe, hátultesztelősnél nem kell az a=1; inicializálás.
2014. nov. 2. 21:16
Hasznos számodra ez a válasz?
1 2

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!