Matematické Fórum

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

#1 02. 10. 2009 22:12

Johnni.003
Příspěvky: 74
Reputace:   
 

funkce sqrt

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

 

#2 02. 10. 2009 22:22

Johnni.003
Příspěvky: 74
Reputace:   
 

Re: funkce sqrt

V Devku-C++

Offline

 

#3 02. 10. 2009 22:34

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: funkce sqrt

Code:

    float vysledek;
    int a=2, b=3;
    
    vysledek=sqrt(a*a+b*b);
    
    printf("%f\n",vysledek);

Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#4 02. 10. 2009 22:50

Johnni.003
Příspěvky: 74
Reputace:   
 

Re: funkce sqrt

↑ 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

 

#5 02. 10. 2009 23:42 — Editoval Oxyd (02. 10. 2009 23:48)

Oxyd
Příspěvky: 614
Škola: MFF UK, teoretická informatika
Pozice: Student
Reputace:   31 
 

Re: funkce sqrt

Johnni.003 napsal(a):

↑ gladiator01:

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:

Code:

#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í:

Code:

Strana a: 3
Strana b: 4
a = 1077936128, b = 1082130432
0.000000

Mýlím se častěji, než bych chtěl. Pokud vám v mém příspěvku něco nehraje, neváhejte se zeptat.
Jsem stále mlád a je mi příjemnější tykání. :)

Offline

 

#6 04. 11. 2009 16:27

M4R10
Zelenáč
Příspěvky: 3
Reputace:   
 

Re: funkce sqrt

Code:

#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

 

#7 04. 11. 2009 16:56

halogan
Ondřej
Místo: UK
Příspěvky: 4528
Škola: IES FSV UK (09-12, Bc.)
Pozice: student
Reputace:   106 
 

Re: funkce sqrt

↑ Johnni.003:

Jen matematický omyl.

Vzoreček je druhá odmocnina z (a+b) to cele na druhou.

Takže $e = \sqrt{(a + b)^2} = |a + b|$?

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson