Repository navigation
Expand file tree
/
Copy pathmall.cpp
More file actions
165 lines (129 loc) · 3.33 KB
/
Copy pathmall.cpp
File metadata and controls
165 lines (129 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
/*
================================================================================
Datorer och programmering, DoP, 10 hsp, termin/år: VT/2013
Inlämningsuppgift nr:
Namn: Thomas Nordenmark
Personummer: 810427-8257
Fyll i (alt. stryk det som INTE är relevant) av nedanstående:
Den fil som jag lämnar in går att kompilera och
programmet fungerar för alla de testdata som finns för uppgiften: Ja/Nej
Om Nej, beskriv vilka testdata som ger problem:
Jag har använt kompilator/editor:
Jag har använt följande dator:
med operativsystemet:
Jag har arbetat ungefär 4 timmar med denna uppgift
================================================================================
*/
#include <iostream>
using namespace std;
// Deklaration av programmets funktioner.
void skrivInfo();
int lasEttTal();
char lasOp();
void ordna(int &tal1, int &tal2);
long berakna(char op, int tal1, int tal2);
void skrivResultat(long svar);
int main()
{
int tal1, tal2;
char op;
long svar;
// Skriv ut information om programmet.
skrivInfo();
// Läs in tal1 och tal2.
tal1 = lasEttTal();
tal2 = lasEttTal();
// Läs in operationen som ska utföras.
op = lasOp();
// Sortera talen i stigande ordning.
ordna(tal1, tal2);
// Skicka tal1, tal2 samt valet av operation till beräkningsfunktionen.
svar = berakna(op, tal1, tal2);
// Skriv ut resultatet av beräkningen.
skrivResultat(svar);
return 0;
}
void skrivInfo()
{
cout << "Programmet läser in två tal, utför vald" << endl;
cout << "beräkning på samtliga tal i det angivna skåpet" << endl;
cout << "samt returnerar beräkningens resultat." << endl;
}
int lasEttTal()
{
int tal;
cout << "Mata in ett heltal: ";
cin >> tal;
return tal;
}
char lasOp()
{
char op;
cout << "Välj operation; (a)ddition, (m)ultiplikation" << endl;
cout << "eller (k)vadratsummering: ";
cin >> op;
return op;
}
void ordna(int &tal1, int &tal2)
{
// Om tal1 är större än tal2, byt plats på dessa.
if(tal1 > tal2)
swap(tal1, tal2);
}
long berakna(char op, int tal1, int tal2)
{
int i = 0;
long svar = 0;
if(op == 'a')
{
for(i = tal1; i <= tal2; i++)
{
// Addera svaret med nästa tal i serien tills i = tal2.
svar += i;
}
return svar;
}
else if(op == 'k')
{
for(i = tal1; i <= tal2; i++)
{
// Multiplicera svaret med sig själv tills i = tal2.
svar += (i * i);
}
return svar;
}
else if(op == 'm')
{
// Lokal variabel för multiplikationsberäkningen.
long svar = 1;
for(i = tal1; i <= tal2; i++)
{
// Multiplicera svaret med nästa tal i serien tills i = tal2.
svar *= i;
}
return svar;
}
else
{
// Visa ett felmeddelande om något annat än 'a', 'k' eller 'm' matats in.
cout << "Du har valt en felaktig operation." << endl;
return 0;
}
}
void skrivResultat(long svar)
{
cout << "Svaret är: " << svar << endl;
}
/*
================================================================================
Här följer programkörningar för alla testdata:
==============================================
...
================================================================================
Här skriver du en kort rapport om uppgiften:
- ett eller ett par stycken om vad uppgiften gick ut på,
- vilka svårigheter som fanns,
- vad du tyckte var besvärligt
- och hur du löste problemen.
Om det finns frågor att besvara i uppgiften ska det göras här.
*/