9. Pretvaranje ugla - rešenje
U ovom zadatku potrebno je pretvoriti ugao dat u decimalnim stepenima u stepeni i minute. Takva konverzija je korisna jer se uglovi često izražavaju u formatu stepeni-minuti-sekundi u navigaciji, geodeziji, astronomiji i drugim srodnim oblastima. Na primer, ugao od 60.25 stepeni treba predstaviti kao 60 stepeni i 15 minuta.
Rešenje u programskom jeziku C
#include <stdio.h>
/*
Dat je ugao u stepenima na dve decimale.Napisati program kojim se dati ugao izražava
u stepenima i minutima. Na primer 60.25 predstaviti kao 60 stepeni i 15 minuta.
*/
int main()
{
double ugao;
int stepeni,minuta,ostatak;
printf("Unesi ugao u stepenima\n");
scanf("%lf", &ugao); //60.25
/*sporedni efekat kastovanja, tj. pretvaranje promenljive ugao u tip int,
doveće do zaokruživanja na prvi manji ceo broj, odnosno odbaciće se decimalni deo
*/
stepeni=(int)ugao; //stepeni = 60
ostatak=(ugao-stepeni)*100; //ostatak = 25
/*ostatak : 100 = minuta : 60, jer 1 stepen = 60 minuta, a ne 100*/
minuta=ostatak*60/100; //minuta=15
printf("%2d stepeni i %2d minuta", stepeni,minuta);
return 0;
}
/*
Dat je ugao u stepenima na dve decimale.Napisati program kojim se dati ugao izražava
u stepenima i minutima. Na primer 60.25 predstaviti kao 60 stepeni i 15 minuta.
*/
int main()
{
double ugao;
int stepeni,minuta,ostatak;
printf("Unesi ugao u stepenima\n");
scanf("%lf", &ugao); //60.25
/*sporedni efekat kastovanja, tj. pretvaranje promenljive ugao u tip int,
doveće do zaokruživanja na prvi manji ceo broj, odnosno odbaciće se decimalni deo
*/
stepeni=(int)ugao; //stepeni = 60
ostatak=(ugao-stepeni)*100; //ostatak = 25
/*ostatak : 100 = minuta : 60, jer 1 stepen = 60 minuta, a ne 100*/
minuta=ostatak*60/100; //minuta=15
printf("%2d stepeni i %2d minuta", stepeni,minuta);
return 0;
}
Objašnjenje rešenja u jeziku C
Program koristi jednostavne matematičke operacije za konverziju decimalnog ugla u stepeni i minute:
- Izračunavanje stepeni: Početni broj stepeni je jednostavno ceo deo unetog decimalnog broja. To se postiže pretvaranjem broja u tip int, što odbacuje decimalni deo.
- Izračunavanje minuta: Decimalni deo (koji predstavlja deo stepena) se mora pretvoriti u minute. Prvo se decimalni deo množi sa 100 da bi se dobio ostatak. Zatim se taj ostatak pretvara u minute množenjem sa 60 (jer je 1 stepen = 60 minuta) i deljenjem sa 100 (da bi se uzela u obzir početna množenja sa 100).
Rešenje u programskom jeziku JAVA
import java.util.Scanner;
public class PretvaranjeUgla {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Unesi ugao u stepenima");
double ugao = scanner.nextDouble(); // Na primer, ugao = 60.25
// Izračunavanje stepeni
int stepeni = (int) ugao; // stepeni = 60
int ostatak = (int)((ugao - stepeni) * 100); // ostatak = 25
// Pretvaranje ostatka u minute
int minuta = ostatak * 60 / 100; // minuta = 15
System.out.printf("%d stepeni i %d minuta%n", stepeni, minuta);
}
}
public class PretvaranjeUgla {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Unesi ugao u stepenima");
double ugao = scanner.nextDouble(); // Na primer, ugao = 60.25
// Izračunavanje stepeni
int stepeni = (int) ugao; // stepeni = 60
int ostatak = (int)((ugao - stepeni) * 100); // ostatak = 25
// Pretvaranje ostatka u minute
int minuta = ostatak * 60 / 100; // minuta = 15
System.out.printf("%d stepeni i %d minuta%n", stepeni, minuta);
}
}
Objašnjenje rešenja u Javi
Rešenje u Javi je analogno rešenju u C jeziku:
- Koristi se Scanner klasa za unos ugla sa tastature.
- Stepeni se dobijaju pretvaranjem unetog ugla u tip int, što uklanja decimalni deo.
- Preostali decimalni deo se koristi za izračunavanje minuta, na isti način kao u C kodu.
- Konačni rezultat se ispisuje koristeći System.out.printf sa odgovarajućim formatiranjem za prikaz stepeni i minuta.