Commit dd727167 by raliis

Upload New File

parent 63e6fe3f
Showing with 143 additions and 0 deletions
#include <stdio.h>
#include <string.h>
typedef struct
{
int i;
char S[30];
} Kirje;
int fileExist (char *filename); // kontrollib faili olemasolu
int howManyLines(char *failiNimi); // loeb ära mitu rida failis on
void kirjedSisse (Kirje **, char *filename); // loeb andmed sisse
void sort (Kirje *nimekiri, int T); // sorteerib andmed
void valjastus (Kirje *nimekiri, int T); // väljastab sorteeritud andmed
int main ()
{
// kontrollib faili olemasolu, kui ei eksisteeri siis lõpetab programm töö
if (fileExist ("E1.txt") != 0)
{
printf ("Faili ei asu programmiga samas kaustas");
return 1;
}
int T;
T = howManyLines ("E1.txt"); // loeb ära read failis
Kirje nimekiri[T]; // massiiv andmete hoidmiseks
Kirje *kirjeviit = nimekiri;
kirjedSisse (&kirjeviit, "E1.txt"); // loeb sisse andmed
sort (nimekiri, T); // sorteerib
valjastus (nimekiri, T); // väljastab tulemused faili ja ekraanile
return 0;
}
int fileExist (char *filename)
{
FILE *fp;
fp = fopen (filename, "r");
if (fp == NULL)
{
return 1;
}
else
{
fclose (fp);
return 0;
}
}
int howManyLines(char *failiNimi)
{
FILE *data;
data = fopen (failiNimi, "r");
int c = 0;
int read = 0;
while ((c = fgetc(data)) != EOF)
{
if (c == '\n')
read++;
}
fclose(data);
if (read == 0)
{
printf ("Fail %s on tühi", failiNimi);
return 1;
}
else
{
return read;
}
}
void kirjedSisse (Kirje **kirjeviit, char *filename)
{
int i = 0; // loendurid
int j;
FILE *fp; // avab faili, mille nimi anti kaasa
fp = fopen (filename, "r");
// loeb sisse andmed failist
while (fscanf (fp, "%d %s", &(*kirjeviit + i)->i, (*kirjeviit +i)->S) != EOF)
{
i++;
}
fclose (fp);
// väljastab tulemused ekraanile
for (j = 0; j < i; j++)
{
printf ("%d, %s\n", (*kirjeviit + j)->i, (*kirjeviit + j)->S);
}
printf ("\n");
}
void sort (Kirje *nimekiri, int T)
{
int i, j;
Kirje temp;
for (i = 0; i < T; i++)
{
for (j = 1; j < T; j++)
{
if (nimekiri[j-1].i > nimekiri[j].i) // kui eelnev fail on suurem, vahetab kohad
{
temp = nimekiri[j];
nimekiri[j] = nimekiri[j-1];
nimekiri[j-1] = temp;
}
else if (nimekiri[j-1].i == nimekiri[j].i)
{ // kui arvud on võrdsed kontrollib tähestikulist järjestust ja vajadused vahetab kohad
if (strcmp (nimekiri[j-1].S, nimekiri[j].S) > 0)
{
temp = nimekiri[j];
nimekiri[j] = nimekiri[j-1];
nimekiri[j-1] = temp;
}
}
}
}
}
void valjastus (Kirje *nimekiri, int T)
{
int i;
FILE *output; // loob faili
output = fopen ("E2.txt", "w");
for (i = 0; i < T; i++)
{
fprintf (output, "%d, %s\n", nimekiri[i].i, nimekiri[i].S);
printf ("%d, %s\n", nimekiri[i].i, nimekiri[i].S);
}
}
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