Zaokrouhlování – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Zaokrouhlování – C / C++ – Fórum – Programujte.comZaokrouhlování – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
paatrikv0
Newbie
2. 1. 2010   #1
-
0
-

Ahoj,

chtěl jsem se zeptat jestli by mi mohl někdo poradit jak mám udělat aby se mi čísla zaokrouhlily na dvě desetinná místa u vzorečků na tělesa. Předem děkuji odpověď.

Nahlásit jako SPAM
IP: 82.100.0.–
Reklama
Reklama
yaqwsx+9
Posthunter
2. 1. 2010   #2
-
0
-

Vynásobíš 100, přičteš 0,5; přetypuješ na int, vydělíš 100...

EDIT: A nebo můžeš použít přímo funkci round z math.h

Nahlásit jako SPAM
IP: 85.160.74.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
paatrikv0
Newbie
2. 1. 2010   #3
-
0
-

To yaqwsx :
Prosimte mohl by jsi mi to ukázat na tomto zdrojáku:
#include<stdio.h>
#include<stdlib.h>
main()
{

int vstup;
int a;
int b;
int c;
int r;
int s;
int v;
int d;
int cislo;
int objem;
int povrch;

long double PI=3.1415926535897932384626433832795028841971;

printf ("Vyberte si vzorecek na vypocet telesa:\n");

printf ("1. Krychle\n");
printf ("2. Kvadr\n");
printf ("3. Kuzel\n");
printf ("4. Valec\n");
printf ("5. Koule\n");
printf ("0. Konec\n");
scanf("%i",&vstup);


switch (vstup)

{

case 1:
{

printf("Zadejte stanu a:\n");
scanf("%i",&a);
objem=a*a*a;
povrch=6*a*a;
printf("Objem je: %i cm3\n Povrch je: %i cm2", objem, povrch);
break;


}
case 2:
{
printf("Zadejte stranu a,b,c:\n");
scanf("%i %i %i", &a, &b, &c );
objem=a*b*c;
povrch=2*(a*b+b*a+a*c);
printf("Objem je: %i cm3\n Povrch je: %i cm2\n", objem, povrch);
break;
}
case 3:

printf("Zadejte polomer, stranu a vysku;\n");
scanf ("%i %i %i",&r, &v, &PI, &s);
objem=(PI*r*r*v)/3;
printf("Objem je: %i cm3\n",objem);
printf("Zadejte polomer a stranu;\n");
scanf ("%i %i",&r, &s, &PI);
povrch=PI*r*(r+s);
printf("Povrch je: %i cm2\n",povrch);
break;

case 4:
{
printf("Zadejte polomer a vysku:\n");
scanf("%i %i", &r, &v, &PI );
objem=PI*r*r*v;
povrch=2*PI*r*(r+v);
printf("Objem je: %i cm3\nPovrch je: %i cm2\n", objem, povrch);
break;
}
case 5:
{
printf("Zadejte prumer:\n");
scanf("%i",&d, &PI);
objem=(PI*d*d*d)/6;
povrch=PI*d*d;
printf("Objem je: %i cm3\n Povrch je: %i cm2\n", objem, povrch);
break;
}
case 0:
{
default:
printf("Zadejte pouze to cislo co je v nabidce.\n");
break;
}
system ("pause");
}
Prosím.

Nahlásit jako SPAM
IP: 82.100.0.–
yaqwsx+9
Posthunter
2. 1. 2010   #4
-
0
-

To paatrikv : Tak v tomto zdrojáku není třeba zaokrouhlovat na 2 desetiná místa - všechny proměnné jsou int - celé číslo.
Ale pokud to potřebuješ jenom vypsat s uričtou přesností, lze použít výstupní modifikátory (z halvy znám však pouze pro C++).
Pkud by jsi ale zaokrouhloval přímo proměnnou:



#include <math.h>
...
double a, b, c, r, s, v, d, objem, povrch;
...
printf("Zadejte stanu a:\n");
scanf("%i",&a);
objem=a*a*a;
objem *= 100;
round(objem);
objem /= 100;
povrch=6*a*a;
povrch *= 100;
round(objem);
povrch /= 100
printf("Objem je: %i cm3\n Povrch je: %i cm2", objem, povrch);
break;

....

Nahlásit jako SPAM
IP: 85.160.74.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
paatrikv0
Newbie
2. 1. 2010   #5
-
0
-

jj moc díky :)

