Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
G
Gruppe04
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Frederik Simonsen
Gruppe04
Commits
936a2098
Commit
936a2098
authored
3 years ago
by
Frederik Simonsen
Browse files
Options
Downloads
Patches
Plain Diff
finn differanse baklengs og fiks av output på rutetabell
parent
2d7914f3
Branches
Branches containing commit
No related tags found
1 merge request
!4
Frederik
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
rute.cpp
+88
-18
88 additions, 18 deletions
rute.cpp
rute.h
+2
-1
2 additions, 1 deletion
rute.h
ruter.cpp
+18
-7
18 additions, 7 deletions
ruter.cpp
with
108 additions
and
26 deletions
rute.cpp
+
88
−
18
View file @
936a2098
...
...
@@ -125,12 +125,35 @@ bool Rute::finnesStopp(const int indeks) {
return
false
;
}
int
Rute
::
finnDifferanse
(
const
int
nr
)
{
/**
* Funksjon for å sjekke om et klokkeslett er gyldig (00:00-23:59)
*
* @param time
* @param minutt
* @return true
* @return false
*/
bool
Rute
::
gyldigTid
(
const
int
time
,
const
int
minutt
)
{
if
((
time
>=
0
&&
time
<=
23
)
&&
(
minutt
>=
0
&&
minutt
<=
59
))
{
return
true
;
}
else
return
false
;
}
int
Rute
::
finnDifferanse
(
const
int
nr
,
const
Retning
retning
)
{
int
totMin
=
0
;
for
(
auto
it
=
stoppene
.
begin
();
it
!=
stoppene
.
end
();
it
++
)
{
totMin
+=
(
*
it
)
->
hentMin
();
if
((
*
it
)
->
hentNr
()
==
nr
)
return
totMin
;
if
(
retning
==
Fram
)
{
for
(
auto
it
=
stoppene
.
begin
();
it
!=
stoppene
.
end
();
it
++
)
{
totMin
+=
(
*
it
)
->
hentMin
();
if
((
*
it
)
->
hentNr
()
==
nr
)
return
totMin
;
}
}
else
if
(
retning
==
Tilbake
)
{
for
(
auto
it
=
stoppene
.
rbegin
();
it
!=
stoppene
.
rend
();
it
++
)
{
if
((
*
it
)
->
hentNr
()
==
nr
)
return
totMin
;
totMin
+=
(
*
it
)
->
hentMin
();
}
}
return
-
1
;
// Skal ikke skje
}
...
...
@@ -145,29 +168,76 @@ string Rute::hentNavn(const Retning retning) {
return
startSted
;
}
/**
*
*
* @param diff - differanse mellom startsted og aktuelt stoppested i minutter
* @param start - faktisk startstedsnavn på ruten
* @param stSted - faktisk navn på aktuellt stoppested
* @see Rute::gyldigTid(...)
*/
void
Rute
::
ruteTabell
(
const
int
diff
,
const
string
start
,
const
string
stSted
)
{
int
startT
,
sluttT
,
startM
,
sluttM
,
tidMellom
;
int
startT
,
// starttime
startTotal
,
// regner ut total starttid i minutter
sluttT
,
// slutt-time
sluttTotal
,
// regner ut total slutttid i minutter
startM
,
// startminutter
sluttM
,
// slutt-minutter
tidMellom
,
// Tid mellom hver avgang i minutter
tPrint
,
// hjelpevariabel for å sørge for korrekt utskrift av time
mPrint
;
// hjelpevariabel for å sørge for korrekt utskrift av minutter
cout
<<
"
\n
Ruteavganger fra startstedet ("
<<
start
<<
") - "
<<
"avslutt med 0 0):
\n\n
"
;
cout
<<
"Fra kl. (00:01 - 23:59): "
;
cin
>>
startT
>>
startM
;
cin
.
ignore
();
while
(
startT
!=
0
||
startM
!=
0
)
{
cin
>>
startT
>>
startM
;
cin
.
ignore
();
// Leser starttid
while
(
!
gyldigTid
(
startT
,
startM
))
{
// Sørger for at starttid er gyldig
cout
<<
"
\n
Ulovlig klokkeslett. Prøv igjen (tt mm): "
;
cin
>>
startT
>>
startM
;
cin
.
ignore
();
}
while
(
startT
!=
0
||
startM
!=
0
)
{
// Så lenge bruker ikke taster 0 0
// Leser tid mellom avganger
tidMellom
=
lesInt
(
"Tid mellom avganger"
,
MINTID
,
MAXTID
);
cout
<<
"Til kl. ("
<<
((
startT
<
10
)
?
"0"
:
""
)
<<
startT
<<
':'
<<
((
tidMellom
<
10
)
?
"0"
:
""
)
<<
tidMellom
<<
" - 23:59): "
;
startTotal
=
(
startT
*
60
)
+
startM
+
tidMellom
;
// Omregner for sjekk
tPrint
=
startTotal
/
60
;
// Regner ut gyldig utskrift:
mPrint
=
startTotal
%
60
;
cout
<<
"Til kl. ("
<<
((
tPrint
<
10
)
?
"0"
:
""
)
<<
tPrint
<<
':'
<<
((
mPrint
<
10
)
?
"0"
:
""
)
<<
mPrint
<<
" - 23:59): "
;
// Leser slutt tid
cin
>>
sluttT
>>
sluttM
;
cin
.
ignore
();
sluttTotal
=
(
sluttT
*
60
)
+
sluttM
;
// Omregner for sjekk
// Sørger for lovlig slutt-tid
while
(
!
gyldigTid
(
sluttT
,
sluttM
)
||
sluttTotal
<
startTotal
)
{
cout
<<
"
\n
Ulovlig klokkeslett. Prøv igjen (tt mm): "
;
cin
>>
sluttT
>>
sluttM
;
cin
.
ignore
();
sluttTotal
=
(
sluttT
*
60
)
+
sluttM
;
// Omregner for sjekk
}
tPrint
=
(
sluttTotal
+
1
)
/
60
;
// Regner ut gyldig utskrift
mPrint
=
(
sluttTotal
+
1
)
%
60
;
cout
<<
"
\n\n
Fra kl. ("
<<
((
sluttT
<
10
)
?
"0"
:
""
)
<<
sluttT
<<
':'
<<
((
sluttM
+
1
<
10
)
?
"0"
:
""
)
<<
sluttM
+
1
cout
<<
"
\n\n
Fra kl. ("
<<
((
tPrint
<
10
)
?
"0"
:
""
)
<<
tPrint
<<
':'
<<
((
mPrint
<
10
)
?
"0"
:
""
)
<<
mPrint
<<
" - 23:59): "
;
cin
>>
startT
>>
startM
;
cin
.
ignore
();
cin
>>
startT
>>
startM
;
cin
.
ignore
();
// Leser ny starttid
startTotal
=
(
startT
*
60
)
+
startM
;
// Omregning
// Sørger for ny lovlig starttid:
while
((
!
gyldigTid
(
startT
,
startM
)
||
startTotal
<=
sluttTotal
)
&&
(
startT
!=
0
||
startM
!=
0
))
{
// Sørger for at starttid er gyldig
cout
<<
"
\n
Ulovlig klokkeslett. Prøv igjen (tt mm): "
;
cin
>>
startT
>>
startM
;
cin
.
ignore
();
startTotal
=
(
startT
*
60
)
+
startM
;
}
}
}
...
...
This diff is collapsed.
Click to expand it.
rute.h
+
2
−
1
View file @
936a2098
...
...
@@ -38,8 +38,9 @@ class Rute {
Rute
(
std
::
ifstream
&
inn
);
bool
erListeGyldig
();
bool
erTall
(
std
::
string
nvn
);
bool
gyldigTid
(
const
int
time
,
const
int
minutt
);
bool
finnesStopp
(
const
int
indeks
);
int
finnDifferanse
(
const
int
nr
);
int
finnDifferanse
(
const
int
nr
,
const
Retning
retning
);
std
::
string
hentNavn
(
const
Retning
retning
);
void
ruteTabell
(
const
int
diff
,
const
std
::
string
start
,
const
std
::
string
stSted
);
...
...
This diff is collapsed.
Click to expand it.
ruter.cpp
+
18
−
7
View file @
936a2098
...
...
@@ -164,8 +164,8 @@ void Ruter::ruteBeskrivelse(const int ruteNr){
*/
void
Ruter
::
ruteTabell
()
{
int
ruteNr
,
stopp
esteds
Nr
,
diff
eranse
;
stoppNr
,
diff
;
char
valg
;
string
navn
,
startSted
;
...
...
@@ -199,12 +199,23 @@ void Ruter::ruteTabell() {
if
(
navn
.
size
()
>
0
)
{
// Hvis navn er entydig:
// Henter stoppestedets unike nr:
stopp
esteds
Nr
=
gStoppestederBase
.
hentIndeksVhaNavn
(
navn
)
+
1
;
stoppNr
=
gStoppestederBase
.
hentIndeksVhaNavn
(
navn
)
+
1
;
//Hvis stoppestedet finnes på ruten:
if
(
ruten
->
second
->
finnesStopp
(
stoppestedsNr
))
{
differanse
=
ruten
->
second
->
finnDifferanse
(
stoppestedsNr
);
startSted
=
ruten
->
second
->
hentNavn
(
Fram
);
ruten
->
second
->
ruteTabell
(
differanse
,
startSted
,
navn
);
if
(
ruten
->
second
->
finnesStopp
(
stoppNr
))
{
switch
(
valg
)
{
case
'F'
:
diff
=
ruten
->
second
->
finnDifferanse
(
stoppNr
,
Fram
);
break
;
// Henter differanse ved retning fram
case
'T'
:
diff
=
ruten
->
second
->
finnDifferanse
(
stoppNr
,
Tilbake
);
break
;
// Henter differanse ved retning tilbake
}
//diff = ruten->second->finnDifferanse(stoppNr);
//startSted = ruten->second->hentNavn(Fram);
ruten
->
second
->
ruteTabell
(
diff
,
startSted
,
navn
);
}
else
// Hvis stoppet ikke finnes på ruten:
cout
<<
"
\n
Stoppestedet "
<<
navn
<<
" finnes ikke "
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment