Иллюстрированный самоучитель по С++ для начинающих

Решения (задачи 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();
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.