Kezdőoldal » Számítástechnika » Programozás » Nem tudom, hogy mi lehet a...

2105as kérdése:

Nem tudom, hogy mi lehet a baj, de nem müködik jól a programom, miért? (c nyelv, rövid progi)

Figyelt kérdés

Feladat: 1-től 10-ig kiírja a számokat és a számoknak a négyzetét.



#include <stdio.h>


int main()

{

int a,i;

int negyzet;

negyzet=2;

for(i=1;i<11;i++)

{

a=(pow(i,2));

printf("%d negyzete: %d\n",i,a);

}



getchar();

return 0;

}

Végülis csak 5^2=24 és 10^10=99 ez a kettőre ad helytelen eredményt, de nem jövökrá hogy miért.


2016. okt. 12. 20:47
 1/9 A kérdező kommentje:

a for ciklusba a "a=(pow(i,2));" a 2-es helyett a "negyzet" volt be írva, csak kicseréltem hátha ez a baja,de nem. Csak azért írom, hogy a "negyzet" változót is használtam csak elfelejtettem "2" helyére vissza írni, de ez működésileg lényegtelen mivel a négyezte kell.

(Kis "hibáér" elnézést.)

2016. okt. 12. 20:50
 2/9 anonim ***** válasza:
Elméletileg le se kellene futnia ugyanis a 'pow' függvény a math.h-ban van amit nem látok beincludolva.
2016. okt. 12. 20:57
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:

A pow fv floatot ad vissza. Az implicit float->int átalakítás c-ben meg nem kerekítés, hanem lecsapás.


Próbáld így:

a=pow(i,2)+0.5;

Így már kerekíteni fog

2016. okt. 12. 20:58
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:
2016. okt. 12. 20:59
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:

int i;

for(i=1;i<=10;i++) printf("%d negyzete %d\n",i,i*i);


Ennyi. Nem kell ezt túlbonyolítani.

2016. okt. 12. 21:00
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:

1. válaszolónak : Eleinte én is azt hittem, beírtam a #include <math.h> de ennélkül is működött, így hát elhagytam.


2. válaszolónak: Esetleg van a pow(x,y) függvény helyett, olyan ami int típusú változókat képes négyzetre emelni, úgy hogy az érték helyes legyen?

2016. okt. 12. 21:03
 7/9 A kérdező kommentje:

"int i;

for(i=1;i<=10;i++) printf("%d negyzete %d\n",i,i*i);


Ennyi. Nem kell ezt túlbonyolítani."


Végülis igazad van, csak annyi vele a problémám (már bocs nem bántás képpen), hogy ha nem a négyzete kellene a számnak hanem pl:x^5 vagy x^15.....x^y akkor elég macerás annyiszor leírni, hogy i*i*i*i*i*....n-ig.

2016. okt. 12. 21:07
 8/9 SimkoL ***** válasza:

Így nem jó ?


int main(){

int i;

double a;

for(i = 1; i < 11; i++){

a = (pow(i, 5));

printf("%d^5-en %0.0f\n", i, a);

}

getchar();

return 0;

}

2016. okt. 12. 21:16
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:
#7: Négyzetről volt szó. Ha az van a feladatban, hogy tetszőleges hatványra is működjön, akkor tényleg a pow a megoldás, de négyzetnél elég egy sima szorzás. :)
2016. okt. 12. 21:32
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!