Nahlásit jako SPAM
IP: 82.100.0.–
paatrikv0
Newbie
2. 1. 2010   #6
-
0
-

To yaqwsx : j a prosimtě nevěděl bys jak mám zabránit tomu aby se tam nezadávali kladná čísla já jsem to zkoušel přes do while a přes if a vůbec mi to nešlo.

Nahlásit jako SPAM
IP: 82.100.0.–
Hanzis0
Newbie
2. 1. 2010   #7
-
0
-

paatrikv napsal:
To yaqwsx : j a prosimtě nevěděl bys jak mám zabránit tomu aby se tam nezadávali kladná čísla já jsem to zkoušel přes do while a přes if a vůbec mi to nešlo.



Do IF dej ze pokud je cislo mensi jako 0 je zaporne. Viz příklad.

if(promena < 0){

printf("zadal jsi zaporne cislo")
}


Snad ti pomůže.

Nahlásit jako SPAM
IP: 88.146.150.–
paatrikv0
Newbie
2. 1. 2010   #8
-
0
-

To Hanzis : prosimtě zkoušel jsem to tam dát a vůbec nic se nestalo mohl by jsi mi to dát do toho zdrojáku co je na začátku hned ten první? Byl bych ti moc vděčný prosím.

Nahlásit jako SPAM
IP: 82.100.0.–
Hanzis0
Newbie
2. 1. 2010   #9
-
0
-

paatrikv napsal:
To Hanzis : prosimtě zkoušel jsem to tam dát a vůbec nic se nestalo mohl by jsi mi to dát do toho zdrojáku co je na začátku hned ten první? Byl bych ti moc vděčný prosím.





#include<stdio.h>
#include<stdlib.h>
main()
{

int vstup;
int a;
int b;
int c;
int r;
int s;
int v;
int d;
int cislo;
int objem;
int povrch;

long double PI=3.1415926535897932384626433832795028841971;

printf ("Vyberte si vzorecek na vypocet telesa:\n");

printf ("1. Krychle\n");
printf ("2. Kvadr\n");
printf ("3. Kuzel\n");
printf ("4. Valec\n");
printf ("5. Koule\n");
printf ("0. Konec\n");
scanf("%i",&vstup);


switch (vstup)

{

case 1:
{

printf("Zadejte stanu a:\n");
scanf("%i",&a);
if(a < 0){
printf("Zadej kladne cislo\n");
}else{
objem=a*a*a;
povrch=6*a*a;
printf("Objem je: %i cm3\n Povrch je: %i cm2\n", objem, povrch);
}
break;


}
case 2:
{
printf("Zadejte stranu a,b,c:\n");
scanf("%i %i %i", &a, &b, &c );
if(a < 0 || b < 0 || c < 0){
printf("Vsechny cisla musi byt kladna, zkus to jeste jednou.\n");
}else{
objem=a*b*c;
povrch=2*(a*b+b*a+a*c);
printf("Objem je: %i cm3\n Povrch je: %i cm2\n", objem, povrch);
}
break;
}
case 3:

printf("Zadejte polomer, stranu a vysku;\n");
scanf ("%i %i %i",&r, &v, &PI, &s);
if(r < 0 || v < 0 || s < 0){
printf("Zadej kladne cislo\n");
}else{
objem=(PI*r*r*v)/3;
printf("Objem je: %i cm3\n",objem);
printf("Zadejte polomer a stranu;\n");
scanf ("%i %i",&r, &s, &PI);
if(r < 0 || s < 0){
printf("Zadej kladne cislo\n");
}else{
povrch=PI*r*(r+s);
printf("Povrch je: %i cm2\n",povrch);
}
}
break;

case 4:
{
printf("Zadejte polomer a vysku:\n");
scanf("%i %i", &r, &v, &PI );
if(r < 0 || v < 0){
printf("Zadej kladne cislo\n");
}else{
objem=PI*r*r*v;
povrch=2*PI*r*(r+v);
printf("Objem je: %i cm3\nPovrch je: %i cm2\n", objem, povrch);
}
break;
}
case 5:
{
printf("Zadejte prumer:\n");
scanf("%i",&d, &PI);
if(d < 0){
printf("Zadej kladne cislo\n");
}else{
objem=(PI*d*d*d)/6;
povrch=PI*d*d;
printf("Objem je: %i cm3\n Povrch je: %i cm2\n", objem, povrch);
}
break;
}
case 0:
{
default:
printf("Zadejte pouze to cislo co je v nabidce.\n");
break;
}

}
system ("pause");
}


