Примеры организации вычислительного процесса

Организация разветвляющегося вычислительного процесса

Постановка задачи

1. Исходные данные: a,b,c.

2. Математическая модель:

3.Выводимые данные: x, y

4. Аномалии: а) bc ≠ 0, если a<bc; b) ax ≠ 0, если -2 ≤ x ≤ 2

.


Блок-схема алгоритма


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

#include <stdio.h>

#include<math.h>

main()

{

int a,b,c;

float x,y;

clrscr();

printf ("Vvedite A,B i C cherez probel:");

scanf("%d%d%d",&a,&b,&c);

if(a>=b*c)

x=sqrt(a-b*c);

else

if(b*c!=0)

{x=(float)a/(b*c); }

else

{printf("\nResheniya net!");

exit(1);

}

printf("\nX=%10.4f",x);

if(x>=-2)

y=x*(a+b+c);

else

if(x>=2)

y=log(x)-b;

else

if(x!=0 && a!=0)

y=(a*a+b*c)/(a*x);

else

{printf("\nResheniya net!");

exit(1);

}

printf("\nY=%10.4f",y);

getch(); }
5.2. Организация циклов с известным числом повторений»

Постановка задачи

1. Исходные данные:a,b, xn, xk, dx.

2. Математическая модель:

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

3. Аномалии: а) (xk-xn)/dx≤0;

б) a≠x если x>0;

в) x≠0;

г) b-3.7x>0.

4.Выводимые данные:


Блок-схема

       
   
 
 


-
x=x+dx

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

#include <stdio.h>

#include<math.h>

#include <conio.h>

main()

{

float a,b,xn,xk,dx;

float x,y,S=0,P=1;

int k=0,f=0;

clrscr();

/*Kontrol vhodnih dannih */

do

{printf("\nVvedite xn,xk,dx ==> ");

scanf("%f%f%f",&xn,&xk,&dx);

}

while((xk-xn)/dx<=0);

printf("\nVvedite a,b==> ");

scanf("%f%f",&a,&b);

x=xn;

printf("\n==================================");

printf("\n| X | Y |");

printf("\n==================================");

while(x<=xk+dx/2)

{

if(x>0)

if(a!=x)

{

y=(a+x)/(a-x)+exp(-x);f=0;}

else

f=1;

else

if(x!=0)

{if(b-3.7*x>0)

{y=cos(x+log(fabs(x)))/sqrt(b-3.7*x);f=0;}

else

f=1;

}

else

f=1;

if (f==0)

{

printf("\n| %10.2f | %10.7f |",x,y);

if(y>0)

{S+=y;k++;}

else

if(y<0)

P*=y;

}

else

printf("\n| %10.4f | R/N |",x);

x+=dx;

}

printf("\n==================================");

printf("\n\nS= %.2f",S);

printf("\n\nP= %.2f",P);

printf("\n\nK= %d",k);

getch();

}

Результаты:

 
 

5.3. Обработки одномерного массива


Постановка задачи

1. Исходные данные: массив A(n)

2. Математическая модель:

SA=

Определить максимальный элемент массива (max) А и его номер (nom).

3.Выводимые данные: max, nom, SA.

4. Аномалии: нет.


Блок-схема


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

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

main()

{

int a[100],i,n,max;

int nom,sum=0;

float sa;

clrscr();

printf("\nVvedite kol-vo elementov massiva A ot 1 do 100 = ");

scanf("%d",&n);

printf("\n Massiv A:");

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

{

a[i]=random(100)-50;

printf("\n a[%d]=%d",i+1,a[i]);

sum+=a[i];

}

sa=(float)sum/n;

max=a[0];nom=0;

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

if (max<=a[i])

{

max=a[i];

nom=i;

}

printf("\n\nMaxim-i element = %d",max);

printf("\nNomer max-go elementa = %d",nom+1);

printf("\nSrednee arifmeticheskoe SA=%5.2f",sa);

getch();}


Результаты


5.4.Обработки одномерного массива с перестановкой элементов

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

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

#include <stdio.h>;

#include <stdlib.h>;

#include <conio.h>

#define N 100

main()

{

int a[N],i,j,k=0,n,l,r;

clrscr();

do

{

printf("Vvedite kol-vo elementov massiva N < 100 = ");

scanf("%d",&n);

}

while (n<2||n>100);

printf("\nVvedite elementi: ");

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

{printf("\n a[%d]=",i);

scanf("%d",&r);

a[i]=r;

}

clrscr();

printf("\nIshodnii massiv:\n\n");

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

{

printf(" a[%d]=%d",i,a[i]);

}

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

if(a[i]==0)

{k++;r=a[i];

for(j=i;j>k-1;j--)

a[j]=a[j-1];

a[k-1]= r;

}

for (i = k; i < n-1; i++)

{

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

if (a[j] < a[l]) l = j;

r = a[i], a[i] = a[l], a[l] = r;

}

i=k;

while (a[i]<0)

i++;

k=i-1;

for (i = k+1; i < n-1; i++)

{

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

if (a[j] > a[l]) l = j;

r = a[i], a[i] = a[l], a[l] = r;

}

printf("\nPreobr massiv:\n\n");

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

{

printf(" a[%d]=%d",i,a[i]);

}

getch();

}

