return 30;
}
// Открываем файл для записи
if( ( f_out = fopen( argv [ 2 ], "w" ) ) == NULL )
{
printf( "\n Ошибка 40. Файл %s для записи не открыт \n", argv [ 2 ] );
return 40;
}
// Печатаем заголовок и аргументы функции
fprintf( f_out,
"\n Тереханов В. В., каф. ФПС, гр. 1/1 "
"\n Санкт-Петербургский государственный политехнический университет "
"\n (семестр 1, программный проект 2) \n"
"\n n "
"\n y := Сумма { ((-1)^(a+1)) /a } "
"\n a=1 \n"
"\n Аргументы суммы ряда: n = %u\n", n );
// Закрываем файл для записи
if( fclose ( f_out) == EOF )
{
printf( "\n Ошибка 50. Файла %s не закрыт \n", argv [ 2 ] );
return 50;
}
// Вычисляем значение суммы ряда
y = 0.0;
double signum = 1.0;
for( a = 1; a <= n; a++ )
{
y += signum / a;
signum =-signum;
}
// Открываем файл для дозаписи
if( ( f_out = fopen( argv [ 2 ], "a" ) ) == NULL )
{
printf( "\n Ошибка 60. Файла %s для дозаписи не открыт \n", argv [ 2 ] );
return 60;
}
Листинг 2.1. Окончание.
// Печатаем значение функции
fprintf( f_out, "\n Значение суммы ряда: y = %lg", y );
// Закрываем файл для записи
if( fclose( f_out ) == EOF )
{
printf( "\n Ошибка 70. Файла %s не закрыт \n", argv [ 2 ] );
return 70;
}
return 0;
}
3. Программа и методика испытаний
Цель примера:
Продемонстрировать ошибку, возникающую при введении неправильного количества аргументов.
Действия:
Вводим в командную строку (Проект -> Properties) лишний аргумент файл *.exe в среде программирования задан по умолчанию):
Листинг 3.1.
Project2.dat Project2.out
Результат:
Ошибка 05. Непредусмотренный формат командной строки. Для запуска программы используйте командную строку вида: Исполняемый_файл Файл_ввода Файл_вывода.
Цель примера:
Продемонстрировать ошибку, возникающую при неправильном указании файла с данными.
Действия:
Вводим в командную строку несуществующее имя файла с данными
Листинг 3.2.
Project2.dat Project2.out
Результат:
Ошибка 10. Файл данных Project2.dat для чтения не открыт.
Цель примера:
Продемонстрировать ошибку, возникающую при неверном содержании файла данных.
Действия:
Файл данных содержит буквы вместо цифр
Листинг 3.3.
abc
Результат:
Ошибка 20. Ошибка чтения из файла данных Project.out.
Цель примера:
Продемонстрировать ошибку, возникающую при невозможности закрыть файл.
Действия:
Файл данных пропал – был удален или произошли сбои в сети.
Файл данных уже закрыт, а программа пытается его закрыть снова.
Листинг 3.4.
// Закрываем файл для чтения
if( fclose(f_in ) == EOF )
{
printf( "\n Ошибка 30. Файл данных %s не закрыт.\n", argv[ 1 ] );
return 30;
}
// Снова закрываем файл для чтения…
if( fclose(f_in ) == EOF )
{
printf( "\n Ошибка 30. Файл данных %s не закрыт.\n", argv[ 1 ] );
return 30;
}
Результат:
Ошибка 30. Файл данных Project2.dat не закрыт.
Цель примера:
Продемонстрировать ошибку, возникающую, когда невозможно открыть файл для записи.
Действия:
Путь к файлу для записи ведет на несуществующий диск (в противном случае, если путь указан верно, а файл отсутствует, то файл с указанным именем будет создан автоматически).
Листинг 3.5.
Project2.dat E:\task02.out
Результат:
Ошибка 40. Файл результатов E:\Project2.out для записи не открыт
Цель примера:
Продемонстрировать правильную работу программного проекта.
Действия:
Файл данных приведен на листинге 3.6.
Листинг 3.6.
3
Результат:
Файл результатов приведен на листинге 3.7.
Листинг 3.7.
Тереханов В. В., каф. ФПС, гр. 1/1
Санкт-Петербургский государственный политехнический университет
(семестр 1, программный проект 2)
n
y := Сумма { ((-1)^(a+1))/a }
a=1
Аргументы суммы ряда: n = 3
Значение суммы ряда: y = 0.833333
Анализ результата:
y = 1 слагаемое + 2 слагаемое + 3 слагаемое
1 слагаемое = ( (-1) ^(1+1) ) /1 = 1
2 слагаемое = ( (-1) ^(2+1) ) /2 = -0.5
3 слагаемое = ( (-1) ^(3+1) ) /2 = 0.333333
y = 1 - 0.5 + 0.333333 = 0.833333
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.