Цель работы
Изучение правил составления и написания функций и интерфейса функционального модуляЛабораторное задание
Составить программу,
которая выполняет следующие действия:
а) ввод исходных массивов;
б) вывод исходных массивов;
в) обработку массивов в
соответствии с заданием;
г) вывод результатов с
соответствующими комментариями.
Пункты а), б), в), г) оформить в
виде функций. Глобальные данные в программе не использовать.
Выполнить программу и
оценить правильность ее работы.
В программе необходимо определить
указатели. Все обращения к элементам массивов (одномерных и двумерных)
производить с помощью указателей.
a). Задан
массив А(20). Определить знакопеременную сумму а1 – а2 + а3 – а4 + ….
б). Просуммировать элементы
матрицы Х(6,8), сумма индексов которых равна заданной константе К.
Описание метода решения задачи
Исходная
программа лабораторной работы разбивается на 7 функций:
1)Ввод массива а[20]
2)Ввод матрицы х[6][8]
3)Вывод массива а[20]
4)Вывод матрицы х[6][8]
5)Выполнение расчетов для массива а[20] и вывод результата
6)Выполнение расчетов для матрицы x[6][8] и вывод результата
7)Главная функция в которой реализуются предыдущие в
следующей последовательности: 1,3,5,2,4,6.
Листинг
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <locale>
void In(double a[20], int size)
{
int i;
for(i = 0; i < size; i++)
{
a[i] =rand()%(9999+9999)-9999;
a[i]=a[i]/100;
}
}
void In2(double x[6][8],int y,int z)
{
int i,j;
for(i=0; i<y; i++){
for(j=0; j<z; j++){
x[i][j]=rand()%(9999+9999)-9999;
x[i][j]=x[i][j]/100;
}
}
}
void Out(double a[20],int size)
{
for (int i = 0; i < size; i++)
printf ("A[%d]=%2.2f
\n",i,a[i]);
}
void Out2(double x[6][8],int y,int z)
{
printf ("\n");
for(int i=0; i<y; i++){
for(int j=0; j<z; j++){
printf("%7.2f",x[i][j]);
}
printf("\n");
}
}
void task(double a[20],int size)
{
double *pa=&a[0],s=0;
for (int i = 0; i < size; i++)
{
if (i % 2 == 0) s+= *pa;
else s-= *pa;
pa++;
}
printf("\nЗнакопеременная сумма элементов массива равна:
%3.2f\n", s);
}
void task2(double x[6][8], int y, int z)
{
double s1=0;
const unsigned k=3;
double *px=&x[0][0];
for(int i=0; i<y; i++)
{
for(int j=0; j<z; j++)
{
if ((i+j)==k) s1+=*px;
px++;
}
}
printf("\n сумма~%.2f",s1);
}
void main()
{
setlocale(LC_ALL,
"Russian");
double a[20],x[6][8];
In(a,20);
Out(a,20);
task(a,20);
In2(x,6,8);
Out2(x,6,8);
task2(x,6,8);
getch();
}
Пояснительный текст к программе
Переменные а[20],x[6][8] — это массив А и матрица Х заполняемые в ходе
программы.
Переменные i,j —
это переменные с помощью которых происходит обращение к элементам массивов.
Константа k
— сумма координат.
Указатели *pа
— на массив а, *px — на матрицу x,
Результаты работы программы
Расчет суммы вручную
S=- 99.58
– (84.68) + (-36.65) – (-34.97) + 91.70 - 57.25 + 14.79 – (-6.39) +
+(- 30.35) - (-55.33) + (-42.94) – (-18.52) + (-67.16) –
68.28 + (-0.38) –
- (-95.08) + (-70.04) – 19.43 + (-51.72) – (-45.63) = -266.05
S1=-98.46
– 45.52 -36.98+76.74=-104.22
Результат части А=-8359
Результат части Б=39069
Комментариев нет:
Отправить комментарий