konczi1205 Posted Február 15, 2012 Share Posted Február 15, 2012 Sziasztok! most kezdtük el a programozást, és házira kaptunk egy feladatot, amit többé kevésbe megoldottam, viszont mikor kompilálom a kódot akkor kapok egy hibát. #include <stdio.h> #include <stdlib.h> #include <math.h> main() { float objem,povrch,a,v,m0; printf("Zadajte hodnotu podstavy a"); scanf("%f",a); printf("Zadajte vysku v"); scanf("%f",v); m0 = sqrt(v^2+(a/2)^2); objem = 1/3*(a*v); povrch = a*a+4*(a*m0)/2; printf("\n Povrch: %f \n Objem: %f \n", objem, povrch); system("pause"); return(0); } és itt a hibát a floatra írja ki. Mit rontottam el?! Köszi a választ. Idézés Link to comment Share on other sites More sharing options...
ModThisName Posted Február 15, 2012 Share Posted Február 15, 2012 Mondjuk ha leírnád a hibát, lehet segítene. de így kb enynit tudok mondani: ja és tipp: float helyett double-t használj float objem,povrch,a,v,m0; printf("Zadajte hodnotu podstavy a"); scanf("%f", &a); printf("Zadajte vysku v"); scanf("%f", &v); m0 = sqrt((v*v)+((a/2)*(a/2))); objem = ((1/3)*(a*v)); povrch = ((a*a)+4*(a*m0)/2); printf("\n Povrch: %f \n Objem: %f \n", objem, povrch); return(0); Idézés Link to comment Share on other sites More sharing options...
konczi1205 Posted Február 15, 2012 Author Share Posted Február 15, 2012 Köszönöm szépen! A lényeg az lenne hogy megadjuk a programnak a 4oldalú gúla alapjának az oldalélét valamint a gúla magasságát és ezek alapján ki kell neki számítani a gúla térfogatát és a felszínét. Vagyis a felszín képlettel asszem van 1 kis bibi mert az nem számol semmit Idézés Link to comment Share on other sites More sharing options...
kosztur Posted Február 20, 2012 Share Posted Február 20, 2012 Szintaktikailag már helyes a program, de szemantikailag nem.. 1. A térfogatnál az (1/3) egészként lesz kiértékelve, ami 0, 0-val szorozva az eredmény is 0 lesz.. 2. A térfogat képletében az alap hosszát négyzetre kell emelni: objem = (a*a*v)/3; 3. A printf függvény paraméterei rossz sorrendben vannak megadva (vagy a kiíratásnál van felcserélve, nézőpont kérdése ) (emiatt tűnt úgy, hogy a felszín képlete a hibás) Helyesen: printf("\n Povrch: %f \n Objem: %f \n", povrch, objem); #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { float objem, povrch, a, v, m0; printf("Zadajte hodnotu podstavy a: "); scanf("%f", &a); printf("Zadajte vysku v: "); scanf("%f", &v); m0 = sqrt(v*v+a*a/4); objem = a*a*v/3; povrch = a*a+4*a*m0/2; printf("\n Povrch: %f \n Objem: %f \n", povrch, objem); return 0; } Idézés Link to comment Share on other sites More sharing options...
ModThisName Posted Február 21, 2012 Share Posted Február 21, 2012 De még így sem tökéletes a program, hiszen a float egésszel osztva float lesz, de az egészt float-tá kell konvertálni, így teljesen tökéletesen csak a 2.0-val való osztás az okés Idézés Link to comment Share on other sites More sharing options...
kosztur Posted Február 21, 2012 Share Posted Február 21, 2012 Elbizonytalanítottál, így megnéztem, de nem szükséges átkonvertálni, ez ugyanis fordítás során megtörténik, ráadásul a 2es osztásból valójában egy 0.5-el való szorzás lesz (fmul ds:dbl_402130 -> dbl_402130 dq 0.5). Természetesen ez fordítóként/beállításonként eltérő lehet.. Idézés Link to comment Share on other sites More sharing options...
konczi1205 Posted Február 22, 2012 Author Share Posted Február 22, 2012 Köszi mindenkinek! Azóta olvastam 1 csomót és most már jobban megy és működnek is rendesen! De köszi még 1x a felvilágosítást! Idézés Link to comment Share on other sites More sharing options...
ModThisName Posted Február 22, 2012 Share Posted Február 22, 2012 Igen, mint írtam, fordítás során azt hiszem preprocesszálási időben elvégzi a fordító, de ez egy kihagyható lépés, ha rögtön 2.0-val osztasz. De természetesen nem kötekedni akartam, hiszen nekem is rengetegszer segítettél, amit ezúton is köszönök (Remélem Javaban is otthon vagy:P ) Idézés Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.