Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ СИ. Лабораторный практикум доцента кафедры «Системы управления и компьютерные технологии» Пановой Т.В..doc
Скачиваний:
106
Добавлен:
26.03.2015
Размер:
585.22 Кб
Скачать

III. Практическая часть.

1. Выполнение общего задания.

Разобрать задачи.

Задача 1

1. Постановка задачи: разработать алгоритм ввода двумерного массива целых чисел, содержащего n строк и m столбцов, создания одномерного массива из m элементов, значение которых получить из суммы значений элементов каждого столбца введенного двумерного массива, и вывода полученного массива. Написать программу, реализующую разработанный алгоритм.

2. Математическая модель и описательный алгоритм.

Входной массив a размерностьюn=3,m=4:

5 3 0 1

1 0 2 5

3 1 -2 2

Сумма элементов по столбцам: 5+1+3=9, 3+0+1=4, 0+2-2=0, 1+5+2=8; выходной массив b:9 4 0 8

  • В цикле с постусловием n≤0 или n>c1 или m≤0 или m>c2, где с1 и c2 – константы, ввести переменные размерности двумерного массива 0<nc1, 0<mc2;

  • p1=&b[0]; p2=p0=&a[0][0]; в цикле с параметром 0≤i<nm (nm – количество элементов в двумерном массиве) ввести значения элементов массива по адресу p2, p2=p2+1;

  • p2=p0, i=0; в цикле с предусловием i<nm вывести значения элементов массива *p2, p2=p2+1, i=i+1;

  • во внешнем цикле с параметром 0≤j<m для назначения номера столбца каждый раз обнулять переменную s (s=0) для формирования суммы элементов текущего столбца и устанавливать указатель на начало текущего столбца: p2=p0+j;

  • во вложенном цикле с параметром 0≤i<n для назначения номера строки к содержимому переменной s прибавлять значение текущего элемента назначенного столбца (s=s+*(p2+im));

  • после окончания вложенного цикла формировать одномерный массив, т.е. каждому элементу массива присваивать вычисленное значение переменной s (*p1=s); p1++;

  • после завершения цикла p1=p1-m; i=0; в цикле с предусловием i<m вывести значения элементов массива *p1, p1=p1+1, i=i+1.

3. Блок-схема алгоритма:

4. Текст программы:

#include <stdio.h>

#include <conio.h>

#define c1 3

#define c2 4

int main()

{

int a[c1][c2],b[c2],i,j,s,*p0,*p1,*p2,n,m;

do

{

printf(“\nInput n,m: “);

scanf(“%d%d”,&n,&m);

}

while (n<=0 || n>c1 || m<=0 || m>c2);

p1=&b[0];

p2=p0=&a[0][0];

printf("\nInput elements of matrics:\n");

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

{

scanf("%d",p2);

p2++;

}

p2=p0;

i=0;

printf(“\nOutput matrics:\n”);

while (i<n*m)

{

printf(“%d ”,*p2);

if ((i+1)%m==0) // для вывод двумерного массива в виде матрицы

printf(“\n”);

p2++;

i++;

}

for(j=0;j<m;j++)

{

p2=p0+j;

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

s+=*(p2+i*m);

*p1=s;

p1++;

}

i=0;

p1-=m;

printf(“\nOutput massiv:\n”);

while (i<m)

{

printf(“%d ”,*p1);

p1++;

i++;

}

getch();

return 0;

}

5. Тестирование:

Теоретически рассчитанное выходное значение

Практически полученное выходное значение

Тест: входной массив: n=3, m=4; a[n][m]:

5 3 0 1

1 0 2 5

3 1 -2 2

выходной массив b[m]:

9 4 0 8

выходной массив b[m]:

9 4 0 8

Задача 2

1. Постановка задачи: разработать алгоритм ввода двумерного массива целых чисел, содержащего n строк и m столбцов, получения суммы и вывода полученного значения. Написать программу, реализующую разработанный алгоритм.

Соседние файлы в предмете Программирование