Составление программы решения задачи

Выполним идентификацию всех переменных алгоритмов: вещественной переменной про, целой i и двух вещественных массивов:

· исходного С(7);

· расчетного П(7).

Идентификация переменных имеет вид табл. 1.

Таблица 1

Обозначение в алгоритме c1 c2 c3 ... c6 c7 про пi ci i
Обозначение в программе c[0] c[1] c[2] ... c[5] c[6] pro p[i] c[i] i

В соответствии с таблицей расположение элементов исходного массива в оперативной памяти представлено схемой:

  c[0] c[1] c[2] c[3] c[4] c[5] c[6]  
  c1 c2 c3 c4 c5 c6 c7  
  4 байта 4 байта 4 байта 4 байта 4 байта 4 байта 4 байта  

Для расчетного массива П(7) распределение оперативной памяти аналогично представленному для массива С.

Выполним программы с различными операторами цикла.

ü Внимание! Формирование начального значения параметра и логического выражения операторов цикла должно учитывать уменьшение индексов в С/С++ на единицу по отношению к указанным в алгоритме.

 

Программа по алгоритму цикла с предусловием

Вариант программы:

/* Программа с использованием цикла с предусловием */

#include <stdio.h> // директивы

#include <math.h> // препроцессора

void main() // заголовок главной функции

{

float c[7], p[7], pro; // описание вещественных массивов и

// переменной

int i; // описание целой переменной

scanf("%3f%4f%4f%4f%4f%4f%4f%4f",&pro,&c[0],&c[1],

&c[2],&c[3],&c[4],&c[5],&c[6]); // ввод переменных

fprintf(stdprn," pro=%8.2f\n\n", pro); // вывод переменной pro

i=0; // формирование начального значения параметра цикла

while( i < 7 ) // заголовок цикла

{

p[ i ] = ( c[ i ] * pro ) / 100.; // вычисление текущего

// значения функции

fprintf(stdprn," %8.2f %7.2f\n", c[ i ], p[ i ] );

i=i+1; // закон изменения параметра цикла

}

}

25.492.503.948.738.892.320.250. – значения вводимых переменных.

Программа по алгоритму цикла с постусловием

Вариант программы имеет вид

/* Программа с использованием цикла с постусловием */

#include <stdio.h> // директивы

#include <math.h> // препроцессора

void main() // заголовок главной функции

{

float c[7], p[7], pro; // описание вещественных массивов и

// переменной

int i; // описание целой переменной

scanf("%3f%4f%4f%4f%4f%4f%4f%4f",&pro,&c[0],&c[1],

&c[2],&c[3],&c[4],&c[5],&c[6]); // ввод переменных

fprintf(stdprn," pro=%8.2f\n\n", pro); // вывод переменной pro

i=0; // формирование начального значения параметра

// цикла

do // заголовок цикла

{

p[ i ] = ( c[ i ] * pro ) / 100.; // вычисление текущего

// значения функции

fprintf(stdprn," %8.2f %7.2f\n", c[ i ], p[ i ] );

i=i+1; // закон изменения параметра цикла

}while( i < 7 ); // условие повторения цикла

}

25.492.503.948.738.892.320.250. -значения вводимых переменных.

 

Программа по алгоритму цикла с параметром

Вариант программы имеет вид

/* Программа с использованием цикла с параметром */

#include <stdio.h> // директивы

#include <math.h> // препроцессора

#include <stdlib.h>

void main() // заголовок главной функции

{

float c[7], p[7], pro; // описание вещественных массивов и

// переменной

int i; // описание целой переменной

scanf("%3f%4f%4f%4f%4f%4f%4f%4f",&pro,&c[0],&c[1],

&c[2],&c[3],&c[4],&c[5],&c[6]); // ввод переменных

fprintf(stdprn," pro=%8.2f\n\n", pro); // вывод переменной pro

for( i=0 ; i < 7 ; i=i+1 ) // заголовок цикла

{

p[ i ] = ( c[ i ] * pro ) / 100.; // вычисление текущего

// значения функции

fprintf(stdprn," %8.2f %7.2f\n", c[ i ], p[ i ] );

}

}

25.492.503.948.738.892.320.250. - значения вводимых переменных.

 

Требования к отчету

Отчёт оформляется на листах формата А4, на титульном листе указывается название работы, дисциплина, студент, выполнив­ший работу и преподаватель, принявший отчет.

Отчёт должен включать в себя следующие пункты:

1. Постановка задачи (формулировка задания).

2. Математическую модель задачи.

3. Выбор метода решения.

4. Алгоритм решения

5. Таблицу обозначений используемых в программе переменных и констант

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

7. Распечатку результатов расчета

8. Анализ полученных результатов результатов. Cделать вывод о работоспособности программы

Варианты заданий

Таблица 2

№ п/п Содержание задания Примечание
Умножить матрицу M×N на столбец М и расположить полученный результат в порядке возрастания Распечатать исходные матрицы в столбец и результаты неотсортированные и отсортированные
Умножить каждый элемент матрицы mxn на столбец М= m×n. Вывести на печать матрицу, исходный и результирующий столбец в естественной форме.
Рассчитать значения Yi= sinXi + (cos Zi) при изменении Zi Zo до Zk с шагом DZ Xi Xo до Xk DX Распечатать значения Xi , Yi в виде таблицы.  
Перемножить матрицу Аij i=n, j=k на матрицу Вij (j=k , l=n ) Найти максимальный и минимальный элемент результирующей матрице. Исходные и конечные матрицы записать в нормальном виде.  
Дан двухмерный массив х (m×n) и у(n) получить двухмерный массив z каждый элемент которого равен соответственно элементу строки х умноженный на аналогичный элемент строки у. Найти максимальный элемент массива.   Все три массива распечатать в виде матрицы .
.Даны две матрицы А и В (m×n) . Получить матрицу С путём деления каждого элемента массива А на элемент массива В. Предусмотреть обход по делению на 0, не изменяя значение элемента А. Найти минимум и максимум . Элемент матрицы С. Все три матрицы распечатать в нормальном виде.
Получить элементы матрицы А (n×m) из элементов матрицы В (m×n) по формуле sin Bij + cos Bij. Найти макс. элемент матрицы А и В.   Распечатать матрицы А и В в нормальной форме
Перемножить матрицу А(n×m) и вектор, В(n), найти сумму элементов и максим. элемент результирующего столбца. Распечатать матрицу и вектор в естественном виде.  
Перемножить матрицу А(n×m) и матрицу В(m×n). Строки результирующей матрицы просуммировать и найти min сумму. Распечатать матрицы А и В в нормальной форме
Вывести на печать первый отрицательный элемент массива (А12,...,А50) и его порядковый номер, полагая, что в массиве есть хотя бы один отрицательный элемент  
Вывести на печать положительные элементы главной диагонали матрицы Х (n×n), полагая, что таковые имеются  
Вычислить сумму элементов массива (A1,A2,...,A78), стоящих на четных местах  
Вычислить среднее арифметическое элементов s массива (А12,...,А80) удовлетворяющих условию 1<=Аi<=2 . Если таких элементов нет, то считать s=0.    
Подсчитать количество положительных и количество отрицательных элементов массива (Х12,...,Х75).  
Для массива (А12,...,А80) вычислить наибольшее и наименьшее значение модуля разности между соседними элементами  
Найти наибольший элемент главной диагонали матрицы А(20×20) и вывести на печать всю строку в которой он находится.    
Упорядочить элементы массива (Х12,...,Х50), расположив их по убыванию в том же массиве  
Найти наибольшие элементы каждой строки матрицы Х(10×20) и записать их в массив Y.    
Найти среднее арифметическое положительных элементов каждого столбца матрицы Х(15×25) при условии что в каждом столбце есть хотя бы один положительный элемент.  
Вычислить суммы элементов каждой строки матрицы Х(20×20), определить наименьшее значение этих сумм и номер соответствующей строки.  
Определить количество положительных и отрицательных элементов матрицы А(10×15).  
Найти наибольший элемент матрицы А(20×30) и номер строки и столбца в которых он находится.  
Найти наименьший элемент матрицы Х(15×20) и записать нули в ту скобку и столбец, где он находится.  
Найти минимальные элементы каждой строки матрицы Х(20×20) и поместить их на главную диагональ, а диагональные элементы записать на место минимальных.  
Вычислить значение функции Z=(Ai+Bj)/Ck; Ai, Bi, Ci заданы массивами из 10, 8 и 5 элементов соответственно  

 

Вопросы для контроля

 

1. Какие процессы называются циклическими с табличным изменением аргумента?

2. Что такое массив, какими параметрами он характеризуется?

3. Что такое одномерный массив?

4. Чем отличаются многомерные массивы?

5. Что определяет размер массива?

6. Какие возможны способы реализации циклов?

7. Что должно быть выбрано в качестве параметра цикла с табличным изменением аргумента и почему?

8. Что такое описание массива?

9. Как в описателе универсально указать размер массива?

10. Как выглядит структура отдельного оператора описания одномерного массива?

11. Как обозначаются элементы массива в С/С++?

12. Как выглядит схема распределения памяти при хранении одномерных массивов?

13. Как определить адрес индексированной переменной?

14. Сколько последовательных байт необходимо для хранения целочисленного массива из 17 элементов?

 

 

Библиографический список

1. Шамис В.А. Borland C++ Builder. Программирование на С++ без проблем. М.:”Нолидж”, 1997 – 266 с.

2. Елманова Н.Э., Кошель С.П. Введение в Borland C++ Builder4 -М.: Диалог-МИФИ, 1999 - 352 с.

3. Архангельский А.Я. Программирование в Borland C++ Builder 4 - М.: ЗАО Издательство "БИНОМ", 1999 - 928 с.