//Jak tylko cwiczysz i juz wiesz / czujesz co robi to include to zapoznaj sie z #include <bits/stdc++.h>
#include <iostream>
//Oczywiscie using namespace ograniczamy do prostych rzeczy robionych na szybko / na SPOJa
//W realnym swiecie std::
using namespace std;
//Nie uzywaj float, o ile nie ma to jakiegos szczegolnego uzasadnienia. Uzywaj double
float ile_cali(float m)
{
//Czy napiszesz liczba * zmienna czy odwrotnie - nikt na to nie zwroci uwagi
//Ale spacje i wciecia sa juz bardzo wazne
return 39.37 * m;
}
float ile_centymetrow(float c)
{
//Dlaczego c * 100 jest zle, a c * 100.0 dobrze?
//Na ogol kwestia stylu, ale czasami mozesz sie przejechac nie uwzgledniajac typow stalych ;)
/*
DOWOD:
//Ta czesc kodu wymysl sam tak, aby main sie skompilowal
int main() {
int x = 3;
cout << x / 2 << endl;
cout << x / 2.0 << endl;
return 0;
}
*/
//Po prostu fajnie jest widziec, ze wynik bedzie liczba zmiennoprzecinkowa bez patrzenia na deklaracje funkcji
//Zwlaszcza, ze cialo funkcji moze byc rozbudowane (choc nie zaleca sie > 60 znakow, zycie weryfikuje to bolesnie)
//Uwaga ta dotyczy nade wszystko obiektowki, gdzie latwo mozna sie przejechac przy zlozonych metodach
return c * 100.0;
}
//Wspolczesnie kompilator ma raczej w powazaniu inline, ale warto wiedziec, ze cos takiego istnieje
//Istnieja jezyki programowania, gdzie inline pomaga tworzyc czytelny kod, np. z rodziny xBase Harbour i xHarbour
inline float ile_km(float km)
{
return km / 1000.0;
}
float ile_dm(float d)
{
return d * 10.0;
}
float ile_mm(float mm)
{
return mm * 1000.0;
}
int main()
{
//Nie uzywaj zmiennych globalnych, o ile nie musisz
//Na SPOJu zmienne globalne moga byc pomocne, ale tutaj wolalem profesjonalne podejscie ;)
double metry;
int wybor;
string cm;
bool kontynuuj = true;
//Event loop to taka madra nazwa tej dosc logicznej konstrukcji przydatnej chyba wszedzie ;)
//Rozni ludzie koduja to inaczej, np. while(!zakoncz)
while(kontynuuj) {
//Zalecam uzywanie tych spacji...
cout << "Wybierz" << endl;
cout << "1. Jednostki dlugosci" << endl;
cout << "2. Jednostki czasu" << endl;
cin>>wybor;
switch(wybor) {
case 1:
cout<<"Podaj metry"<<endl;
cin>>metry;
cout<<"Na Cale: "<<ile_cali(metry)<<endl;
cout<<"Na CM: "<<ile_centymetrow(metry)<<" cm"<<endl;
cout<<"Na KM: "<<ile_km(metry)<<" km"<<endl;
cout<<"Na MM: "<<ile_mm(metry)<<" mm"<<endl;
break;
case 2:
cout<<"Podaj mi"<<endl;
break;
//Zapoznaj sie z default
default:
break;
}
}
return 0;
}
Oczywiście prawda tylko w takich prostych przypadkach, gdzie chcesz choć raz coś zobaczyć bo po prostu bawisz się kodem. W realnym świecie rozwiązanie z do … while jest nieprawidłowe - wykonasz kod nawet dla kontynuuj = false, które może tak zostać ustawione np. w konstruktorze klasy gdy z jakiegoś powodu typu brak pliku csv z danymi chcesz wyłączyć program.
W żadnym przypadku nie musisz dodawać nowej biblioteki.
EDIT
A co mi tam. Też wkleję w kolorze 