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; } |