Автор работы: Пользователь скрыл имя, 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);
}
//***********************