Особенности программирования линейных алгоритмов
Программирование линейных алгоритмов: графическая схема и составление программы. Табулирование функций, отладка программы. Работа с одно- и двухмерными массивами: вычисление сумм, количеств и произведений элементов массива, в строках и столбцах матрицы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 30.11.2010 |
Размер файла | 503,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
18
19
1. ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ
Составить графическую схему алгоритма и программу для вычисления функции b=f(x,y,z). Исходные данные для отладки программы подобрать самостоятельно.
4 |
Решение
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
18
19
Таблица соответствия.
Переменные в задаче |
Имя на языке Си |
Тип |
Комментарий |
|
b |
b |
float |
Результат |
|
x |
x |
float |
Исходное данное |
|
y |
y |
float |
Исходное данное |
|
z |
z |
float |
Исходное данное |
/ * Вычисление линейной программы * /
# include <stdio.h>
# include <math.h>
void main ( )
{
float x, y, z, b; //Описание переменных
printf (“ введите x, y, z \ n”); // Вывод сообщения
scanf (“%f %f %f”, &x, &y, &z); // Ввод исх. данных
printf (“исходные данные: \ n x=%7.1f y=%7.2f z=%7.1f \ n”, x, y, z); // Вывод исх. данных
b= sqrt(x+sqrt (sqrt (fabs(y)))) + cos (z)*cos (z); // Вычисление значения b
printf (“результаты: \ n b=%7.5f \ n”, b);// Вывод результата
} //Конец программы
2. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ
Составить графическую схему алгоритма и написать программу вычисления функции y=f(x) в соответствии с видом функции, приведенном в табл.2.1. В программе предусмотреть вывод:
- значения аргумента функции x;
- вычисленного значения функции y;
- номер формулы, по которой производилось вычисление функции (1, 2 или 3).
Исходные данные для отладки программы выбрать самостоятельно. Предусмотреть отладку программы для каждого интервала изменения функции и для каждой точки ветвления функции.
4 |
Решение
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
18
19
Таблица соответствия.
Переменные в задаче |
Имя на языке Си |
Тип |
Комментарий |
|
x |
x |
float |
Исходное данное |
|
y |
y |
float |
Результат |
|
- |
t |
int |
Вспомогательная, номер формулы |
/*Пример разветвляющейся программы*/
# include <stdio.h>
# include <math.h>
void main ( )
{
float x, y; //Описание переменных
int t;
puts (“ введите число x”); // Вывод сообщения
scanf (“%f”, &x); // Ввод исх. данных
printf (“x=%f”, x); // Вывод исх. данных
if (x>5 && x!= 20) //Начало цикла
{
y=x*x*x;
t=1;
}
else
if (x>=-5 && x<=5)
{
y=x*x;
t=2;
}
else
{
y=log10 (fabs(x));
t=3;
} //Конец цикла
printf(“y=%f (формула%d) \ n”, y, t); // Вывод результата
} //Конец программы
Тесты
1) x= -6; y= lg|6|=0,778; t=3;
2) x= -5; y=25; t=2;
3) x=1; y=1; t=2;
4) x=5; y=25; t=2;
5) x=10; y=1000; t=1;
6) x=20; y=lg|20|=1,301; t=3;
7) x=25; y=15625; t=1.
3. ТАБУЛИРОВАНИЕ ФУНКЦИЙ
В соответствии с видом функции, приведенном в таблице 3.1, вычислить значения функции y=f(x) для значений аргумента x, изменяющегося в интервале от xнач до xкон с шагом ?x.
Исходные данные для отладки программы (xнач, xкон, ?x), выбрать самостоятельно. Результаты (значения аргумента x, функции y, номер формулы) оформить в виде таблицы, строки таблицы пронумеровать. В заголовке таблицы вывести исходные данные. Задание выполнить в 2-х вариантах с использованием операторов цикла while и for.
4 |
Решение
Таблица соответствия.
Переменные в задаче |
Имя на языке Си |
Тип |
Комментарий |
|
Xн |
Xn |
float |
Левая граница интервала |
|
Xк |
Xk |
float |
Правая граница интервала |
|
?X |
h |
float |
Шаг табулирования |
|
Y |
y |
float |
Значение функции |
|
X |
x |
float |
Аргумент функции |
|
- |
m |
int |
Номер формулы |
|
- |
N |
int |
Табличная нумерация |
/*Табулирование функции*/
# include <stdio.h>
# include <conio.h>
# include <math.h>
void main ( )
{
float Xn, Xk, h, x, y; //Описание переменных
int m, N;
clrscr ( );
puts ( “ Введите начальное значение интервала”); // Ввод исх. данных
scanf(“%f”, &Xn);
puts (“ Введите конечное значение интервала”);
scanf(“%f”, &Xk);
puts (“ Введите шаг табулирования”);
scanf(“%f”, &h);
puts (“----T-----T-----T---¬”); //Формирование шапки таблицы
puts (“¦ N ¦ x ¦ y ¦ m ¦”);
puts (“+---+-----+-----+---+”);
x=Xn; // Расчёт таблицы функции
N=0;
while(x<=Xk)
{
N=N+1;
if (x>1 && x<=5) //Начало цикла
{
y= atan(0.2*x)*atan(0.2*x);
m=1;
}
else
if (x>5)
{
y= exp(-x)+log10(2*x);
m=2
}
else
{
y= (x*x+1);
m=3;
}
printf(“¦ %1d ¦ %3f ¦ %3f ¦ %1d ¦ \n”, N, x, y, m);
x=x+h;
} //Конец цикла
puts ( “L---+-----+-----+----”);
} //Конец программы
Тесты:
----T-----T-----T---¬
¦ N ¦ x ¦ y ¦ m ¦
+---+-----+-----+---+
¦ 1 ¦ -1 ¦ 2 ¦ 3 ¦
¦ 2 ¦ 1 ¦ 2 ¦ 3 ¦
¦ 3 ¦ 3 ¦ 0,29¦ 1 ¦
¦ 4 ¦ 5 ¦ 0,61¦ 1 ¦
¦ 5 ¦ 6 ¦ 1,08¦ 2 ¦
L---+-----+-----+----
4. РАБОТА С ОДНОМЕРНЫМИ МАССИВАМИ
4.1 Вычисление сумм, количеств и произведений элементов массива
В каждой из задач данного раздела (таблица 4.1) предполагается, что задан массив чисел. Программа должна:
1) вводить размерность и элементы массива;
2) вводить некоторые дополнительные числа;
3) выполнять действия в соответствии с условием задачи;
4) выводить исходные данные и результаты вычислений.
Исходные данные для отладки программы выбрать самостоятельно. Массив объявить как статический.
4 |
Найти количество чисел, меньших заданного X, и произведение всех отрицательных чисел, стоящих на нечетных местах. |
Решение
Таблица соответствия.
Переменные в задаче |
Имя на языке Си |
Тип |
Комментарий |
|
P |
P |
float |
Произведение отрицательных чисел |
|
A |
A |
float |
Одномерный статический массив |
|
X |
x |
float |
Заданное число |
|
- |
n |
int |
Количество элементов массива |
|
k |
k |
int |
Количество чисел меньших X |
|
- |
k1 |
int |
Количество отрицательных чисел |
|
- |
i |
int |
Номер элемента массива; параметр цикла |
/*Вычисление одномерного статического массива*/
# include <stdio.h>
# include <math.h>
void main ( )
{
float P, A[10],x; //Описание переменных
int i,k1,k,n;
puts (“ Введите число x”); // Вывод сообщения
scanf (“%f”, &x); // Ввод исх. данных
puts (“ Введите число элементов массива А”);// Ввод n и массива
scanf (“%d”, &n);
for (i=0, i<n, i++)
{
printf(“Введите число A[%d]=”, i);
scanf(%f”, &A[i]);
}
puts(“Массив А”); // Вывод массива
for (i=0, i<n, i++)
printf(“%.2f “, A[i]);
printf(“\n”);
printf(“x=%.3f \n”, x); // Вывод x
k=0;
for (i=0, i<n, i++)
if (A[i]<x) k=k+1;
printf(“k=%d \n” ,k);
P=1;
k1=0;
for (i=1, i<n, i=i+2)
if (A[i]<0)
{
P=P*A[i];
k1=k1+1;
}
if (k1==0)
printf(“В массиве на нечётных местах нет отрицательных чисел \n”);
else
printf(“P=%f \n” ,P);
}
Тесты:
1) A= [3; 6; 10; 7; -3; -7; -5; 17; 6; 10], X=10;
P= 15, k=7.
2) A= [3; 1; 0; 7; 9; 17; 9; 2; 75; 8], X=0;
k=0, « В массиве на нечетных местах нет отрицательных чисел»
3) A= [-2; -6; -1; 0; -7; -4; -2; -3; -1; -75], X=3;
P=-28, k=10.
4.2 Вычисление сумм, количеств и произведений элементов массива
В каждой из задач данного раздела (таблица 4.2) предполагается, что задан массив чисел. Программа должна:
1) вводить размерность и элементы массива;
2) вводить некоторые дополнительные числа;
3) выполнять действия в соответствии с условием задачи;
4) выводить исходные данные и результаты вычислений.
Исходные данные для отладки программы выбрать самостоятельно. Массив объявить как динамический.
4. |
Найти максимальный элемент, расположенный между первым и последним нулевыми элементами массива. |
Решение
Таблица соответствия.
Переменные в задаче |
Имя на языке Си |
Тип |
Комментарий |
|
max |
max |
float |
Максимальное число |
|
A |
A |
float |
Одномерный динамический массив |
|
- |
n |
int |
Количество элементов |
|
- |
t1 |
int |
Искомое первое число |
|
- |
t2 |
int |
Искомое второе число |
|
- |
i |
int |
Номер строки; параметр цикла |
|
- |
k |
Int |
Количество нулей |
/*Вычисление одномерного динамического массива*/
# include <stdio.h>
# include <math.h>
void main ( )
{
float max;
int i,t1,t2,n, k;
puts(“Введите число элементов массива А”);
scanf (“%d”, &n);
float*A= new float[n];
k=0;
i=0;
while( i< n & A[i]!=0) k=k+1, i=i+1;
if(k=0);
printf(“В массиве нет нулей \n”);
else
{
if(k=1);
printf(“В массиве один нуль \n”);
else
{
t1= i+1;
}
}
i= n-1;
while( i>=0 & A[i]!=0) i=i-1
t2= i-1;
if(t1=t2);
printf(“Два нуля стоят рядом \n”);
else
{
max=A[t1];
for(i=t1+1; i<t2; t++)
if(A[i]<max) max=A[i];
}
printf(“%d %d %f \n”, t1, t2, max);
delete[] A; // освобождение динамической памяти
}
Тесты:
1) A= [ -3; 15; 6; 0; -2; 13; -21; 17; -9; 11; 0; 7; 3];
t1= -2; t2=11; max=17.
2) A= [-3; 15; 0; 12; 0; 6; 0; -3; 0; 6; 7];
t1=12; t2=-3; max=12.
3) A= [2; 7; 8; 9; -3; -4; 6; 7; 1; 57; 9];
“В массиве нет нулей”
4) A= [2; 3; 67; 12; -6; -4; -98; 0; 98; 6];
“В массиве один нуль”
5) A= [7; -9; -65; 9; 54; 0; 0; 87; -8; -3];
“Два нуля стоят рядом”
5. РАБОТА С ДВУМЕРНЫМИ МАССИВАМИ
5.1 Вычисление сумм, произведений и количеств элементов матрицы
В каждой из задач данного раздела (таблица 5.1) предполагается, что задана матрица размером NхM. Программа должна:
1) вводить размерность и элементы матрицы;
2) вводить некоторые дополнительные числа;
3) выполнять действия в соответствии с условием задачи;
4) выводить исходные данные и результаты вычислений.
Исходные данные для отладки программы выбрать самостоятельно. Массив объявить как статический.
4 |
Определить количество элементов, больших заданного А и расположенных в строках с нечетными номерами. |
Решение
Таблица соответствия.
Переменные в задаче |
Имя на языке Си |
Тип |
Комментарий |
|
K |
K |
int |
Искомое количество элементов |
|
B |
B |
float |
Двумерный статический массив |
|
A |
A |
float |
Заданное число |
|
- |
i |
int |
Номер строки |
|
- |
j |
int |
Номер столбца |
/*Вычисление двумерного статического массива*/
# include <stdio.h>
# include <math.h>
void main ( )
{
int i, j, m, n, K;
float A; //Описание переменных
printf (“ Введите число строк и столбцов”); // Вывод сообщения
scanf (“%d %d”, &n, &m);
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
printf(“Введите B[%d, %d]=”, I, j);
scanf(“%f”, &B[i] [j]);
}
puts (“ введите число A”);
scanf (“%f”, &A);
K=0;
for ( i=1; i<n; i=i+2)
for ( j=0; j<m; j++)
if( B[i]>A) K=K+1;
printf(“%f \n”, K);
}
Тесты:
-3; 8; -2; 10; 7; 82; -4
1) В= -9; 0; -3; 85; 3; 40; -9 ; A= 4; K=7.
-1; 8; 7; -95; 4; -5; 67
-4; -7; 8; 9; 2; -8; -5
2) B= -2; 10; 0; 9; -8; 7; -5 ; A=10; K=0.
-7; 6; -9; 7; 0; -3; 7
5.2 Выполнение вычислений в строках и столбцах матрицы
линейный алгоритм программирование массив
В каждой из задач данного раздела (таблица 5.2) предполагается, что задана матрица размером NхM. Программа должна:
1) вводить размерность и элементы матрицы;
2) вводить некоторые дополнительные числа;
3) выполнять действия в соответствии с условием задачи;
4) выводить исходные данные и результаты вычислений.
Исходные данные для отладки программы выбрать самостоятельно. Массив объявить как динамический.
4 |
Определить количество строк матрицы, в которых суммы всех элементов отрицательные. |
Решение
Таблица соответствия.
Переменные в задаче |
Имя на языке Си |
Тип |
Комментарий |
|
S |
S |
float |
Сумма элементов i-той строки |
|
A |
A |
float |
Двумерный динамический массив |
|
K |
K |
float |
Количество искомых строк |
|
- |
n |
int |
Количество всех строк в матрице |
|
- |
m |
int |
Количество столбцов |
|
- |
i |
int |
Номер строки |
|
- |
j |
int |
Номер столбца |
/*Вычисление двумерного динамического массива*/
# include <stdio.h>
# include <math.h>
void main ( )
{
int i, j, m, n;
float K, S; //Описание переменных
puts (“ введите n, m”); // Вывод сообщения
scanf (“%d %d”, &n, &m); // Ввод исх. данных
float**A=new float*[n];
for(i=0; i<n; i++)
A[i]=new float[m];
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
printf(“Введите A[%d; %d]=”, i, j);
scanf(“%f”, &A[i] [j]);
}
K=0;
for(i=0; i<n; i++)
{
S=0;
for(j=0; j<m; j++)
S=S+A[i] [j];
If(S<0) K=K+1;
}
printf(“%f \n”, K);
for(i>0; i<n; i++)//Освобождение динамической памяти
delete[]A[i]
delete[]A;
}
Размещено на http://www.allbest.ru
Подобные документы
Исследование особенностей разработки линейных алгоритмов и их реализации в среде Delphi. Составление тестов для проверки программы. Характеристика основных элементов интерфейса, компонентов, значения их свойств. Построение графической схемы алгоритма.
лабораторная работа [316,6 K], добавлен 08.11.2012Составление программы разветвляющейся структуры для вычисления заданной функции. Нахождение произведения чётных и нечётных первых чисел натурального ряда. Приёмы программирования обработки одномерных массивов. Расчет суммы положительных элементов массива.
контрольная работа [1,3 M], добавлен 20.12.2012Реализация линейных списков в языке программирования C++. Основные операции при работе с ними. Разработка интерфейса и алгоритмов. Описание работы программы на псевдокоде. Составление программного кода. Тестирование, отладка и результат работы программы.
курсовая работа [1,1 M], добавлен 07.01.2014Составление алгоритма программы, позволяющей получить изображение флага Норвегии. Программирование вычислительного процесса линейной и разветвляющейся структур: вычисление площади треугольника по формуле Герона, табулирование функции, работа с массивами.
лабораторная работа [50,4 K], добавлен 28.12.2011Работа с одномерными и двухмерными массивами: составление функций нахождения заданных элементов, их количества и суммы под и над главной диагональю, поиск среднего арифметического. Составление блок-схемы, написание текста программы, его тестирование.
контрольная работа [52,0 K], добавлен 27.12.2010Основные типы циклов программирования. Методы применения специальных функций break, continue и цикла while. Обработка массивов информации. Условия применения циклических алгоритмов на языке программирования С++. Инициализация одномерного массива.
курсовая работа [1,7 M], добавлен 06.01.2014Приемы работы с инструментальной средой программирования С++. Кодирование арифметических и логических выражений с использованием стандартных библиотечных функций ввода, вывода в С++. Описание переменной вещественного типа в языке программирования С++.
лабораторная работа [137,9 K], добавлен 13.06.2014Разработка простейших линейных алгоритмов (составление логических выражений), программ с ветвлениями, циклических программ и составление их блок-схем. Практическое выполнение обработки массивов на примере вычисления элементов квадратной матрицы.
контрольная работа [173,3 K], добавлен 01.03.2010Изучение принципов построения линейных алгоритмов и простых расчетных программ на языке программирования C. Разработка программы расчета математических выражений на основе вводимых данных. Создание консольных приложений в среде Microsoft Visual Studio.
лабораторная работа [254,4 K], добавлен 23.11.2014Использование нестандартных функций и подпрограмм (процедур) для составления алгоритмов вычислений. Программы для вычисления значение корней нелинейного уравнения по методу половинного деления. Составление алгоритма операций над матрицами и интегралами.
курсовая работа [580,0 K], добавлен 23.08.2015