Program v C,ukazuje mi to pořád záporný hodnoty:(HEELP PLSS

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod m4ksik 28. 10. 2006 13:13

Program na výpočet dopadu dělové koule > když to spustím tak mi to vždy vypíše zápornou hodnotu > po zadání úhlu 1 a rychlosti 1 vypíše vzdálenost 0 což je taky blbost ne ? Nevěděl by někdo kde je chyba ? DIIK MOC !!

Kód: Vybrat vše
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <iostream>
#include <stdlib.h>

using namespace std;

int main(int argc, char *argv[])
{
    int rychlost_v;
   float uhel_alfa;
   float vzdalenost;
   
   printf("Zadej uhel: ");
   scanf("%f", &uhel_alfa);
   printf("Zadej rychlost: ");
   scanf("%i", &rychlost_v);

vzdalenost=(rychlost_v*rychlost_v*sin(2*uhel_alfa*3.14/180)/10);

   printf ("Vzdalenost%i",vzdalenost);

  system("PAUSE");
     
  return 0;
}


//christian: přidán [code] tag
m4ksik
Kolemjdoucí

Odeslat příspěvekod Karel Kalecký 28. 10. 2006 13:41

Zkus dát na výstupu místo celočíselného typu %i typ s desetinnou čárkou %f.
Karel Kalecký
Kolemjdoucí
Uživatelský avatar

Odeslat příspěvekod clayman 29. 10. 2006 21:41

Cely cisla se ve formatovacim retezci oznacuji jako %d, ne %i.
clayman
Junior

Odeslat příspěvekod KinDo 30. 10. 2006 07:41

m4ksik píše:printf ("Vzdalenost%i",vzdalenost);

ako pise karel, zmen to na
Kód: Vybrat vše
printf ("Vzdalenost %.1f",vzdalenost);
KinDo
Junior

Odeslat příspěvekod Karel Kalecký 30. 10. 2006 17:12

clayman píše:Cely cisla se ve formatovacim retezci oznacuji jako %d, ne %i.

%i má naprosto stejnou funkci jako %d - "signed decimal integer", jak praví specifikace MS VC++.

Ale já stejně radši používám proudový vstup-výstup. :)
Pravda má jednu velkou výhodu: člověk si nemusí pamatovat, co řekl.
Karel Kalecký
Kolemjdoucí
Uživatelský avatar

Odeslat příspěvekod PaLaDiN 30. 10. 2006 17:47

Myslis ten ktory v C este nieje ???
PaLaDiN
Junior
Uživatelský avatar

Odeslat příspěvekod Karel Kalecký 30. 10. 2006 18:45

Jestli v jazyce C existuje vstupní a výstupní proud, to nevím.

Ale vzhledem k tomu, že v ukázce kódu je includovaný soubor "iostream", si myslím, že jo, a nebo je program psán v C++.

/*Kdo by si vytvářel vlastní hlavičkový soubory, který by se jmenovaly stejně jako ty ve standardní knihovně, popř. který by sloužily k něčemu jinému než napovídá jejich název?*/
Pravda má jednu velkou výhodu: člověk si nemusí pamatovat, co řekl.
Karel Kalecký
Kolemjdoucí
Uživatelský avatar

Odeslat příspěvekod Karel Kalecký 30. 10. 2006 19:04

Omlouvám se, že jsem předchozí příspěvek zaslal dvakrát, ale nějak blbne připojení (asi bouřka) a pošle se to až tak na popátý. :(
Naposledy upravil Karel Kalecký dne 30. 10. 2006 19:37, celkově upraveno 1
Pravda má jednu velkou výhodu: člověk si nemusí pamatovat, co řekl.
Karel Kalecký
Kolemjdoucí
Uživatelský avatar

Odeslat příspěvekod PaLaDiN 30. 10. 2006 19:15

#include <iostream>
a
using namespace std;

v C niesu (niesu namespaces, ani triedy)

ale potom mi pripada divne preco autor pisal hlavickove ako:
#include <nieco.h>

ked .h sa v C++ vyskytuje len vo vlastnych hlavickovych (tie c-ckovske su prepisane do <cnieco>)
PaLaDiN
Junior
Uživatelský avatar

Odeslat příspěvekod manasus 30. 10. 2006 19:47

To co pro výpočet není třeba jsem vykomentoval, takže po drobných úpravách:

Kód: Vybrat vše
//#include <conio.h>
#include <math.h>
#include <stdio.h>
//#include <iostream>
#include <stdlib.h>

//using namespace std;

int main(int argc, char *argv[])
{
  int rychlost_v;
  float uhel_alfa;
  float vzdalenost;
   
  printf("Zadej uhel: ");
  scanf("%f", &uhel_alfa);
  printf("Zadej rychlost: ");
  scanf("%d", &rychlost_v);

  vzdalenost=(rychlost_v*rychlost_v*sin(2*uhel_alfa*3.14/180)/10);

  printf ("Vzdalenost %f \n\n",vzdalenost);

  system("PAUSE");
     
  return 0;
}


Ještě poznámka: Jsi si jistý tím vzorcem? Pokud vystřelíš do 90°, měla by být dle mého selského rozumu vzdálenost nulová, což není... Ale možná je to jenom chyba v zaokrouhlování :wink:
Kdo chce hledá způsob, kdo nechce hledá důvody...
manasus
Junior

Odeslat příspěvekod Karel Kalecký 30. 10. 2006 20:00

Jo - možná by to mělo být ve stupních a ne v radiánech, pak by to mohlo vycházet. :idea:
Pravda má jednu velkou výhodu: člověk si nemusí pamatovat, co řekl.
Karel Kalecký
Kolemjdoucí
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků