Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
метода_С.doc
Скачиваний:
6
Добавлен:
18.11.2018
Размер:
416.77 Кб
Скачать

Задачи для самостоятельной работы № 4-а и 4-б Примеры решения задач

Задание 5.4-А. Селективная обработка строки (столбца) матрицы, удовлетворяющей заданному условию.

Вычислить сумму отрицательных чисел строки, у которой второй элемент четный.

Словесный алгоритм.

Шаг 1. Организовать ввод с клавиатуры заданной матрицы в виде вложенных циклов с параметром.

Шаг 2. Организовать цикл нахождения заданной строки.

Шаг 3. Если x[i,2] четный, тогда идем на шаг 4, иначе возвращаемся на шаг 2.

Шаг 4. Задать начальное значение суммы : s = 0.

Шаг 5. Организовать цикл с параметром для обработки массива

Шаг 6. Если Х[i,j]<0, тогда s=s+x[i,j], если условие не выполняется, возвращаемся на шаг 2.

Шаг 7. Выводим найденную сумму на экран.

Шаг 8. Остановить выполнение программы

Листинг программы.

#include<stdio.h>

#include<math.h>

#include<conio.h>

#define n 4

#define m 4

void main(){

clrscr();

int a[n][m],s,i,j;

printf("Введите значения элементов матрицы \n");

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

for(j=0;j<m;j++) scanf("%i",&a[i][j]);

clrscr();

printf("\nВведенный массив \n");

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

{ for(j=0;j<m;j++) printf(" %i ",a[i][j]);

printf("\n");

}

printf("\n");

int ks=0;

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

if(a[i][2]%2==0)

{ ks++;

s=0;

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

if(a[i][j]<0) s+=a[i][j];

printf("\ns[%i]=%i ",i,s);

}

if (ks==0) printf("\nСтрок, отвечающих условию в матрице нет");

getch();

}

Задание 5.4-Б. Селективная обработка строки (столбца) матрицы, удовлетворяющей заданному условию.

Вычислить произведение отрицательных чисел строки, у которой количество нечетных элементов четно.

Словесный алгоритм.

Шаг 1. Организовать ввод с клавиатуры заданной матрицы в виде вложенных циклов с параметром.

Шаг 2. Установить начальное значение счетчика строк, отвечающих условию ks=0;

Шаг 3. Организовать цикл нахождения заданной строки.

Шаг 4. Установить начальное значение счетчика нечетных элементов.

Шаг 5. Если x[i,j] нечетный, тогда значение счетчика увеличиваем на 1.

Шаг 6. Если после окончания цикла в строке значение счетчика k четно тогда идем на шаг 7, если нет, то возвращаемся на шаг 3.

Шаг 7. Увеличиваем значение счетчика ks на 1 и устанавливаем начальное значение произведения р=1.

Шаг 8. Организовать цикл с параметром для нахождения произведения.

Шаг 9. Если Х[i,j]<0, тогда р=р*x[i,j], если условие не выполняется, возвращаемся на шаг 8.

Шаг 10. Выводим найденное произведение на экран, если строки не окончены, то возвращаемся на шаг 3, в противном случае переходим на шаг 11.

Шаг 11. Если значение счетчика ks=0, тогда выводим сообщение о том, что строк отвечающих условию нет.

Шаг 12. Остановить выполнение программы

Листинг программы.

#include<stdio.h>

#include<math.h>

#include<conio.h>

#define n 4

#define m 4

void main(){

clrscr();

int a[n][m],p,k,i,j;

printf("Введите значения элементов матрицы \n");

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

for(j=0;j<m;j++) scanf("%i",&a[i][j]);

clrscr();

printf("\nВведенный массив \n");

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

{ for(j=0;j<m;j++) printf(" %i ",a[i][j]);

printf("\n");

}

printf("\n");

int ks=0;

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

{ k=0;

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

if(a[i][2]%2==0) k++;

if(k%2==0)

{ ks++;

p=1;

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

if(a[i][j]<0) p*=a[i][j];

printf("\np[%i]=%i ",i,p);

}

}

if (ks==0) printf("\nСтрок, отвечающих условию в матрице нет");

getch();

}

