Jump to content
PirateClub.hu

feladat C nyelvből


konczi1205
 Share

Recommended Posts

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.

Link to comment
Share on other sites

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);

Link to comment
Share on other sites

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 :)

Link to comment
Share on other sites

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 :D) (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;
}

Link to comment
Share on other sites

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..

Link to comment
Share on other sites

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 )

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Hozzászólás a témához...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Jelenleg olvassa   0 members

    • No registered users viewing this page.
×
×
  • Create New...