Doufám, že to stačí takhle :)

Nahlásit jako SPAM
IP: 88.146.150.–
paatrikv0
Newbie
3. 1. 2010   #10
-
0
-

To Hanzis : Díky moc :) hodně jsi mi pomohl

Nahlásit jako SPAM
IP: 82.100.0.–
paatrikv0
Newbie
3. 1. 2010   #11
-
0
-

To Hanzis : prosimte jeste jsem narazil na jeden problem vim me uz je to trapny te o neco zadata ale nevedel by jsi jak udalat aby se mi ten program opakoval po zadani hodnot?

Nahlásit jako SPAM
IP: 82.100.0.–
Hanzis0
Newbie
3. 1. 2010   #12
-
0
-

paatrikv napsal:
To Hanzis : prosimte jeste jsem narazil na jeden problem vim me uz je to trapny te o neco zadata ale nevedel by jsi jak udalat aby se mi ten program opakoval po zadani hodnot?



Trapný ti to být nemusí přece jenom každej sme se to učili a nevěděli sme všechno. Tady to máš. Snad ti to stačí :


#include <stdio.h>
#include <stdlib.h>

main()
{

int vstup, a, b, c, r, s, v, d, cislo, objem, povrch;
long double PI=3.1415926535897932384626433832795028841971;
printf ("Vyberte si vzorecek na vypocet telesa:\n");

while(vstup != 0){
printf ("1. Krychle\n");
printf ("2. Kvadr\n");
printf ("3. Kuzel\n");
printf ("4. Valec\n");
printf ("5. Koule\n");
printf ("0. Konec\n");

scanf("%i",&vstup);


switch (vstup)
{
case 1:
printf("Zadejte stanu a:\n");
scanf("%i",&a);
if(a < 0)
{
printf("Zadej kladne cislo\n");
}else
{
objem=a*a*a;
povrch=6*a*a;
printf("Objem je: %i cm3\n Povrch je: %i cm2\n", objem, povrch);
}
break;

case 2:
printf("Zadejte stranu a,b,c:\n");
scanf("%i %i %i", &a, &b, &c );
if(a < 0 || b < 0 || c < 0)
{
printf("Vsechny cisla musi byt kladna, zkus to jeste jednou.\n");
}else
{
objem=a*b*c;
povrch=2*(a*b+b*a+a*c);
printf("Objem je: %i cm3\n Povrch je: %i cm2\n", objem, povrch);
}
break;

case 3:
printf("Zadejte polomer, stranu a vysku;\n");
scanf ("%i %i %i",&r, &v, &PI, &s);
if(r < 0 || v < 0 || s < 0)
{
printf("Zadej kladne cislo\n");
}else
{
objem=(PI*r*r*v)/3;
printf("Objem je: %i cm3\n",objem);
printf("Zadejte polomer a stranu;\n");
scanf ("%i %i",&r, &s, &PI);
if(r < 0 || s < 0)
{
printf("Zadej kladne cislo\n");
}else
{
povrch=PI*r*(r+s);
printf("Povrch je: %i cm2\n",povrch);
}
}
break;

case 4:
printf("Zadejte polomer a vysku:\n");
scanf("%i %i", &r, &v, &PI );
if(r < 0 || v < 0)
{
printf("Zadej kladne cislo\n");
}else
{
objem=PI*r*r*v;
povrch=2*PI*r*(r+v);
printf("Objem je: %i cm3\nPovrch je: %i cm2\n", objem, povrch);
}
break;

case 5:
printf("Zadejte prumer:\n");
scanf("%i",&d, &PI);
if(d < 0)
{
printf("Zadej kladne cislo\n");
}else
{
objem=(PI*d*d*d)/6;
povrch=PI*d*d;
printf("Objem je: %i cm3\n Povrch je: %i cm2\n", objem, povrch);
}
break;
case 0:
printf("Konec programu\n");
break;

default:
printf("Zadejte pouze to cislo co je v nabidce.\n");
break;

}//switch konec

}//while konec
system ("pause");

}

Nahlásit jako SPAM
IP: 77.48.59.–
paatrikv0
Newbie
3. 1. 2010   #13
-
0
-

To Hanzis : fakt díky :smile1:

Nahlásit jako SPAM
IP: 82.100.0.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 115 hostů

Podobná vlákna

Zaokrouhlovani — založil Error

Zaokrouhlování — založil ody

Java - Zaokrouhlování — založil Vlastimil Juračka

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý