Автор работы: Пользователь скрыл имя, 05 Декабря 2010 в 09:49, Не определен
зачетная работа
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РФ
Государственное образовательное учреждение
высшего профессионального образования
ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Факультет прикладной математики и телекоммуникаций
КАФЕДРА 
РЭС 
 
 
 
 
 
 
 
 
Отчёт по дисциплине «Информатика»
Индивидуальное задание № 205
ТПЖА.12120-01 
90 01-1 
 
 
 
 
 
 
 
 
 
 
 
 
 
Разработал: студент гр. ПС-11 ____________ /Скопина К.Э./
                              
Проверил: ст. преподаватель ____________ /Наумович Т.В./
                              
 
                              
      
 
 
Киров 2008 
 
СОДЕРЖАНИЕ
1.Текст 
задания……………………………………………………………
2 
Спецификация программы……………………
3 
Текст программы………………………………………
4 
Схемы алгоритмов……………………………………
5 
Реализация программы…………………………
 
Даны натуральное число N, действительные числа а[1], ... ,а[n]. Получить максимальный элемент (а[1], ... ,а[n]). Вычислить:
Данная задача может быть сформулирована, как последовательность действий:
Программу разработать, используя динамическое распределение памяти для хранения исходной матрицы.
Предусмотреть вывод на экран матрицы, значение максимального элемента, значение функции F, а также проверку данных на соответствие диапазону, предусматриваемому для данного типа данных.
Входные данные:
N может принимать значения от 1 до 100.
а[N] может принимать значения от -3,4*e38 до 3,4*e38.
Выходные данные:
Размерность массива N = 7
Заданный массив:
5 -3 2 18 8 7 -14
Результат: Max=18 F=671
 
При запуске программы пользователю предлагается ввести числа 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 | Значение функции(см.текст задания) | 
 
#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---------------
                 printf("\
printf("\n a[1], ... , a[n]. Poluchit' max (a[1],...,a[n]) ");
                 printf("\n   
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                    
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\
           printf("%5.2f",s[
           printf("\n\
printf("\n F = " );
           printf("%20.6lg",F)
 
}
void massiv()
{int n=0,i=0,j=0;
double *s;
     s=(double*)realloc(0,
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[%
}
func1(n,s);
}
     //***********************