Untitled
unknown
plain_text
4 years ago
4.5 kB
3
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>
#define MAXLEN 20
typedef struct
{
char subject[MAXLEN];
int gradecount;
int grades[MAXLEN];
float avg;
} ained;
int TextSisse(ained *list1);
void ListValja(ained *list1, int max);
void LogiValja(char tekst[], int rida);
void Valik(ained *list1, int kumb, char mis[], float keskmine, int max);
int main(void)
{
int max, edasi;
float keskmine;
char mis[MAXLEN];
ained list1[MAXLEN];
LogiValja("programmi kaivitamine", 0);
max = TextSisse(list1);
printf("lugesin %d ainet\n", max);
ListValja(list1, max);
LogiValja("programmi lopetamine", 0);
while (edasi != 0)
{
printf("vali aine:\n");
scanf("%s", mis);
printf("valisid %s\n", mis);
Valik(list1, 1, mis, 0, max);
printf("\n\n");
printf("vali keskmine hinne:\n");
scanf("%f", &keskmine);
printf("valisid %.2f\n", keskmine);
Valik(list1, 2, 0, keskmine, max);
printf("\n\n");
printf("kas soovid edasi otsida?\n");
printf("kirjuta 0 kui ei\n");
scanf("%d", &edasi);
printf("\n\n");
}
return EXIT_SUCCESS;
}
int TextSisse(ained *list1)
{
int i, j, palju;
j = 0;
FILE*fData = fopen("data61.txt", "r");
if (fData == NULL)
{
perror ("JAMA!! ei avane");
LogiValja("ei suutnud avada faili", 0);
}
LogiValja("faili avamine ja sisse lugemine", 0);
while (fscanf (fData, "%s %d ", (list1 + j)-> subject, &(list1 + j) -> gradecount) == 2)
{
palju = (list1 + j) -> gradecount;
//printf("\naines %s on %d hinnet\n", (list1 + j)-> subject, (list1 + j) -> gradecount);
for (i = 0; i < palju; i++)
{
if (fscanf(fData, "%d ", &(list1 + j) -> grades[i]) != 1)
{
return 0;
}
}
LogiValja(" rea hinnete lugemine labi", i + 1);
putchar('\n');
j++;
if (j > MAXLEN)
{
break;
LogiValja("ERROR liiga palju elemente array jaoks", 0);
}
}
fclose(fData);
LogiValja("faili rea ja aine kontroll", j + 1);
LogiValja("faili sulgemine", 0);
return j;
}
void ListValja(ained *list1, int max)
{
int i, j, hindeKogus;
float hindeSumma;
for (j = 0; j < max; j++)
{
printf("\naines %s on %d hinnet\n", (list1 + j)-> subject, (list1 + j) -> gradecount);
hindeKogus = (list1 + j) -> gradecount;
hindeSumma = 0;
if (hindeKogus == 0)
{
printf("hindeid ei olnud, keskmist ei ole");
}
else
{
for (i = 0; i < hindeKogus; i++)
{
printf("%d ", (list1 + j) -> grades[i]);
hindeSumma += (list1 + j) -> grades[i];
}
//printf("hinnete summa on %.f ", hindeSumma);
((list1 + i) -> avg) = hindeSumma / hindeKogus;
printf("\nkeskmine hinne on %.3f", (list1 + i) -> avg);
}
putchar('\n');
}
LogiValja("aine ja hinnete arvu valjastamise lopetamine", j + 1);
}
void LogiValja(char tekst[], int rida)
{
FILE*fData2 = fopen("data62.txt", "a+");
if (fData2 == NULL)
{
perror ("JAMA!! ei avane");
}
time_t currentTime;
time(¤tTime);
fprintf(fData2, "%s", tekst);
if (rida != 0)
{
fprintf(fData2, " real %d", rida);
}
fprintf(fData2, "\naeg on %s\n", ctime(¤tTime));
fclose(fData2);
}
void Valik(ained *list1, int kumb, char aine[], float keskmine, int max)
{
int i, j, keskValik;
float kesk;
if (kumb == 1)
{
for (i = 0; i < max; i++)
{
if ((strcmp(aine, (list1 + i) -> subject)) == 0)
{
printf("%s keskmine hinne on %f\n", (list1 + i) -> subject, (list1 + i) -> avg);
printf("teised hinded on: ");
for (j = 0; j < (list1 + i) -> gradecount; j++)
{
printf("%d ", (list1 + i) -> grades[j]);
}
putchar('\n');
}
}
}
else if (kumb == 2)
{
printf("kas tahad naha parema(1) voi halvema (2) keskmisega aineid\n");
scanf("%d", &keskValik);
if (keskValik == 1)
{
for (i = 0; i < max; i++)
{
kesk = (list1 + i) -> avg;
if (kesk > keskmine)
{
printf("%s\n", (list1 + i) -> subject);
}
}
putchar('\n');
}
else if (keskValik == 2)
{
for (i = 0; i < max; i++)
{
kesk = (list1 + i) -> avg;
if (kesk > keskmine)
{
printf("%s\n", (list1 + i) -> subject);
}
}
putchar('\n');
}
else
{
printf("miskit on m2da\n");
}
}
else
{
printf("midagi on m2da\n");
}
}
Editor is loading...