Nem tudom, hogy mi lehet a baj, de nem müködik jól a programom, miért? (c nyelv, rövid progi)
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.
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.)
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
int i;
for(i=1;i<=10;i++) printf("%d negyzete %d\n",i,i*i);
Ennyi. Nem kell ezt túlbonyolítani.
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?
"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.
Í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;
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!