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
Mar 20, 2024
by
kmicha
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
9c95e80c
Hide 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
;
}
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