Реферат

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

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

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

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

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

от 25%

Подписываем

договор

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

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





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

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

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

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

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

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

Индивидуальное задание № 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. Реферат Основные экономические индексы
2. Реферат на тему Grapesofwrath Essay Research Paper The Grapes of
3. Контрольная работа Столыпинская аграрная реформа и её значение
4. Сочинение Значення п`єси Миколи Куліша Мина Мазайло вчора і сьогодні
5. Диплом Экономическое обоснование мероприятий по снижению себестоимости грузовых перевозок
6. Кодекс и Законы Монетизация льгот предоставляемых гражданам Российской Федерации
7. Реферат на тему Новоапостольская Церковь
8. Реферат Административное правонарушение. Административная ответственность
9. Реферат Сырьевые и материальные ресурсы промышленности и повышение эффективности их использования
10. Реферат Таможенные тарифы и пошлины