Programozás‎ > ‎Feladatok‎ > ‎Varázslat‎ > ‎Megoldás‎ > ‎

ve_varazslat.c

Letöltés: ve_varazslat.c

#include <stdio.h>

char elemek[100][100];
int elemekLs[100];
int elemekL;
char kombinaciok[100][108];
int kombinaciokLs[100];
char ellentetek[100][56];
int ellentetekLs[100];
char valasz[100];
int valaszL;

void atvaltvaKiir(int hely) {
valaszL = 0;
int i, j, k;
int volt = 0;
for (i = 0; i < elemekLs[hely]; i++) {
valasz[valaszL] = elemek[hely][i];
valaszL++;
if (i == 0) continue;
for (j = 0; j < kombinaciokLs[hely]; j+=3) {
if ( (kombinaciok[hely][j] == valasz[valaszL-2] 
               && kombinaciok[hely][j+1] == valasz[valaszL-1]) 
               || (kombinaciok[hely][j] == valasz[valaszL-1] 
               && kombinaciok[hely][j+1] == valasz[valaszL-2]) ) {
valasz[valaszL-2] = kombinaciok[hely][j+2];
valaszL--;
}
}
for (j = 0; j < ellentetekLs[hely]; j+=2) {
for (k = 0; k < valaszL; k++) {
if (valasz[k] == ellentetek[hely][j] || valasz[k] == ellentetek[hely][j+1]) {
if (valasz[k] == ellentetek[hely][j]) {
if (volt == 2) {
volt = 0;
valaszL = 0;
goto end;
}
volt = 1;
} else {
if (volt == 1) {
volt = 0;
valaszL = 0;
goto end;
}
volt = 2;
}
}
}
}
volt = 0;
end:
continue;
}
}

int main(int argc, char **argv) {
FILE* file = fopen("m1.in", "r");
fscanf(file, "%i", &elemekL);
int i, j;
for (i = 0; i < elemekL; i++) {
fscanf(file, "%i", &kombinaciokLs[i]);
kombinaciokLs[i] *= 3;
for (j = 0; j < kombinaciokLs[i]; j++) {
if (j+1 < kombinaciokLs[i])
fscanf(file, " %c", &kombinaciok[i][j]);
else
fscanf(file, "%c", &kombinaciok[i][j]);
}
fscanf(file, "%i", &ellentetekLs[i]);
ellentetekLs[i] *= 2;
for (j = 0; j < ellentetekLs[i]; j++) {
if (j+1 < ellentetekLs[i])
fscanf(file, " %c", &ellentetek[i][j]);
else
fscanf(file, "%c", &ellentetek[i][j]);
}
fscanf(file, "%i", &elemekLs[i]);
for (j = 0; j < elemekLs[i]; j++) {
if (j+1 < elemekLs[i] || elemekLs[i]==1)
fscanf(file, " %c", &elemek[i][j]);
else
fscanf(file, "%c", &elemek[i][j]);
}
}
fclose(file);
file = fopen("m1.out", "w");
for (i = 0; i < elemekL; i++) {
atvaltvaKiir(i);
fprintf(file, "Case #%i: [",i+1);
for (j = 0; j < valaszL; j++) {
fprintf(file, "%c",valasz[j]);
if (j+1<valaszL) fprintf(file, ", ");
}
fprintf(file, "]\n");
}
fclose(file);
return 0;
}