Commit 8b136bf2 by Raul.Leemet

Upload new file

parent 0a3dea21
Showing with 185 additions and 0 deletions
/**
* Fail: kontrolltoo1_Kippar_IASB21.c
* Autor: Krista Kippar
* Loodud: 02.03.2017
* Viimati muudetud: 08.03.2017
*
* Kirjeldus: Leida sisestatud ringjoone sisse jvate punktide kaugus ringjoone keskpunktist programmis on ainult failist loetud andmete sisestus
*/
#include <stdio.h> // standardsisendvljund
#include <stdlib.h> // exit
#include <math.h>//pow
#define N 5 //kirjete arv isend failis
typedef struct{
float x;//x-koordinaat
float y;//y-koordinaat
}Punktid;
typedef struct{
float L;
Punktid koordinaat;
}Kaugusli;//kaugus lisandite ehk koos punktidega
//funktsioonide prototbid
float askValue(char *K);
float askValueCheck(char *K);
void readIn(FILE *in, Kaugusli *Koordinaat);
int CheckFile(FILE *input, char *Filename);
float calculateDistance(float a, float b, float c, float d);
void lenghtsArray(Kaugusli *pikkused, int c, float xalg, float yalg);
void writeFile(FILE *input, Kaugusli *LoppKirje, int n, char *t, float C);
int main(void)
{
double Xo, Yo;// ringjoone keskpunkti koordinaadid X0 ja Y0
double R;//ringjoone raadius
char *S = "ff.txt"; // sisend faili nimi
int i; //loendur
char *V = "MAHUB.txt";//vljund faili nimi
//Kaugusli Koordinaadid[N];
Kaugusli Lopp[N];
FILE *fi, *fo;
fi= fopen(S, "r");
fo = fopen(V, "w");
if(CheckFile(fi, S) == 0)
{
printf("Sisend fail \"%s\" leiti lesse!\n", S);
}
else
{
printf("Sisendfaili \"%s\" ei leitud ja programm suletakse\n", S);
exit(0);//programm lpetab t
}
Xo = askValue("ringi keskpunkt X koordinaat");
Yo = askValue("ringi keskpunkti y koordinaat");
R = askValueCheck("ringi raadius");//lisa kontroll R<0
for ( i = 0; i < N ; i ++)
{
readIn(fi, &Lopp[i]);
}
lenghtsArray(Lopp, N, Xo, Yo);
writeFile(fo, Lopp, N, V, R);
fclose(fi);
return 0;
}
float askValue(char *K)//ksitakse vrtus K-vrtuse seletus
{
float a;//Ksitav suurus(pow((c-a), 2))
printf("Palun sisestage %s:\n", K);
scanf("%f", &a);
return a;
}
float askValueCheck(char *K)//ksitakse vrtus K-vrtuse seletus
{
float a;//Ksitav suurus(pow((c-a), 2))
do
{
printf("Palun sisestage %s:\n", K);
scanf("%f", &a);
if(a < 0)
{
printf("Vale vrtus\n");
}
}while(a < 0);
return a;
}
int CheckFile(FILE *input, char *Filename)
{
if (input == NULL)
{
printf("Ei saanud avada faili %s\n", Filename);
return 1;
}
return 0;
}
void readIn(FILE *in, Kaugusli *Koordinaat)
{
int i = 0; //kordustskli loenduri algvrtustamine
while(feof(in) == 0)
{
fscanf(in, "%f %f",&(Koordinaat + i)-> koordinaat.x, &(Koordinaat + i)-> koordinaat.y );
printf("Loeti sisse X: %f ja Y: %f\n", (Koordinaat + i)-> koordinaat.x, (Koordinaat + i )-> koordinaat.y);
i++;
};
}
float calculateDistance(float a, float b, float c, float d)//a ja c on x koordinaadid ja b ja d y koordinaadid ja arvutatakse punktide vaheline kaugus
{
float l;
l = sqrt(((pow((c-a), 2))+(pow((b-d), 2))));//arvutab punktide vahelise kauguse
return l;
}
void lenghtsArray(Kaugusli *pikkused, int c, float xalg, float yalg)//c kui palju peab massivi asju tegema
{
int i;
for(i = 0; i < c; i++ )
{
pikkused[i].L = calculateDistance(xalg, yalg, pikkused[i].koordinaat.x, pikkused[i].koordinaat.y);
}
}
void writeFile(FILE *input, Kaugusli *LoppKirje, int n, char *t, float C)
{
int l;
for (l = 0; l < n; l++)
{
fprintf(input,"X: %f\t Y: %f\t", LoppKirje[l].koordinaat.x, LoppKirje[l].koordinaat.y);
printf("X: %f\t Y: %f\t", LoppKirje[l].koordinaat.x, LoppKirje[l].koordinaat.y);
if(LoppKirje[l].L > C)
{
fprintf(input, "punkt ei asu ringjoone sees\n");
printf("punkt ei asu ringjoone sees\n");
}else
{
fprintf(input, "kaugus ringjoone keskpunktist %f\n", LoppKirje[l].L);
printf("kaugus ringjoone keskpunktist %f\n", LoppKirje[l].L);
}
}
printf("Andmed on kirjutatud algselt sisestatud tulemuste faili nimega \"%s\" !\n", t);
}
/* typedef saab luua uusi andmetpe, nt struckti vi unionide juures vga kasulik, nt kui on
typedef struct{
char linn[15];
char tnv[10];
int indeks;
}Asukoht;
siis funkstioonis deklareeitakse nt massiiv selle andmetbiga Asukoht Isik[5],
siis saab struktuuri poole prduda vajaliku strukti osa poole jrgnevalt Isik.linn, Isik.tnv vi Isik.indeks*/
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment