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

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

Задание 4.4. Сортировка элементов массива.

Найти сумму двух наибольших четных чисел массива

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

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

Шаг 2. Задать начальное значение двух максимумов: max1 = -32600 и max2 = -32600.

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

Шаг 4. Если Хi≥max1, тогда max1 = Xi и идем на шаг 5, если условие не выполняется, возвращаемся на шаг 3.

Шаг 5. Если Хi≥max2 и Хi≥max1, тогда max2 = Xi и идем на шаг 6, если условие не выполняется, возвращаемся на шаг 3.

Шаг 6. Складываем два найденных максимума.

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

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

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

#include<stdio.h>

#include<math.h>

#include<conio.h>

#define n 10

void main(){

clrscr();

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

printf("Введите значения элементов массива ");

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

clrscr();

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

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

printf("\n");

for(i=0,j=-1;i<n;i++)

if(a[i]%2==0) {j++;b[j]=a[i];}

int c;

if (j<2) printf("\nМассив не сформирован");

else

{ printf("\nНовый массив:\n");

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

printf("\n");

printf("\nОтсортированный массив :\n");

for(k=0;k<j+1;k++)

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

if(b[k]>b[i])

{c=b[k];

b[k]=b[i];

b[i]=c;

}

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

s=b[0]+b[1];

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

}

getch();

}

Задание 4.5. Решить текстовую задачу.

Дан массив A(N). Найти :

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

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

Шаг 2. Задать начальное значение двух максимумов: max=-32600 и min=32600.

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

Шаг 4. Если Хi≥max и i кратно 2, тогда max = Xi и идем на шаг 5, если условие не выполняется, возвращаемся на шаг 3.

Шаг 5. Если Хi≤min и i не кратно 2, тогда min = Xi и идем на шаг 6, если условие не выполняется, возвращаемся на шаг 3.

Шаг 6. Складываем два найденных значения.

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

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

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

#include<stdio.h>

#include<math.h>

#include<conio.h>

#define n 10

void main(){

clrscr();

float a[n],b[n];

int i,j;

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

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

clrscr();

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

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

printf("\n");

float max=a[1],min=a[i],s;

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

{

if(a[i]>=max && i%2==0) max=a[i];

if(a[i]<=min && i%2!=0) min=a[i];

}

printf("\nmax=%6.2f min=%6.2f",max,min);

s=max+min;

printf("\ns=%6.2f",s);

getch();

}

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

Тема: Обработка двумерных массивов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Задание 5.1. Селективная обработка массива

Найти сумму отрицательных чисел матрицы.

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

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

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

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

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

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

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

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

#include<stdio.h>

#include<math.h>

#include<conio.h>

#define n 4

#define m 3

void main(){

clrscr();

float a[n][m],s;

int i,j;

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

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

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

clrscr();

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

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

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

printf("\n");

}

printf("\n");

s=0;

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

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

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

printf("\ns=%6.2f ",s);

getch();

}

Задание 5.2. Обработка заданной строки (столбца) матрицы.

Найти сумму нечетных чисел третьей строки матрицы.

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

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

Шаг 2. Задать начальное значение суммы, и номер обрабатываемого столбца: s = 0, j = 3.

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

Шаг 4. Если Х[i,j] не кратно 2 (нечетно), тогда s = s + x[i,j], если условие не выполняется, возвращаемся на шаг 3.

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

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

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

#include<stdio.h>

#include<math.h>

#include<conio.h>

#define n 4

#define m 3

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");

s=0;

i=2;

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

if(a[i][j]%2!=0) s+=a[i][j];

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

getch();

}

Задание 5.3. Обработка заданной диагонали матрицы.

Вычислить произведение положительных чисел главной диагонали матрицы.

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

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

Шаг 2. Задать начальное значение произведения : р = 1.

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

Шаг 4. Если Х[i,j]>0 и номер строки равен номеру столбца, тогда р=р*x[i,j], если условие не выполняется, возвращаемся на шаг 3.

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

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

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

#include<stdio.h>

#include<math.h>

#include<conio.h>

#define n 4

#define m 4

void main(){

clrscr();

float a[n][m],p;

int i,j;

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

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

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

clrscr();

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

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

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

printf("\n");

}

printf("\n");

p=1;

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

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

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

printf("\np=%6.2f ",p);

getch();

}