Практическая работа № 6

Тема: Использование подпрограмм для решения задач.

Цель: Закрепить на практике теоретические знания по использованию подпрограмм.

Порядок выполнения практической работы

  1. Изучите теоретический материал. [4, стр.132-144].

  2. Ознакомьтесь с примерами программ.

  3. Составьте алгоритм и программу по указанному варианту задания, используя «Сборник задач для практических работ».

  4. Отладьте программу и выполните расчеты на ПК.

  5. Оформите отчет о выполненной работе.

Содержание отчета

  1. Тема работы.

  2. Цель работы.

  3. Условия задач.

  4. Листинг программы.

  5. Решение задачи на ПК.

  6. Краткие выводы по работе.

Задачи для обязательного выполнения № 1 и 2.

Примеры решения задач.

Задание 6.1. Ввод, вывод исходных данных и их обработку в виде функций (процедур).

Вычислить количество четных элементов в массивах А, В, С.

Словесный алгоритм.

Шаг 1. Организовать ввод с клавиатуры заданных массивов в виде процедур.

Шаг 2. Организовать нахождение количества четных элементов в виде функций.

Шаг 3. Организовать вывод массивов в виде процедур.

Шаг 4. Выводим найденное значение на экран.

Шаг 5. Остановить выполнение программы

Листинг программы.

#include<stdio.h>

#include<math.h>

#include<conio.h>

int kol(const int* mas, const int n);

int const n=10;

void main(){

clrscr();

int a[n],b[n],c[n],k,i,j;

printf("\nВведите значения элементов матрицы A\n");

for(i=0;i<n;i++) scanf("%i",&a[i]);

printf("\nВведите значения элементов матрицы B\n");

for(i=0;i<n;i++) scanf("%i",&b[i]);

printf("\nВведите значения элементов матрицы C\n");

for(i=0;i<n;i++) scanf("%i",&c[i]);

clrscr();

printf("\nВведенный массив A\n");

for(i=0;i<n;i++) printf(" %i ",a[i]);

printf("\n");

printf("\nВведенный массив B\n");

for(i=0;i<n;i++) printf(" %i ",b[i]);

printf("\n");

printf("\nВведенный массив C\n");

for(i=0;i<n;i++) printf(" %i ",c[i]);

printf("\n");

k=kol(a,n)+kol(b,n)+kol(c,n);

printf("\nk=%i",k);

getch();

}

int kol(const int* mas, const int n){

int kl=0;

for(int i=0;i<n;i++)

if(mas[i]%2==0) kl++;

return kl;

}

Задание 6.2. Даны массивы X(8), Y(8), Z(10), W(15), элементы которых определяются по формулам:

; ;

; .

Подсчитать общее количество положительных элементов массивов X, Y, W.

2

10

4

6

5

12

Словесный алгоритм.

Шаг 1. Организовать ввод и нахождение количества положительных элементов в виде функции.

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

Шаг 3. Выводим найденное значение на экран.

Шаг 4. Остановить выполнение программы

Листинг программы.

#include<stdio.h>

#include<math.h>

#include<conio.h>

int kol(float* mas, int z);

int const n=8;

void main(){

clrscr();

float x[n],y[n],w[n];

int i,j,k,kx,ky,kw;

int a1=2,a2=10,b1=4,b2=6,d1=5,d2=12;

printf("\nМассив X\n");

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

{x[i]=a1*pow(i,2)-a2*(5-i);

printf(" %6.2f ",x[i]);

}

printf("\n");

printf("\nМассив Y\n");

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

{y[i]=b1*sin(2*i)+b2*exp(i-5);

printf(" %6.2f ",y[i]);

}

printf("\n");

printf("\nМассив W\n");

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

{w[i]=d1*abs(0.1*i)+d2*pow(cos(i-2.5),3);

printf(" %6.2f ",w[i]);

printf("\n");

k=kol(x,n)+kol(y,n)+kol(w,n);

printf("\nk=%i",k);

getch();

}

int kol(float* mas, int z)

{

int kl=0;

for(int i=0;i<n;i++)

if(mas[i]>0) kl++;

return kl;

}