Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
attachments_05-09-2012_18-55-54 / ТРЕНИНГ УМЕНИЙ.doc
Скачиваний:
10
Добавлен:
09.04.2015
Размер:
118.78 Кб
Скачать

3.Пример выполнения упражнения тренинга на умение 3 Задание

Для заданного массива действительных чисел Z(10), используемых для научных расчетов с точностью до 7 значащих десятичных цифр, составить программу, вычисляющую разницу между максимальным и минимальным элементом массива. На экран выдать исходный массив в «столбик», затем в одну строку выдать максимальный элемент, минимальный и разницу между ними.

  1. Дано: вещественный вектор Z(N), N =10 Определить: Maxz = max Z(i) i i = 1,...N Minz = min Z(i) i i = 1,...N Delta = Maxz – Minz

  2. Разработаем алгоритм, реализующий представленные в пункте 1 формулы. Первый этап детализации: Начало установить начальные значения для Maxz и Minz цикл по i от 0 до N-1 вычислить Maxz вычислить Minz конец-цикла по i Delta = Maxz – Minz Второй этап детализации: Начало Maxz = Z[0] Minz =Z[0] цикл по i от 1 до N-1 Если Z[i] > Maxz то Maxz = Z[i] конец-если Если Z[i] <Minz Minz = Z[i] конец - если конец-цикла по i Delta = Maxz – Minz

  3. Объявим массив и определим исходные значения его элементов: float Z[N]; int i; for ( i = 0; i < N; i ++) { printf (“Z[%d] = ”, i); scanf ( “%f”, &Z[i]); }

  4. Напишем операторы, реализующие алгоритм обработки: float Maxz, Minz, Delta; Maxz = Minz = Z[0]; for ( i = 1; i < N; i ++) { if (Z[i] > Maxz) Maxz = Z[i]; if (Z[i] < Minz) Minz = Z[i]; } Delta = Maxz – Minz;

  5. Напишем операторы вывода информации: for ( i = 0; i < N; i ++) printf (“Z[%d] = %f\n”, i, Z[i]); printf (“Maxz = %f Minz = %f Delta = %f \n”, Maxz, Minz, Delta);

  6. Окончательно оформляем программу:

# include <conio.h> # include <stdio.h> # define N 10

void main ( ) { float Z[N];

float Maxz, Minz, Delta;

int i; clrscr();

for ( i = 0; i < N; i ++) { printf (“Z[%d] = ”, i); scanf ( “%f”, &Z[i]); } Maxz = Minz = Z[0]; for ( i = 1; i < N; i ++) { if (Z[i] > Maxz) Maxz = Z[i]; if (Z[i] < Minz) Minz = Z[i]; } Delta = Maxz – Minz;

for ( i = 0; i < N; i ++) printf (“Z[%d] = %f\n”, i, Z[i]); printf (“Maxz = %f Minz = %f Delta = %f \n”, Maxz, Minz, Delta); getch ( ); }

4.Пример выполнения упражнения тренинга на умение 4 Задание

Для заданной вещественной матрицы, состоящей из 4 строк и 5 столбцов получить вектор, каждый элемент которого равен разности максимального и минимального элемента в соответствующей строке матрицы. Точность обработки данных – 7 десятичных цифр.

  1. Дано: вещественная матрицаХ(N, M),N = 1,..4; M = 1,.. 5. Определить: Y(i) = max X[i][j] – min X[i][j] j j i = 1,..N; j = 1,..M.

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

Начало цикл по i от 1 до N-1 Maxz = X[i][0] Minz =X[i][0] цикл по j от 1 до M-1 Если X[i][j] > Maxz то Maxz = X[i][j]

конец-если Если X[i][j] < Maxz то Minz = X[i][j] конец - если конец-цикла по j Y[i] = Maxz – Minz

конец цикла по i

  1. Объявим вспомогательные переменные, массивы и определим исходные значения заданного массива: int i,j; float Y[N], X[N][M]; clrscr (); for (i=0; i < N; i++ ) for ( j = 0; j< M; j++) { printf (“X[%d][%d] = ”);scanf (“%f”, & X[i][j]); }

  2. Напишем операторы, реализующие алгоритм обработки массиваfor (i=0; i < N; i++ ) { Maxz = X[i][0]; Minz =X[i][0]; for ( j = 0; j< M; j++){ if (X[i][j] > Maxz) Maxz = X[i][j]; if (X[i][j] < Minz) Minz = X[i][j]; } Y[i] = MaxzMinz; }

  3. Напишем операторы, выдающие исходные данные и результат в требуемом видеprintf (“ исходный массив \n”); for (i=0; i < N; i++ ) { for ( j = 0; j< M; j++)printf ( “%7.2f ”, X[i][j]); printf (“\n”); } printf (“РЕЗУЛЬТАТ \n”); for (i=0; i < N; i++ ) printf ( “Y[%d] = %7.2f ”, i,Y[i]);

Окончательно программа имеет вид:

# include < stdio.h> # include <conio.h> # define N 4 # define M 5 void main ( ) { float Y[N], X[N][M]; int i,j; float Y[N], X[N][M]; clrscr (); for (i=0; i < N; i++ ) for ( j = 0; j< M; j++) { printf (“X[%d][%d] = ”); scanf (“%f”, & X[i][j]); } for (i=0; i < N; i++ ) { Maxz = X[i][0]; Minz =X[i][0]; for ( j = 0; j< M; j++) { if (X[i][j] > Maxz) Maxz = X[i][j]; if (X[i][j] < Maxz) Maxz = X[i][j]; } Y[i] = Maxz – Minz; } printf (“ исходный массив \n”); for (i=0; i < N; i++ ) { for ( j = 0; j< M; j++) printf ( “%7.2f ”, X[i][j]); printf (“\n”); } printf (“РЕЗУЛЬТАТ \n”); for (i=0; i < N; i++ ) printf ( “Y[%d] = %7.2f \n ”, i,Y[i]);

getch (); }

Соседние файлы в папке attachments_05-09-2012_18-55-54