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ěď.
Fórum › C / C++
Zaokrouhlování
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.
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;
....
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.
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 :)
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");
}
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Zaokrouhlování — založil erenis
Zaokrouhlovani — založil Error
Zaokrouhlování — založil ody
Java - Zaokrouhlování — založil Vlastimil Juračka
Zaokrouhlování čísel — založil Petr
Moderátoři diskuze