Результаты:

Обработка матрицы.

В квадратной матрице порядка n поменять местами столбец с номером K и строку с номером L

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

#include <stdio.h>

#include <conio.h>

#define N 5

main()

{

/* ===============ishodnie dannie ========= */

int k,l; /* nomer stolbca i nomer stroki */

int n; /* poryadok */

float a[N][N]; /* matrica */

/* ====== ======= promezhutochnie dannie ==== */

int i,j; /* indeksi */

int error; /* kod oshibki */

float r; /* rabochaya peremennaya dlya perestanovki */

/* ============== proverka ogranichenii */

clrscr();

do

{

printf("Vvedite poryadok matrici:\n");

error=0;

scanf("%d",&n);

if (n<=1 || n>N)

{printf("Oshibka! Povtorite vvod! \n");

error=1;

}

}

while (error);

do

{

printf("Vvedite nomer stolbca i nomer stroki dlya zameni:\n");

error=0;

scanf("%d %d",&k,&l);

if (k<1 || k>n || l<1 ||l>n)

{printf(" Oshibka! Povtorite vvod!\n");

error=1;

}

}

while (error);

/* ========== Vvod matrici =========== */

printf("Vvedite elementi matrici po strokam:\n");

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

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

{ printf("\na[%d,%d]=",i+1,j+1);

scanf("%f",&r);

a[i][j]=r;

}

/* ============Vivod ishodnoi matrici ===== */

printf("Ishodnaia matrica A:\n");

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

{for(j=0;j<n;j++)

printf("a[%d,%d]=%f;",i+1,j+1,a[i][j]);

printf("\n");

}

/* ========== Preobrazovanie matrici ====== */

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

if (i!=l-1 && i!=k-1)

{

r=a[i][k-1];

a[i][k-1]=a[l-1][i];

a[l-1][i]=r;

}

r=a[l-1][l-1];

a[l-1][l-1]=a[k-1][k-1];

a[k-1][k-1]=r;

/* ============Vivod rezultatov ===== */

printf("Preobrazovannaya matrica A:\n");

/* ====== Vivod po strokam ========== */

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

{for(j=0;j<n;j++)

printf("a[%d,%d]=%f;",i+1,j+1,a[i][j]);

printf("\n");

}

getch();

}


Литература

1. Алексеев Е.Р., Чеснокова О.В. Турбо Паскаль 7.0. Самоучитель. - М.: НТ-Пресс, 2004. – 320с.

2. Касаткин А.И., Вальвачев А.Н. Профессиональное программирование на языке Си: От Турбо Си к Borland С++. – Минск: Вышэйшая школа, 1992. – 240с.

3. Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб.: Питер, 2003. – 461с.

4. Паппас К., Мюррей У. Программирование на С и С++. - К.: BHV, 2000. – 320c.

5. Уэйт М., Прата С., Мартин Д. Язык Си. Руководство для начинающих. – М.: Мир, 1988. -512с.

6. Шмидский Я. К. Программирование на языке С/С++. Самоучитель. – М.: Вильямс, 2004. -352с.


Приложение 1.Пример оформления титульного листа пояснительной записки

ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра ВМиП

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КОНТРОЛЬНОЙ РАБОТЕ

ПО ДИСЦИПЛИНЕ

«ВВЕДЕНИЕ В ИНФОРМАТИКУ»:

«Основы алгоритмизации и программирования на языке СИ»

Выполнил ст. гр. ЭСИС-2015з-уск

Петров Н. Н.

Зачетная книжка №

Преподаватель

Донецк 2015


Приложение 2. Пример оформления рецензии

ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра ВМиП

РЕЦЕНЗИЯ

НА КОНТРОЛЬНУЮ РАБОТУ

ПО ДИСЦИПЛИНЕ

«ВВЕДЕНИЕ В ИНФОРМАТИКУ»:

«Основы алгоритмизации и программирования на языке СИ»

Выполнил ст. гр. ЭСИС-2015з-уск

Петров Н. Н.

Зачетная книжка №

РЕЦЕНЗЕНТ ______________________________


[1] Текстовые файлы, в которых содержится описание используемых в программе элементов.

[2] Служат для уточнения внутреннего представления и диапазона значений стандартных типов

[3] Поток – виртуальный канал связи, создаваемый в программе для передачи данных

[4] Синтаксической ошибки нет. Операция присваивания a=1 формирует результат, который и оценивается на равенство или неравенство нулю. В данном примере присваивание b=0 будет выполнено независимо от значения переменной a.

[5] Обычно применение оператора goto приводит к усложнению программы и затрудняет отладку. Он нарушает принцип структурного программирования, согласно которому все блоки, составляющие программу, должны иметь только один вход и один выход. В большинстве алгоритмов применения этого оператора можно избежать


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: