Реферат

Реферат Спецификация программы

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 23.11.2024





ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РФ

Государственное образовательное учреждение

высшего профессионального образования

ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Факультет прикладной математики и телекоммуникаций

КАФЕДРА РЭС
Отчёт по дисциплине «Информатика»

Индивидуальное задание № 205

ТПЖА.12120-01 90 01-1
Разработал:                   студент гр. ПС-11  ____________  /Скопина К.Э./

                                                                  (подпись)

Проверил:            ст. преподаватель  ____________  /Наумович Т.В./

                                                                  (подпись)


                                                      Дата: «___»  _____________

    
Киров 2008
СОДЕРЖАНИЕ

1.Текст задания………………………………………………………………….3

2 Спецификация программы………………………………………….............4

3 Текст программы………………………………………………………..........5

4 Схемы алгоритмов……………………………………………………............9

5 Реализация программы……………………………………………………..17

1 Текст задания


Даны натуральное число  N, действительные числа а[1], ... ,а[n]. Получить максимальный элемент (а[1], ... ,а[n]). Вычислить:

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

1.                  Ввести в компьютер, например, с экрана дисплея числовые значения N, равное количеству элементов одномерного массива;

2.                  ввести в компьютер с экрана дисплея числовые значения элементов массива a[1], a[2]…a[n];

3.                  найти максимальный элемент среди элементов массива;

4.                  вывести обозначение максимального число max с его числовым значениям;

5.                  посчитать значение выражения F по формуле;

6.                  вывести обозначение выражения F с его числовым значением;

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

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

Входные данные:

N может принимать значения от 1 до 100.

а[N] может принимать значения от -3,4*e38 до 3,4*e38.

Выходные данные:

Размерность массива N = 7

Заданный массив:

5          -3         2          18        8          7          -14

Результат: Max=18              
F=671


2 Спецификация программы


При запуске программы пользователю предлагается ввести числа N – размерность массива и числа a1, … , an  – элементы массива a[n]. В программе ввода числа предусмотрен контроль от ввода некорректных данных. Далее предусмотрен эхо-контроль (печать введенного числа). Далее программа производит выводит сформированный массив. Затем выполняет поиск максимального элемента массива, и выводит на экран значение этого элемента, затем происходит вычисление функции  и выводит ее значение на экран.

После получения результата работы программы пользователю выдается сообщение: «Для продолжения нажмите клавишу 'Y'». Если пользователь желает продолжить работу необходимо нажать клавишу ‘Y’ и выполнение программы начнется заново. Прервать работу программы можно нажав клавишу ‘ESC’.

Конструктивно программа выполнена в виде четырех вызываемых функций и одной основной функции main(), которая осуществляет управление вызываемыми функциями и поддерживает диалог с пользователем.

Вызываемые функции:

int int_shild();                             Функция защиты от некорректного

ввода

double protect(double maxnum,double minnum);  Функция защиты от некорректного

 ввода

void func1(int n, double *s);               Функция выполнения условия задачи

void massiv();                                                              Функция ввода массива

            Входные данные программы приведены в таблице 1.

Выходные данные программы приведены в таблице 2.

Таблица 1-Входные данные

const int N=100;

double *a;

int n,F=0,nmax=0;

char ch;

тип

Идентификатор

Диапазон

назначение

unsigned char

ch

0 255

Ответ на запрос продолжения программы

unsigned int

N

0 … 100

Размерность массива

double

a[n]

-3.4*e38 … 3.4*e38

Элементы массива



Таблица 2-Выходные данные



тип

Идентификатор

Диапазон

назначение

unsigned int

a[nmax]

-3.4*e38 … 3.4*e38

Максимальный элемент массива

unsigned int

F

0 … 3.4*e38

Значение функции(см.текст задания)


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




#include "stdafx.h"

#include <stdio.h>

#include <math.h>

#include <conio.h>

#include <stdlib.h>

#include <iostream>

#include <windows.h>

#include <float.h>

using namespace std;

int int_shild();

double protect(double maxnum,double minnum);

void func1(int n, double *s);

void massiv();

 char buf[1024];

char * r(char * txt)

{

 CharToOemA(txt, buf);

 return buf;

}

int main()

{

  char ch;

printf("\n---------------------ZADANIE -------------------------\n");

                        printf("\nDany natural'noe chislo N, deystvitel'nye chisla");

                        printf("\n a[1], ... , a[n]. Poluchit' max (a[1],...,a[n]) ");

                        printf("\n          Vi4islit' (a[1]^2+...+a[n]^2)");

                        printf("\n");

                        printf("------------------------------------------------------");

printf(r("\nНажмите любую клавишу...\n"));

_getch();

  do

{
massiv();

printf ("\n");

printf (r("Хотите: Y-продолжить ; N-завершить???"));

            do

            {

            ch=_getch();

            if( (ch=='y')||(ch=='n') )

            printf("%c\n",ch);

            }

            while (ch!='y' && ch!='Y' && ch!='n' && ch!='N');

            }

            while (ch!='n' && ch!='N');
  printf("\n");

  printf("                       <<<Rabota programmy zavershena>>>");

  printf("\n-------------------------------------------------------");

  printf("\n                Rabotu vypolnila studentka gruppy PS-11");

  printf("\n                                       Skopina Kristina");

  printf("\n");

  printf(r("\nНажмите любую клавишу...\n"));

_getch();

            return 0;

}

//******************************************************************

//функция матрицы
//******************************************************************

void func1(int n, double *s)

{int nmax=0;

double F=0;

           

            for (int i = 0; i <n; i++)                                                                        //нахождение максимального элемента

            {

                        if ((s[i]) > (s[nmax])) s[nmax]= s[i];                                                                                       

                                                                                 

                        F+=(s[i] * s[i]);                                                                                              //функция

                       

            }

            printf("\n\nznachenie max elementa = ");

            printf("%5.2f",s[nmax]);

            printf("\n\nvi4islenie zna4enija funkcii");

            printf("\n F = " );

            printf("%20.6lg",F);

           

           

}

void massiv()

{int n=0,i=0,j=0;

double *s;

s=(double*)realloc(0,sizeof(double*)*n);

printf(r("\nВведите размерность массива(от 0 до 100): "));

n=int_shild();

printf(r("\nВведите значения массива(от %lg до %lg :\n"),DBL_MIN, DBL_MAX );  //Ввод матрицы

            for ( i=0; i<n; i++)

                         

            {printf("a[%d]= ",i);

                    s[i]=protect(DBL_MAX,DBL_MIN);

                    printf("\n");}

                                  
printf(r("\nИсходный массив:\n"));
            for(i=0;i<n;i++)

                        {printf("a[%d]=%5.3lg\t",i,s[i]);//Вывод матрицы

                }

            func1(n,s);

}

//*****************************************************************

int int_shild()

{

char a[2]={0},x=0;

int q=0, i=0;

do {

   x=_getch();

   if (x>=48 && x<=57 && i<2)

     {printf ("%c",x);

      a[i]=x;

      i++;}

   if (x==8 && i>0)

     {printf ("%c %c",8,8);

      i--;

      a[i]=0;}

   q=atoi (a);

 }while (x!=13 || q==0 || i==0);

   return q;

}
//******************************************************************

//******************************************************************

//Функция защиты действительных чисел

//******************************************************************

double protect(double maxnum,double minnum)

{const int max=17;

int g=0, // флажек точки

    k=0,// флажек "е"

    m=0, // счетчик знаков до запятой

    i=0,t; // счетчик знаков

char a[max]={0}, //числовой массив на 13  символов

           x=0; // вводимое значение строки

double q=0; // переменная , отвечающая за выводимый результат

do {

   t=i-1;

   x=_getch();

   if (x>=48 && x<=57 && i<max && m<8) //если ввeдены числа

      {printf ("%c",x);

       a[i]=x;

       m++;i++;}
   if (x==8 && i>0) // если нажата <BACKSPACE>

     {

                         printf ("%c %c",8,8);

                m--; i--;

      if (a[i]=='.') {g=0;m=i;}

              if (a[i]=='e') {k=0;t--;}

      a[i]=0;

   }
   if (x==46 && i<max && g==0) // если нажата точка

    {printf ("%c",x);

    a[i]=x;

    i++; m=0;g=1;}
   if (x==45 && i==0) // если нажата клавиша "-"

      {printf ("%c",x);

       a[i]=x;

       ++m;++i;}

   if (x==45 && a[t]=='e')

      {

       printf ("%c",x);

       a[i]=x;

               i++;m++;

       }
  if (x==101 && i>0 && i<max-1 && k==0  )//если нажата "е"

  { 

            printf("%c",x);

            a[i]=x;

            m++; i++; k=1;

           

            }

}
  while (x!=13 || i==0); // делать пока не нажата клавиша <ENTER>

   q=atof (a);//преобразуем массив строк в числовое значение

   if(fabs(q)<minnum || fabs(q)>maxnum)

   {  a[i]='\0';

               for (int j=i;j>0;j--)   

              { printf("\b \b");}

                        return protect(maxnum,minnum);// возвращаем прверку на условие вновь, если число выходит за рамки границ

   }

   else

   return q; //возвращаем значение

}

4 Схемы алгоритмов








                                                                                                   




Блок-схема: знак завершения: Конец функции main ()

Рисунок 1 - Схема функции main( )


Рисунок 1 - Схема функции main ()


 






                                                                   





Блок-схема: знак завершения: конец функции massiv()
Рисунок 2 - Схема функции massiv( )




         




Блок-схема: знак завершения: конец функции func1
Рисунок 3 - Схема функции  void func1(int n, double *s)


Блок-схема: знак завершения: int_shild()




Блок-схема: знак завершения: конец функции int_shild()
Рисунок 4 - Схема функции  int_shild()




Блок-схема: знак завершения: double protect(double maxnum,double minnum)















Блок-схема: знак завершения: конец функции double protect
Рисунок 5 - Схема функции  double protect(double maxnum,double minnum)




5 Реализация программы


Результат работы программы представлен на рисунке 6:

Рисунок 6 – Результат работы программы

1. Реферат на тему Adam Smith And Classical Economics Essay Research
2. Реферат Теорії наркозу Види наркозів
3. Реферат на тему The Value Of Sex Essay Research Paper
4. Диплом Организация связей с общественностью на примере ЗАО ТВН Новокузнецк
5. Диплом на тему Материальная ответственность работника
6. Реферат на тему Job Cement Masons Essay Research Paper THE
7. Реферат Вред алкоголя и табакокурения
8. Реферат Проективные тесты 2
9. Реферат Уровень ликвидности инвестиций
10. Реферат Половые отклонения