Решения (задачи 240-252)
Задача 244.
// Универсальная программа тестирования // имя файла теста задается в инструкции запуска программы #include "stdio.h" #include "conio.h" #include "string.h" void main(int argc, char* argv[]) char fname[40]; // имя файла теста FILE* f; // файл теста int VsegoVopr =0; // количество вопросов теста int PravOtv =0; // количество правильных ответов // для текущего вопроса int nOtv; // количество альтернативных ответов int Prav; // номер правильного ответа int Otv; // номер ответа, выбранного пользователем int p; // процент правильных ответов char st[80]; // строка файла теста int i; // счетчик циклов if (large) { puts("\n He задан файл вопросов теста!"); puts("Командная строка: test ИмяФайлаТеста\п"); return; strcpy(fname,argv[l]); // имя файла из командной строки // Открыть файл в режиме чтения (г) текста (t) if ((f = fopen(fname, "rt")) = NULL) { printf("Ошибка открытия файла %s", fname); getch(); return; clrscr (); puts("Хп Сейчас Вам будет предложен тест."); puts("К каждому вопросу дается несколько \ вариантов ответа."); puts("Вы должны ввести номер правильного ответа"); puts("и нажать клавишу Enter\n"); printf ("Для начала тестирования нажмите Enter"); getch(); textbackground (ВШЕ); clrscr(); while (!feof(f)) VsegoVopr++; fgets(st, 80, f); printf("\n%s\n", st); // читаем из файла вопрос // вопрос на экран fscanf(f,"%i %i", SnOtv, &Prav);// кол-во вариантов ответа //и номер прав, ответа fgets(st,80,f); // дочитать конец предыдущей строки //читаем и выводим альтернативные ответы for (i = 1; i <= nOtv; i- fgets(st, 80, f); printf ("%i. %s", i, st); } printf("\п Ваш выбор › "); scanf("%i", sotv); if (Otv == Frav) PravOtv++; // обработка результата тестирования // вычислим процент правильных ответов р = 100 * PravOtv / VsegoVopr; printf("ХпВаша оценка – "); if (p == 100) puts("ОТЛИЧНО!"); if (p >= 99 && р <= 80) puts("ХОРОШО."); if (р >= 60 && р <= 79) puts("УДОВЛЕТВОРИТЕЛЬНО." if (p < 60) puts("ПЛОХО!\п"); puts("\n Для завершения нажмите Enter"); getch(); }
Задача 245.
// Выводит имена всех файлов программ // предполагается, что первая строка // файла – комментарий, название программы #include <stdio.h> #include <dir.h> #include <string.h> #include <conio.h> // #define DEBUG // режим отладки //в качестве параметра программе передается // имя каталога, список файлов которого надо вывести void main(int argc, char *argv[]) { struct ffblk ffblk; // информация о файле int done; FILE *in; // файл программы int n; // обработано файлов char mask[MAXPATH]; char infilefMAXPATH]; char outfile[MAXPATH]; if (argc < 2) puts("B командной строке не задан путь"); puts("к обрабатываемым файлам"); printf("Командная строка: %s path\\\n", argv[0]); return; printf("\п Построение списка файлов\п") // маска обрабатываемых файлов strcpy(mask, argv[l]); strcat(mask,"*.cpp"); // файл-список обработанных файлов cpy(outfile, argv[l]); strcat(outfile,"filelist.txt"); printf("Обработка: %s", mask); n = 0; done = findfirst(mask, sffblk,0); while (!done) #ifdef DEBUG printf ("%s ", ffblk .ff__name); #endif strcpy(infile, argv[l]); strcat (infile, ffblk .f f__name); if ((in = fopen(infile, "rt"))!= NULL) ( // читаем из файла первую строку char st[80]; fgets(st, 80, in); printf("%s %s", infile, st); fclose(in); } done = findnext(Sffblk); // выбрать следующий файл } printf("\п Обработано файлов: %d\n", n); printf("Для завершения нажмите Enter"); getch();