Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория по языку СИ.doc
Скачиваний:
27
Добавлен:
03.03.2016
Размер:
1.93 Mб
Скачать

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

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

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

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

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

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

б) ax если 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();

}

Результаты:

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.