Все лабы по инфе за 2ой сем на С++ (H25)

Посмотреть архив целиком

Московский Государственный Технический Университет

имени Н.Э.Баумана











Домашняя работа

по теме

«Программирование

на языке высокого уровня»



Вариант H25








Выполнил:

Студент РК6-33

Морев М. В.



Проверила:

Волосатова Т.М.








Москва 2006г.



Техническое задание


Введение


Разработать программу для поиска в любом заданном диапазоне натуральных чисел всех чисел, значения которых совпадают с младшими десятичными разрядами своих квадратов. Верхняя и нижняя границы заданного диапазона поиска должны передаваться программе через аргументы командной строки ее вызова. Результат поиска должен содержать записи обнаруженных чисел и их квадратов, которые должны отображаться через поток стандартного вывода (stdout).


Основания для разработки


«Учебный план» - документ, на основании которого ведется разработка.

Кафедра РК6 - организация, утвердившая этот документ.


Назначение разработки


Программа предназначена для нахождения чисел, значения которых совпадают с младшими десятичными разрядами своих квадратов.


Требования к программе или программному изделию


  1. Требования к функциональным характеристикам

Исходные данные передаются программе через аргументы командной строки.

  1. Требования к надежности

Программа должна быть устойчива к вводу некорректных данных. Корректный выход из программы должен осуществляться после выполнения соответствующего вычисления.

  1. Условия эксплуатации

Без ограничений.

  1. Требования к составу и параметрам технических средств

IBM совместимый персональный компьютер.

  1. Требования к информационной и программной совместимости

Программа предназначена для работы в ОС Linux и ОС Windows с использованием командной строки.

  1. Требования к маркировке и упаковке

Без ограничений.

  1. Требования к транспортированию и хранению

Транспортировка и хранение осуществляется на любых известных носителях надлежащего качества.

  1. Специальные требования

Программа должна быть совместима с ОС Windows на уровне исходного кода.


Требования к программной документации

Основной программной документацией является «Текст программы»






Технико-экономические показатели

Программа способна эффективно функционировать на любых персональных компьютерах, ноутбуках и серверах с процессором не ниже i386, кроме того не требует от пользователей дополнительных усилий по её освоению, что даёт возможность её широкого применения на предприятиях и частными лицами.


Стадии и этапы разработки


  1. Предпроектное иследование. Изучая широко известные программные продукты, было выявлено отсутствие аналогичных программ, способных реализовать поставленную задачу.

  2. Экскизное и техническое проектирование. Написание программы велось на языке высокого уровня С, с учетом всех требований структурного программирования.

  3. Изготовление опытного образца производилось в среде разработки OS SuSE Linux 10 с использованием GCC компилятора.

  4. Испытание опытного образца выявило отсутствие ошибок и утечек системных ресурсов.



Порядок контроля и приёмки



Программа должна пройти испытания на устойчивость работы и правильность получаемых результатов при вводе пользователем любых данных.

Правила ввода данных:

Данные вводятся через аргументы командной строки. Должны быть введены любые два числа, разделенные пробелом.


Результатом работы программы является нахождения чисел, значения которых совпадают с младшими десятичными разрядами своих квадратов, и вывод числа и его квадрата через поток стандартного вывода.



Описание алгоритма.


Полученные через аргументы командной строки данные переводятся функцией atoll в числа формата long long int, и проверяются на допустимость. При некорректных данных с помощью функции errormes выводится сообщение об ошибке. Далее динамически выделяется память под два символьных массива, используемых для хранения строковых представлений числа и его квадрата. Затем следует основной цикл, в котором с помощью функции sprintf числа переводятся в строковое представление. Устанавливается указатель на младшие цифры квадрата числа, и функцией strcmp сравниваются младшая часть квадрата числа и число (в строковом представлении), если они равны, то выводим число и его квадрат.



Список литературы.


  1. Волосатова Т.М., Лекции “Программирование на языке высокого уровня С”. МГТУ 2006г.

  2. Б. Керниган, Д. Ритчи “Язык программирования С”


Текст программы


#include

#include

#include

#include


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




Случайные файлы

Файл
130285.rtf
16339-1.rtf
18068-1.rtf
POLITICS.DOC
42130.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.