- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #define N 50
- /*----- MENU GLOWNE -----*/
- int menu() /* zwraca numer wybranej opcji */
- {
- char wybor;
- printf("1. Zrob test\n2. Stworz baze pytan\n3. Wyjscie z programu\n");
- printf("Wybor: ");
- while(scanf("%c", &wybor))
- {
- if (wybor == '1') return 1;
- else if (wybor == '2') return 2;
- else if (wybor == '3') return 3;
- else
- {
- system("cls");
- menu();
- }
- }
- }
- /*----- ZROB TEST -----*/
- void zrob_test() /* zwraca liczbe pytan */
- {
- int c, nr_linii=0, punkty=0, nr_pytania=0;
- char odpowiedz;
- /* czytanie z pliku */
- char nazwa_pliku[N];
- printf("Podaj nazwe pliku z pytaniami: ");
- scanf("%s", nazwa_pliku);
- FILE *fp;
- if((fp=fopen(nazwa_pliku, "r"))==NULL)
- {
- printf("Nie moge otworzyc pliku!\n");
- exit(1);
- }
- while((c=fgetc(fp))!=EOF)
- {
- fputc(c, stdout);
- if(c == '\n')
- {
- switch(nr_linii)
- {
- case 0: {printf("Tresc: "); break;}
- case 1: {printf("A: "); break;}
- case 2: {printf("B: "); break;}
- case 3: {printf("C: "); break;}
- case 4: {printf("D: "); break;}
- case 5:
- {
- printf("Twoja odpowiedz: ");
- scanf(" %c", &odpowiedz);
- odpowiedz = toupper(odpowiedz);
- c = fgetc(fp);
- if(odpowiedz == c)
- {
- printf("Dobra odpowiedz!\n");
- punkty++;
- }
- else
- {
- printf("Zla odpowiedz!\n");
- }
- nr_pytania++;
- }
- }
- nr_linii++;
- if(nr_linii==6) nr_linii = 0;
- }
- }
- printf("Koniec testu! Twoj wynik: %d/%d", punkty, nr_pytania);
- fclose(fp);
- getchar(); getchar();
- system("cls");
- }
- /*----- STWORZ BAZE PYTAN -----*/
- void stworz_baze()
- {
- char nazwa_testu[N];
- char nazwa_pliku[N];
- char linia[N];
- int liczba_pytan;
- int i, j, c;
- printf("Podaj nazwe pliku: ");
- scanf(" %s", nazwa_pliku);
- printf("Podaj nazwe testu: ");
- scanf(" %[^\n]", nazwa_testu);
- printf("Podaj liczbe pytan: ");
- scanf(" %d", &liczba_pytan);
- /* otwarcie pliku */
- FILE *fp;
- if((fp=fopen(nazwa_pliku, "a"))==NULL)
- {
- printf("Nie moge otworzyc pliku!\n");
- exit(1);
- }
- /* pisanie do pliku */
- fprintf(fp, "Nazwa testu: %s", nazwa_testu);
- for(i=0; i<liczba_pytan; i++)
- {
- printf("Podaj tresc %d pytania: ", i+1);
- scanf(" %[^\n]", linia);
- fprintf(fp, "\n%s", linia);
- printf("Podaj odpowiedz A: ");
- scanf(" %[^\n]", linia);
- fprintf(fp, "\n%s", linia);
- printf("Podaj odpowiedz B: ");
- scanf(" %[^\n]", linia);
- fprintf(fp, "\n%s", linia);
- printf("Podaj odpowiedz C: ");
- scanf(" %[^\n]", linia);
- fprintf(fp, "\n%s", linia);
- printf("Podaj odpowiedz D: ");
- scanf(" %[^\n]", linia);
- fprintf(fp, "\n%s", linia);
- printf("Podaj prawidlowa odpowiedz (A, B, C, lub D): ");
- scanf(" %[^\n]", linia);
- fprintf(fp, "\n%s", linia);
- }
- fclose(fp);
- printf("Baza pytan utworzona pomyslnie!");
- getchar(); getchar();
- system("cls");
- }
- /*----- MAIN -----*/
- int main()
- {
- while(1)
- {
- switch(menu())
- {
- case 1:
- {
- zrob_test();
- break;
- }
- case 2:
- {
- stworz_baze();
- break;
- }
- case 3:
- {
- exit(0);
- break;
- }
- default:
- {
- printf("Nie ma takiej opcji w menu!\n");
- getchar();
- system("cls");
- }
- }
- }
- }