Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Dobrý večer, jsem úplný začátečník v oboru programování a problém je, že jsme dostali za úkol udělat program na vypočítání objemu,povrchu a uhlopříčky kvádru. Všechno mi běží až na tu úhlopříčku. Vím,že se používá sqrt a k tomu knihovna math.h. Vzoreček je druhá odmocnina z (a+b) to cele na druhou. ale když napíšu : vysledek=sqrt(a*a+b*b); nebo vysledek=sqrt(a^2+b^2); tak to prostě nespočítá. Může mi někdo pomoct prosím
Offline
float vysledek; int a=2, b=3; vysledek=sqrt(a*a+b*b); printf("%f\n",vysledek);
Offline
↑ gladiator01:
Jestli to nevadi,hodim to sem cele.Misto vysledku pouzivam uhlopricku.Kdyz to spustim,objem i povrch se vypocita spolehlive,ale jakmile dojdu k uhloprice,tak schvalne zadam a=3 a b=4 aby vysla odmocnina z 25=5 a stejne to napise 0.000000
printf ("Program na vypocet objemu,povrchu a uhlopricky kvadru");
printf ("\n");
float uhlopricka;
int a,b,c;
printf ("\n");
printf ("Objem se vypocita jako : a*b*c");
printf ("\n");
printf ("Zadejte stranu a :");
scanf ("%d",&a);
printf ("\n");
printf ("Zadejte stranu b :");
scanf ("%d",&b);
printf ("\n");
printf ("Zadejte stranu c :");
scanf ("%d",&c);
printf ("\n");
printf("Objem je %d",a*b*c);
printf ("\n");
printf ("Obsah se vypocita jako :2*(a*b + b*c + a*c) ");
printf ("\n");
printf ("Zadejte stranu a :");
scanf ("%d",&a);
printf ("\n");
printf ("Zadejte stranu b :");
scanf ("%d",&b);
printf ("\n");
printf ("Zadejte stranu c :");
scanf ("%d",&c);
printf ("\n");
printf("Obsah je %d",2*(a*b + b*c + a*c));
printf ("\n");
printf ("Vnitrni uhlopricka ");
printf ("\n");
printf ("Zadejte stranu a :");
scanf ("%f",&a);
printf ("\n");
printf ("Zadejte stranu b :");
scanf ("%f",&b);
printf ("\n");
uhlopricka=sqrt(a*a+b*b);
printf("%f\n",uhlopricka);
Offline
Johnni.003 napsal(a):
Code:
float uhlopricka; int a,b,c; /* ... */ printf ("Vnitrni uhlopricka "); printf ("\n"); printf ("Zadejte stranu a :"); scanf ("%f",&a); /* !!! */ printf ("\n"); printf ("Zadejte stranu b :"); scanf ("%f",&b); /* !!! */ printf ("\n"); uhlopricka=sqrt(a*a+b*b); printf("%f\n",uhlopricka);
Problém bude u těch dvou volání scanf, ke kterým sem dal vykřičníky -- používáš formát %f, který je pro vstup čísla v plovoucí desetinné čárce, ale výsledek ukládáš do typu int -- nejspíš ti do těch intů naleze nějaká hodnota, kterou vůbec nečekáš, a odmocnina čtverců těhle podivných hodnot je zrovna náhodou nula.
Zkus to změnit na scanf("%d", &a);, případně si přidej proměnné typu float a načti hodnotu do nich.
Edit: Vskutku, na svém systému jsem zkusil tohle:
#include <stdio.h> #include <math.h> int main() { int a, b; float uhlopricka; printf("Strana a: "); scanf("%f", &a); printf("Strana b: "); scanf("%f", &b); printf("a = %d, b = %d\n", a, b); uhlopricka = sqrt(a*a + b*b); printf("%f\n", uhlopricka); return 0; }
A výstup je pak následující:
Strana a: 3 Strana b: 4 a = 1077936128, b = 1082130432 0.000000
Offline
#include "stdafx.h" #include <stdio.h> #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { float a, b, uhlopricka; printf("Strana a: "); scanf("%f", &a); printf("Strana b: "); scanf("%f", &b); printf("a = %f, b = %f\n", a, b); uhlopricka = sqrt(a*a + b*b); printf("%f\n", uhlopricka); getchar(); getchar(); return 0; }
Offline