Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C by STom ( 14 years ago )
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX 128
#define UGRAS 5
#define MINUGRAS 1.5
#define MAXUGRAS 2.5
#define MAXROSSZUGRAS 2
/* Sor beolvasasa */
int getline(char s[], int lim) {
int i;
char c;
for(i=0;i<lim && (c=getchar())!='\n' && c!=EOF;++i)s[i]=c;
if(c == EOF) {
return -1;
}
s[i]='\0';
while(c!='\n'&& c!=EOF)c=getchar();
return i;
}
/* Space-k es Tabok eltavolitasa elejerol es vegerol */
void trim(char s[]) {
int i=0,j;
while((s[i]==' ')||(s[i]=='\t')) {
i++;
}
if(i>0) {
for(j=0;j<strlen(s);j++) {
s[j]=s[j+i];
}
s[j]='\0';
}
i=strlen(s)-1;
while((s[i]==' ')||(s[i]=='\t')) {
i--;
}
if(i<(strlen(s)-1)) {
s[i+1]='\0';
}
}
int lebeg(char s[]){
int i=0, kezd;
while(isspace(s[i])) ++i;
if(s[i]=='+'||s[i]=='-') ++i;
kezd=i;
while(isdigit(s[i])) ++i;
if(s[i]=='.') ++i;
while(isdigit(s[i])) ++i;
if(i==kezd||kezd+1==i&&s[kezd]=='.') return 0;
if(toupper(s[i])=='E'){
++i;
if(s[i]=='+'||s[i]=='-')++i;
if(!isdigit(s[i])) return 0;
while(isdigit(s[i])) ++i;}
if(isspace(s[i])||!s[i]) return 1;
else return 0;
}
int rendez(double r[], int db) {
int i,j;
double tmpR = 0.;
for (i = 0; i < db; ++i) {
for(j = i+1; j < db; ++j) {
if(r[i] < r[j]) {
tmpR = r[i];
r[i] = r[j];
r[j] = tmpR;
}
}
}
}
double atlag(double szam, int db) {
if(db == 0) {
return 0.;
} else {
return szam / (double)db;
}
}
main (void) {
int i, j,ok, vege=0, legjobbV=0, db=0, ugras, sor, rosszU=0, rosszUperV, hanyLegjobb;
double ugrasok[UGRAS], tmpUgras, osszeg=0., legjobbU=0.;
char tmp[MAX+1];
while(!vege) {
db++;
ugras = 1;
rosszUperV = 0;
ok = 0;
printf("Kerem adja meg a(z) %d. versenyzo eredmenyeit.\n", db);
printf("---------------------------------------------\n\n");
while(!ok) {
if(rosszUperV <= 2) {
printf("Kerem adja meg a(z) %d. ugras eredmenyet:\n", ugras);
sor = getline(tmp, MAX);
if(!sor) {
if(ugras == 1) {
vege = 1;
db--;
}
ok = 1;
} else if(sor > MAX-1) {
printf("Tul sok karaktert adott meg.\n");
} else {
trim(tmp);
if(!lebeg(tmp)) {
printf("Nem valos szamot adott meg.\n");
} else {
tmpUgras = atof(tmp);
if(tmpUgras == 0.) {
rosszU++;
rosszUperV++;
ugrasok[ugras-1] = tmpUgras;
if(rosszUperV == MAXROSSZUGRAS+1) {
ok = 1;
}
ugras++;
} else if(tmpUgras < MINUGRAS || tmpUgras > MAXUGRAS) {
printf("Az ugrasnak 1.5 es 2.5 kozott kell lennie.\n");
} else {
ugrasok[ugras-1] = tmpUgras;
osszeg += tmpUgras;
if(legjobbU < tmpUgras) {
legjobbU = tmpUgras;
legjobbV = db;
}
if(ugras == 5) {
ok = 1;
}
ugras++;
}
}
}
} else {
printf("Ez a versenyzo kizarasra kerult.\n\n");
ok = 1;
}
}
if(!vege) {
if(rosszUperV <= MAXROSSZUGRAS) {
ugras--;
if(rosszUperV < ugras) {
rendez(ugrasok, ugras);
if(ugras < 3) {
hanyLegjobb = ugras;
} else {
hanyLegjobb = 3;
}
printf ("\nAz %d. versenyzo legjobb %d ervenyes eredmenye:\n\n",db, hanyLegjobb - rosszUperV);
j=1;
for (i=0;i<hanyLegjobb;++i) {
if(ugrasok[i] != 0) {
printf("%d.: %.2f\n", j, ugrasok[i]);
++j;
}
}
printf("\nErvenytelen ugrasok szama: %d db.\n", rosszUperV);
printf("------------------------------------\n\n");
} else {
printf ("A versenyzonek nem volt ervenyes ugrasa.\n\n");
}
} else {
printf("\nA versenyzo kizarasra kerult.\n");
}
}
}
if(db > 0) {
if(db != rosszU) {
printf("A program befejezte az adatok bekereset, osszesitesek:\n");
printf("------------------------------------------------------\n\n");
printf("Az ugrasok atlaga: %.2f\n", atlag(osszeg, db));
printf("A legjobb ugrast a(z) %d. versenyzo hajtotta vegre, eredmenye: %.2f\n", legjobbV, legjobbU);
printf("Az ervenytelen ugrasok szama: %d\n", rosszU);
} else {
printf("Nem volt ervenyes ugras\n");
}
} else {
printf("Nincsenek versenyzok.\n");
}
}
Revise this Paste