Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
kmicha
/
Tallinna-Veehaarde-Projket
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
4d8190e6
authored
a year ago
by
kmicha
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
9c95e80c
master
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
185 additions
and
0 deletions
Proge failid/veereostus.c
Proge failid/veereostus.c
0 → 100644
View file @
4d8190e6
/*
Html/javascriptist tuleb käsk/sisetus punktist X:
1) C programm leiab tabelist punkti IDga X
2) Leiab teekonna, mida reostus läbib, liites vahemaad ja keskmiseid kiiruseid kokku.
3) Väljastab aja (sekundites vist) kaua läheb, et jõuda Ülemisteni.
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef
struct
{
double
Lat
;
double
Long
;
}
koordinaat
;
typedef
struct
{
koordinaat
asukoht
;
double
Kiirus
;
int
suubumisID
;
}
punkt
;
void
failiNimi
(
char
[
20
],
char
*
);
void
sisestus
(
int
*
);
int
failiPikkus
(
FILE
*
);
void
check
(
FILE
*
);
void
taitmine
(
FILE
*
,
int
x
,
punkt
[
x
]);
void
kontroll
(
int
,
int
x
,
punkt
[
x
]);
double
ajaLeidmine
(
int
,
int
x
,
punkt
[
x
]);
double
arvutus
(
double
,
double
,
double
,
double
);
int
main
(
void
){
int
sisestusID
=
2
,
n
,
x
;
double
aeg
;
char
Fnimi
[
20
];
FILE
*
F
;
failiNimi
(
Fnimi
,
"Sisetage algandmete fail (.txt):
\n
"
);
// siia tuleb panna reaalse nimekirja aadress
F
=
fopen
(
Fnimi
,
"r"
);
check
(
F
);
n
=
failiPikkus
(
F
);
punkt
punktid
[
n
];
taitmine
(
F
,
n
,
punktid
);
fclose
(
F
);
// pole faili enam avatult vaja
sisestus
(
&
sisestusID
);
//Peaks tulema kasutajaliideselt
printf
(
"ID on: %d
\n
"
,
sisestusID
);
kontroll
(
sisestusID
,
n
,
punktid
);
aeg
=
ajaLeidmine
(
sisestusID
,
n
,
punktid
);
x
=
atoi
(
aeg
);
return
x
;
}
void
failiNimi
(
char
input
[
20
],
char
*
tekst
){
printf
(
"%s"
,
tekst
);
scanf
(
"%s"
,
input
);
}
void
sisestus
(
int
*
x
){
printf
(
"Reopunkti algpunkt:
\n
"
);
scanf
(
"%d"
,
x
);
}
void
check
(
FILE
*
input
){
if
(
input
==
NULL
){
printf
(
"Faili ei leitud!
\n
"
);
exit
(
1
);
}
fclose
(
input
);
}
// Kontrollib, kui mitu kirjet failis on
int
failiPikkus
(
FILE
*
input
){
int
x
=
0
,
s
;
double
a
,
b
,
c
;
while
(
fscanf
(
input
,
"%lf %lf %lf %d"
,
&
a
,
&
b
,
&
c
,
&
s
)
!=
EOF
){
x
++
;
}
rewind
(
input
);
printf
(
"Ridade arv: %d
\n
"
,
x
);
return
x
;
}
// Struct massiivi täitmine
void
taitmine
(
FILE
*
input
,
int
N
,
punkt
punktid
[
N
]){
int
i
=
0
;
while
(
fscanf
(
input
,
"%lf %lf %lf %d"
,
&
punktid
[
i
].
asukoht
.
Lat
,
&
punktid
[
i
].
asukoht
.
Long
,
&
punktid
[
i
].
Kiirus
,
&
punktid
[
i
].
suubumisID
)
!=
EOF
){
i
++
;
}
}
// Kontrollib, ega algpunkt ei ole lõpppunkt
void
kontroll
(
int
ID
,
int
n
,
punkt
punktid
[
n
]){
printf
(
"Toimub kontroll
\n
"
);
if
(
punktid
[
ID
].
suubumisID
==
-
1
){
exit
(
1
);
}
}
// Leiab terve vahemaa ja aja
double
ajaLeidmine
(
int
algID
,
int
N
,
punkt
punktid
[
N
]){
int
uusID
,
counter
=
0
;
double
x
,
lat1
,
long1
,
lat2
,
long2
,
vahemaa
=
0
;
int
vanaID
=
algID
;
double
kiirus
=
punktid
[
algID
].
Kiirus
;
while
(
punktid
[
vanaID
].
suubumisID
!=
-
1
){
uusID
=
punktid
[
vanaID
].
suubumisID
;
lat1
=
punktid
[
vanaID
].
asukoht
.
Lat
;
long1
=
punktid
[
vanaID
].
asukoht
.
Long
;
lat2
=
punktid
[
uusID
].
asukoht
.
Lat
;
long2
=
punktid
[
uusID
].
asukoht
.
Long
;
vahemaa
+=
arvutus
(
lat1
,
long1
,
lat2
,
long2
);
kiirus
+=
punktid
[
uusID
].
Kiirus
;
counter
++
;
}
kiirus
=
kiirus
/
counter
;
x
=
vahemaa
/
kiirus
;
return
x
;
}
// arvutab koordinaatide vahelise vahemaa
double
arvutus
(
double
Lat1
,
double
Long1
,
double
Lat2
,
double
Long2
){
int
R
=
6371
;
double
D
;
Lat1
=
Lat1
*
M_PI
/
180
;
Long1
=
Long1
*
M_PI
/
180
;
Lat2
=
Lat2
*
M_PI
/
180
;
Long2
=
Long2
*
M_PI
/
180
;
D
=
R
*
acos
(
sin
(
Lat1
)
*
sin
(
Lat2
)
+
cos
(
Lat1
)
*
cos
(
Lat2
)
*
cos
(
Long2
-
Long1
));
return
D
;
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment