233 lines
4.5 KiB
C++
233 lines
4.5 KiB
C++
#include "std_lib_facilities.h"
|
|
|
|
#pragma region Oppgave 1 og 2
|
|
|
|
|
|
void inputAndPrintInteger() {
|
|
cout << "Skriv inn et tall: ";
|
|
int input = 0;
|
|
cin >> input;
|
|
cout << "Du skrev: " << input << "\n";
|
|
}
|
|
|
|
|
|
int inputInteger() {
|
|
cout << "Skriv inn et tall: ";
|
|
int input = 0; cin >> input;
|
|
return input;
|
|
}
|
|
|
|
void inputIntegersAndPrintSum() {
|
|
int a = inputInteger();
|
|
int b = inputInteger();
|
|
int number = a + b;
|
|
cout << "Summen av tallene: " << number << "\n";
|
|
}
|
|
|
|
bool IsOdd(int number) {
|
|
if (number % 2)
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
void printHumanReadableTime(int seconds) {
|
|
int minSek = 60, timeSek = pow(minSek, 2);
|
|
int timer = seconds / timeSek;
|
|
int timeLeft = seconds - timer * timeSek;
|
|
int minutter = timeLeft / minSek;
|
|
timeLeft = timeLeft - minutter * minSek;
|
|
cout << timer << " timer, " << minutter << " minutter, " << timeLeft << " sekunder" << "\n";
|
|
}
|
|
|
|
void inputIntegersUsingLoopAndPrintSum() {
|
|
int sum = 0;
|
|
int innlest = 0;
|
|
while (true) {
|
|
innlest = inputInteger();
|
|
if (innlest == 0)
|
|
break;
|
|
sum += innlest;
|
|
}
|
|
cout << "Summen er: " << sum << "\n";
|
|
}
|
|
|
|
double inputDouble() {
|
|
double inndata = 0.0;
|
|
cout << "Skriv inn et desimaltall: ";
|
|
cin >> inndata;
|
|
return inndata;
|
|
}
|
|
|
|
void NOKtoEUR(double eurValue = 9.75) {
|
|
double nok = inputDouble();
|
|
while (nok < 0)
|
|
{
|
|
cout << "Tallet er negativt, skriv inn et positivt tall." << endl;
|
|
nok = inputDouble();
|
|
}
|
|
cout << nok << " kroner er " << (nok / eurValue) << " euro." << endl;
|
|
}
|
|
|
|
|
|
#pragma endregion
|
|
|
|
#pragma region Oppgave 3
|
|
|
|
void Gangetabell(int width, int height) {
|
|
string leng = std::to_string(width * height);
|
|
for (int i = 1; i <= width; i++) {
|
|
for (int j = 1; j <= height; j++) {
|
|
cout << setw(leng.length() + 1) << i * j;
|
|
}
|
|
cout << endl;
|
|
}
|
|
}
|
|
|
|
void DrawGangetabell() {
|
|
int width = 0, height = 0;
|
|
cout << "Skriv inn bredden på gangetabellen: ";
|
|
cin >> width;
|
|
cout << "Skriv inn høyden på gangetabellen: ";
|
|
cin >> height;
|
|
Gangetabell(width, height);
|
|
}
|
|
#pragma endregion
|
|
|
|
#pragma region Oppgave 4
|
|
|
|
double Discriminant(double a, double b, double c) {
|
|
return pow(b, 2) - (4 * a * c);
|
|
}
|
|
|
|
void PrintRealRoots(double a, double b, double c) {
|
|
double disc = Discriminant(a, b, c);
|
|
if (disc > 0) {
|
|
double solved1 = (-b + sqrt(disc)) / (2 * a);
|
|
double solved2 = (-b - sqrt(disc)) / (2 * a);
|
|
cout << "The solutions are x_1 = " << solved1 << " and x_2 = " << solved2 << endl;
|
|
}
|
|
else if (disc == 0)
|
|
cout << "The solution are x = " << (-b / (2 * a)) << endl;
|
|
else if (disc < 0)
|
|
cout << "There are no real solutions.";
|
|
}
|
|
|
|
void SolveQuadradicEquation() {
|
|
double a = 0, b = 0, c = 0;
|
|
cout << "ax^2 + bx + c = 0" << endl;
|
|
cout << "Enter a = ";
|
|
cin >> a;
|
|
cout << "Enter b = ";
|
|
cin >> b;
|
|
cout << "Enter c = ";
|
|
cin >> c;
|
|
PrintRealRoots(a, b, c);
|
|
}
|
|
|
|
#pragma endregion
|
|
|
|
|
|
#pragma region Menu
|
|
|
|
bool menyFunc() {
|
|
cout << "\nVelg funksjon:\n";
|
|
cout << "(0) Avslutt\n";
|
|
cout << "(1) Summer to tall\n";
|
|
cout << "(2) Summer flere tall\n";
|
|
cout << "(3) Konverter fra NOK til EURO\n";
|
|
cout << "(4) Tegn gangetabell" << endl;
|
|
cout << "(5) Løs 2. gradsplynom" << endl;
|
|
cout << "Angi valg (0-5): ";
|
|
int valg = 0;
|
|
cin >> valg;
|
|
switch (valg)
|
|
{
|
|
case 0:
|
|
return false;
|
|
break;
|
|
case 1:
|
|
inputIntegersAndPrintSum();
|
|
break;
|
|
case 2:
|
|
inputIntegersUsingLoopAndPrintSum();
|
|
break;
|
|
case 3:
|
|
NOKtoEUR();
|
|
break;
|
|
case 4:
|
|
DrawGangetabell();
|
|
break;
|
|
case 5:
|
|
SolveQuadradicEquation();
|
|
break;
|
|
default:
|
|
cout << "Tast inn et tall mellom 0 og 5. Prøv igjen.\n";
|
|
break;
|
|
}
|
|
return true;
|
|
}
|
|
#pragma endregion
|
|
|
|
|
|
int main() {
|
|
{
|
|
/*
|
|
// Oppgave 1a
|
|
inputAndPrintInteger();
|
|
|
|
|
|
// 1b
|
|
int number = inputInteger();
|
|
cout << "Du skrev: " << number << "\n";
|
|
|
|
// 1c
|
|
cout << "\n\n1c\n";
|
|
inputIntegersAndPrintSum();
|
|
|
|
// 1d - TEORI
|
|
//
|
|
//Jeg valgte inputInteger fordi den ikke printer tallet du skrev inn tilbake til skjermen.
|
|
//
|
|
|
|
// 1e
|
|
for (int i = 0; i < 16; i++) {
|
|
cout << i << ": " << IsOdd(i) << "\n";
|
|
}
|
|
|
|
// 1f
|
|
printHumanReadableTime(10000);
|
|
*/
|
|
}
|
|
|
|
{
|
|
/*
|
|
// Oppgave 2a
|
|
inputIntegersUsingLoopAndPrintSum();
|
|
|
|
// 2b - TEORI
|
|
/*
|
|
Dersom man velger å avslutte summing med 0, burde man bruke en "while"-løkke. Den kan fortsette i all evighet, siden den ikke krever noen start- og sluttverider.
|
|
|
|
Der du sier hvor mange summinger du ønsker er en "for"-løkke det beste, da kjører den kun sp mange ganger du ønsker at den skal kjøre
|
|
*/
|
|
/*
|
|
// 2c
|
|
cout << "Halvparten :" << inputDouble() / 2;
|
|
*/
|
|
//2d
|
|
//NOKtoEUR();
|
|
}
|
|
|
|
|
|
#pragma region Oppgave 3 - Menysystem
|
|
// a
|
|
|
|
while (menyFunc()) {}
|
|
|
|
//Gangetabell(14, 14);
|
|
|
|
#pragma endregion
|
|
|
|
|
|
return 0;
|
|
} |