H25 (Все лабы по инфе за 2ой сем на С++)
Описание файла
Файл "H25" внутри архива находится в следующих папках: Все лабы по инфе за 2ой сем на С++, Инфа - бесценно, homework. Документ из архива "Все лабы по инфе за 2ой сем на С++", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "H25"
Текст из документа "H25"
Московский Государственный Технический Университет
имени Н.Э.Баумана
Домашняя работа
по теме
«Программирование
на языке высокого уровня»
Вариант H25
Выполнил:
Студент РК6-33
Морев М. В.
Проверила:
Волосатова Т.М.
Москва 2006г.
Техническое задание
Введение
Разработать программу для поиска в любом заданном диапазоне натуральных чисел всех чисел, значения которых совпадают с младшими десятичными разрядами своих квадратов. Верхняя и нижняя границы заданного диапазона поиска должны передаваться программе через аргументы командной строки ее вызова. Результат поиска должен содержать записи обнаруженных чисел и их квадратов, которые должны отображаться через поток стандартного вывода (stdout).
Основания для разработки
«Учебный план» - документ, на основании которого ведется разработка.
Кафедра РК6 - организация, утвердившая этот документ.
Назначение разработки
Программа предназначена для нахождения чисел, значения которых совпадают с младшими десятичными разрядами своих квадратов.
Требования к программе или программному изделию
-
Требования к функциональным характеристикам
Исходные данные передаются программе через аргументы командной строки.
-
Требования к надежности
Программа должна быть устойчива к вводу некорректных данных. Корректный выход из программы должен осуществляться после выполнения соответствующего вычисления.
-
Условия эксплуатации
Без ограничений.
-
Требования к составу и параметрам технических средств
IBM совместимый персональный компьютер.
-
Требования к информационной и программной совместимости
Программа предназначена для работы в ОС Linux и ОС Windows с использованием командной строки.
-
Требования к маркировке и упаковке
Без ограничений.
-
Требования к транспортированию и хранению
Транспортировка и хранение осуществляется на любых известных носителях надлежащего качества.
-
Специальные требования
Программа должна быть совместима с ОС Windows на уровне исходного кода.
Требования к программной документации
Основной программной документацией является «Текст программы»
Технико-экономические показатели
Программа способна эффективно функционировать на любых персональных компьютерах, ноутбуках и серверах с процессором не ниже i386, кроме того не требует от пользователей дополнительных усилий по её освоению, что даёт возможность её широкого применения на предприятиях и частными лицами.
Стадии и этапы разработки
-
Предпроектное иследование. Изучая широко известные программные продукты, было выявлено отсутствие аналогичных программ, способных реализовать поставленную задачу.
-
Экскизное и техническое проектирование. Написание программы велось на языке высокого уровня С, с учетом всех требований структурного программирования.
-
Изготовление опытного образца производилось в среде разработки OS SuSE Linux 10 с использованием GCC компилятора.
-
Испытание опытного образца выявило отсутствие ошибок и утечек системных ресурсов.
Порядок контроля и приёмки
Программа должна пройти испытания на устойчивость работы и правильность получаемых результатов при вводе пользователем любых данных.
Правила ввода данных:
Данные вводятся через аргументы командной строки. Должны быть введены любые два числа, разделенные пробелом.
Результатом работы программы является нахождения чисел, значения которых совпадают с младшими десятичными разрядами своих квадратов, и вывод числа и его квадрата через поток стандартного вывода.
Описание алгоритма.
Полученные через аргументы командной строки данные переводятся функцией atoll в числа формата long long int, и проверяются на допустимость. При некорректных данных с помощью функции errormes выводится сообщение об ошибке. Далее динамически выделяется память под два символьных массива, используемых для хранения строковых представлений числа и его квадрата. Затем следует основной цикл, в котором с помощью функции sprintf числа переводятся в строковое представление. Устанавливается указатель на младшие цифры квадрата числа, и функцией strcmp сравниваются младшая часть квадрата числа и число (в строковом представлении), если они равны, то выводим число и его квадрат.
Список литературы.
-
Волосатова Т.М., Лекции “Программирование на языке высокого уровня С”. МГТУ 2006г.
-
Б. Керниган, Д. Ритчи “Язык программирования С”
Текст программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
int errormes(int);
int main(int argc, char *argv[])
{
long long min, max, i;
char *bufsqr, *bufcur, *pstr, flag;
if (argc != 3) return errormes(1);
min = atoll(argv[1]);
max = atoll(argv[2]);
if (min < 0 || max < min) return errormes(2);
if (max > LONG_LONG_MAX / 2) return errormes(3);
bufsqr = calloc(25, sizeof(char));
bufcur = calloc(25, sizeof(char));
flag = 0;
for (i = min; i <= max; i++)
{
sprintf(bufsqr, "%lld", i * i);
sprintf(bufcur, "%lld", i);
pstr = bufsqr + strlen(bufsqr) - strlen(bufcur);
if (!strcmp(pstr, bufcur))
{
flag |= 1;
fprintf(stdout, "\n\tЧисло: %5s, квадрат: %s", bufcur, bufsqr);
}
}
if (!flag) fprintf(stdout, "\nЧисел не найдено.");
fputc('\n', stdout);
free(bufsqr);
free(bufcur);
return 0;
}
int errormes(int kod)
{
if (kod == 1)
fprintf(stderr, "\nНеобходимо указать два числа "
"в командной строке!\n");
if (kod == 2)
fprintf(stderr, "\nЧисла должны быть больше нуля, "
"и первое, больше второго!\n");
if (kod == 3)
fprintf(stderr, "\nСлишком большое число, дальнейшие "
"вычисления приведут к переполнению!\n");
return -1;
}
4