Отчет о лабораторной работе №1 Барнаул 2011 Лабораторная №1 Вариант 6 Задача - polpoz.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Отчет о лабораторной работе №1 Барнаул 2011 Лабораторная №1 Вариант 6 Задача - страница №1/1

Алтайский государственный университет

Математический факультет

Кафедра информатики

Курс «Языки программирования»


Никеев Сергей Сергеевич
414 группа

Линейный вычислительный процесс


Отчет о лабораторной работе №1

Барнаул 2011



Лабораторная №1

Вариант 6

Задача


Определить площадь треугольника по заданной стороне и углам


Исходный код


#include

#include

#include

void main() {

double a,A,B,C;//Углы и сторона треугольника

double S;//Площадь треугольника

const double pi=3.1415926535897932384626433832795;//ввели число пи максимально точное, до первого нуля

SetConsoleOutputCP(1251);

printf("Введите через пробел сторону, потом угол А, угол В и угол С");

scanf("%lf%lf%lf%lf",&a,&A,&B,&C);

S=(pow(a,2)*sin(B*pi/180)*sin(C*pi/180))/(2*sin(A*pi/180));

printf("Площадь треугольника равна %5.5lf",S);

getchar(),getchar();

}

Тесты

Тест 1



Тест 2




Вариант 31

Задача


Найти угол, выраженный в радианах и градусах между векторами A(xa, ya, za) и B(xb, yb, zb).

Исходный код


#include

#include

#include

void main() {

double xa,ya,za,xb,yb,zb;//Координаты векторов А и В

double d,rad,grad;//Найдём сначала косинус альфа (d), потом сам альфа:сначала в радианах (rad), потом в градусах(grad)

const double pi=3.1415926535897932384626433832795;//ввели число пи максимально точное, до первого нуля

SetConsoleOutputCP(1251);

printf("Введите через пробел координаты вектора А сначала х потом y потом z, потом координаты вектора В аналогично");

scanf("%lf%lf%lf%lf%lf%lf",&xa,&ya,&za,&xb,&yb,&zb);

d=(xa*xb+ya*yb+za*zb)/((sqrt(xa*xa+ya*ya+za*za))*(sqrt(xb*xb+yb*yb+zb*zb)));

rad=acos(d);

grad=180/pi*rad;

printf("Угол альфа равен %5.5lf радиан.",rad);

printf("\n Угол альфа равен %5.5lf градусов.",grad);

getchar(),getchar();

}

Тесты

Тест 1



Тест 2


Лабораторная №2


Разветвляющиеся алгоритмы

Вариант 12

Задача


На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, вывести эту точку и расстояние от нее до точки A.

Исходный код


#include

#include

#include

void main(){

double A,B,C;//3 точки на числовой оси

double d,f;//расстояие до точки

SetConsoleOutputCP(1251);

printf("Введите точку А,В,С\n");

scanf("%lf%lf%lf",&A,&B,&C);

d=fabs(B-A);

f=fabs(C-A);

if(d==f){

printf("Расстояние одинаково");

}

if(d>f){



printf("C(%lf) ближе к A",C);

printf("\nРасстояние равно:%lf",f);

}

if(d

printf("B(%lf) ближе к A,",B);

printf("\nРасстояние равно:%lf",d);

}

getchar(),getchar();



}

Тесты

Тест 1



Тест 2




Вариант 12

Задача


Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины (целое число в диапазоне 1– 5) и длина отрезка в этих единицах (вещественное число). Найти длину отрезка в метрах.

Исходный код


#include

#include

#include

void main (){

int operation;

float a,b;

SetConsoleOutputCP(1251);

printf("Введите длину:");

scanf("%f",&a);

printf("№ единицы длины:1-дециметр;2-километр;3-метр;4-милиметр;5-сантиметр.\nВведите номер единицы длины:");

scanf("%d",&operation);

switch(operation){

case 1:b=0.1*a,printf("Ответ:%3.4f метра(-ов)",b);break;

case 2:b=1000*a,printf("Ответ:%3.4f метра(-ов)",b);break;

case 3:b=a,printf("Ответ:%3.4f метра(-ов)",b);break;

case 4:b=0.001*a,printf("Ответ:%3.4f метра(-ов)",b);break;

case 5:b=0.01*a,printf("Ответ:%3.4f метра(-ов)",b);break;

default:printf("Введёная единица длины не соответствует условиям");

}

getchar(),getchar();



}

Тесты

Тест 1



Тест 2


Лабораторная №3


Циклический вычислительный процесс

Вариант 10

Задача


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


Исходный код


#include

#include

#include

void main(){

double Sn,S,x,eps,L,n;//Сумма,х,Епсилон,Левая часть,число шагов.

SetConsoleOutputCP(1251);

printf("Введите х ");

scanf("%lf",&x);

printf("Введите Епсилон ");

scanf("%lf",&eps);

L=sinh(x);

n=0;


Sn=x;

S=Sn;


while(fabs(L-S)>eps){

n++;


Sn*=(x*x)/((2*n)*(2*n+1));

S+=Sn;


}

printf("L=%lf\n",L);

printf("S=%lf\n",S);

printf("Епсилон=%lf\n",eps);

printf("Количество шагов=%lf\n",n+=1);

getchar();getchar();

}

Тесты

Тест 1



Тест 2




Вариант10

Задача



Исходный код

#include

#include

#include

void main (){

int N,Nfact=1;

SetConsoleOutputCP(1251);

do {


printf("Введите натуральное число \n");

scanf("%d",&N);

if(N<0)

printf("Введите положительное число \n");

}

while(N<=0);



if(N%2==0){

while(N!=2){

Nfact*=N;

N-=2;


}

Nfact*=N;}

else{

while(N!=1){



Nfact*=N;

N-=2;


}

}

printf("Двойной факториал= %d\n",Nfact);



getchar();getchar();

}

Тесты

Тест 1



Тест 2



Массивы

Лабораторная работа №4
Вариант12

Задача


Дан целочисленный массив размера N. Удалить из массива все соседние одинаковые элементы, оставив их первые вхождения.

Исходный код


#include

#include

#include

#include

void main(){

int n,i,k,j,a[100];

SetConsoleOutputCP(1251);

do{


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

scanf("%d",&n);

if((n<=0)||(n>100)){

printf("Ошибка повторите ввод!");

}

}

while((n<=0)||(n>100));



printf("Введите массив");

for(i=0;i

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

scanf("%d",&a[i]);

}

printf("Данный массив\n");



for(i=0;i

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

}

for(i=0;i

for(j=i+1;j

if(a[i]==a[j]){

for(k=j;k

a[k]=a[k+1];

}

n--;


}

}

}



printf("\nПoлученный массив\n");

for(i=0;i

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

}

getchar();



getchar();

}

Тесты

Тест 1



Тест 2




Вариант12

Задача



Исходный код


#include

#include

#include

#include

void main(){

int n,i,k,min,j,a[10][10];

SetConsoleOutputCP(1251);

do{


printf("Введите размер квадратной матрицы\n");

scanf("%d",&n);

if((n<=0)||(n>10)){

printf("Ошибка повторите ввод!");

}

}

while((n<=0)||(n>10));



printf("Введите матрицу");

for(i=0;i

for(j=0;j

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

scanf("%d",&a[i][j]);

}

}



printf("Введённая матрица\n");

for(i=0;i

for(j=0;j

printf("\t%d",a[i][j]);

}

printf("\n");



}

printf("Сигмент 1\n");

for(i=0;i

for(j=0;j

printf("\t%d",a[i][j]);

}

printf("\n");



}

min=a[0][0];

for(i=0;i

for(j=0;j

if(a[i][j]

min=a[i][j];

printf("Минимальный элемент в этом сигменте равен %d\n",min);

printf("Сигмент 2\n");

k=0;

if(n%2==0){



for(i=n/2;i

for(j=n/2-1-k;j<=n/2+k;j++){

printf("\t%d",a[i][j]);

}

k++;



printf("\n");

}

k=0;



min=a[n/2][n/2-1];

for(i=n/2;i

for(j=n/2-1-k;j<=n/2+k;j++){

if(a[i][j]

min=a[i][j];

}

}



k++;

}

}



else{

for(i=n/2;i

for(j=n/2-k;j<=n/2+k;j++){

printf("\t%d",a[i][j]);

}

k++;


printf("\n");

}

k=0;



min=a[n/2][n/2];

for(i=n/2;i

for(j=n/2-k;j<=n/2+k;j++){

if(a[i][j]

min=a[i][j];

}

k++;



}

}

printf("Минимальный элемент в этом сигменте равен %d\n",min);



printf("Сигмент 3\n");

k=0;


if(n%2==0){

for(i=0;i

for(j=0+k;j

printf("\t%d",a[i][j]);

}

k++;


printf("\n");

}

k=0;



min=a[0][0];

for(i=0;i

for(j=0+k;j

if(a[i][j]

min=a[i][j];

}

}



k++;

}

}



else{

for(i=0;i<=n/2;i++){

for(j=0+k;j

printf("\t%d",a[i][j]);

}

k++;


printf("\n");

}

k=0;



min=a[0][0];

for(i=0;i<=n/2;i++){

for(j=0+k;j

if(a[i][j]

min=a[i][j];

}

k++;



}

}

printf("Минимальный элемент в этом сигменте равен %d\n",min);



printf("Сигмент 4\n");

for(i=0;i

for(j=n-i-1;j

printf("\t%d",a[i][j]);

}

printf("\n");



}

min=a[0][n-1];

for(i=0;i

for(j=n-i-1;j

if(a[i][j]

min=a[i][j];

printf("Минимальный элемент в этом сигменте равен %d\n",min);

getchar();

getchar();

}

Тесты

Тест 1




Тест 2




Строки

Лабораторная работа №6

Вариант1

Задача



Исходный код


#include

#include

#include

#include

#include

void main(){

char a[80];

int i,n,S=0,max=0;

SetConsoleOutputCP(1251);

printf("Введите строку\n");

gets(a);

n=strlen(a);

for(i=0;i

{

if(a[i]>='0'&&a[i]<='9'){



S+=a[i]-48;

if(a[i]-48>max)

max=a[i]-48;

}

}



printf("Cумма цифр равна %d.\nМаксимальная цифра равна %d\.",S,max);

getchar();

getchar();

}

Тесты

Тест 1



Тест 2




Вариант1

Задача



Исходный код


#include

#include

#include

#include

#include

void main()

{

SetConsoleOutputCP(1251);



FILE *f;

int b[80],i,n,j,k;

char s[80],a[80],*p;

f = fopen ( "input.txt", "r" );

if ( f == NULL ) {

printf("Файл не найден.");

return;

}

printf("Введите искомую строку\n");



gets(a);

int const m=strlen(a);

while(1){

p=fgets(s,80,f);

if(p==NULL)

break;


printf ( "Прочитанная строка файла - \n%s", s );

n=strlen(s);

if(m>n)

printf("Нельзя!\n");



else

{

for(i=0;i

b[i]=0;

k=0;


for(i=0;i for(j=0;j

if(a[i]==s[j])

{

b[k]=1;



strcpy(s+j,s+(j+1));

k++;


n--;

break;


}

}

}



for(i=0;i

{

if(b[i]==0)



{

printf("Нельзя!\n");

break;

}

j=i;



if(j==m-1)

{

printf("Можно!\n");



}

}

}



}
fclose ( f );

getchar();getchar();

}

Файл находится в дирректории с проэктом.


Тесты

Тест 1



Тест 2


Структуры. Функции



Лабораторная работа №5

Вариант1

Задача



Исходный код


#include

#include

#include

#include

#include

struct Rational{

int N;

int D;


};

int NOD (int a,int b){

int min,i,k;

if(a>b)


min=b;

else


min=a;

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

if(a%i==0)

if(b%i==0)

k=i;

return k;



}

int NOK(int a, int b){

int j,n;

n=abs(a*b);

j=n/NOD(a,b);

return j;

}

struct Rational SOKR(struct Rational a){



struct Rational b;

b.N=a.N/NOD(a.N,a.D);

b.D=a.D/NOD(a.N,a.D);

return b;

}

struct Rational SUMMA(struct Rational a,struct Rational b){



struct Rational c;

int g,mn;

g=NOK(a.D,b.D);

mn=g/a.D;

a.N=a.N*mn;

mn=g/b.D;

b.N=b.N*mn;

c.N=a.N+b.N;

c.D=g;

return c;



}

struct Rational RAZN(struct Rational a,struct Rational b){

struct Rational c;

int g,mn;

g=NOK(a.D,b.D);

mn=g/a.D;

a.N=a.N*mn;

mn=g/b.D;

b.N=b.N*mn;

c.N=a.N-b.N;

c.D=g;

return c;



}

struct Rational PROIZ(struct Rational a,struct Rational b){

struct Rational c;

c.N=a.N*b.N;

c.D=a.D*b.D;

c=SOKR(c);

return c;

}

struct Rational CHAST(struct Rational a,struct Rational b){



struct Rational c;

c.N=a.N*b.D;

c.D=a.D*b.N;

c=SOKR(c);

return c;

}

struct Rational STEPEN(struct Rational a,int s){



int i;

if(s==0){

a.N=1;

a.D=1;


}

else{


for(i=1;i a.N*=a.N;

a.D*=a.D;

}

}



return a;

}

struct Rational T_P(struct Rational a,struct Rational b,struct Rational c){



struct Rational d;

d=PROIZ(a,b);

d=PROIZ(d,c);

d=SOKR(d);

return d;

}

struct Rational SRAVN(struct Rational a,struct Rational b){



struct Rational c;

int g,mn;

g=NOK(a.D,b.D);

mn=g/a.D;

a.N=a.N*mn;

mn=g/b.D;

b.N=b.N*mn;

if(a.N>b.N)

c.N=a.N;

else


c.N=b.N;

c.D=g;


c=SOKR(c);

return c;

}
void main(){

SetConsoleOutputCP(1251);

int i,j,k,m,h,b,n;

struct Rational max,*q,f={0,1};

printf("Введите степень многочлена\n");

scanf("%d",&n);

q=(Rational*)malloc((n+1)*sizeof(Rational));

for(i=n;i>=0;i--){

printf("Введите коэффициент перед %d степенью\n",i);

printf("Введите числитель рациональной дроби\n");

scanf("%d",&q[i].N);

printf("Введите знаменатель рациональной дроби\n");

scanf("%d",&q[i].D);

}

printf("Введите число Х=\n");



printf("Введите числитель Х\n");

scanf("%d",&q[n+1].N);

printf("Введите знаменатель Х\n");

scanf("%d",&q[n+1].D);

m=n;

for(i=n;i>=0;i--){



f=SUMMA(f,PROIZ(q[i],STEPEN(q[n+1],m)));

m--;


}

f=SOKR(f);

printf("F(%d/%d)=%d/%d\n",q[n+1].N,q[n+1].D,f.N,f.D);

if(n>=3){

for(i=n;i>=2;i--){

if(NOD(q[i].N,q[i].D)==1){

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

if(NOD(q[j].N,q[j].D)==1){

for(k=j-1;k>=0;k--){

if(NOD(q[k].N,q[k].D)==1){

if(i==n){

max=T_P(q[i],q[j],q[k]);

m=i;

h=j;


b=k;

}

f=SRAVN(max,T_P(q[i],q[j],q[k]));



if((max.N<=f.N)&&(max.D>=f.D)){

max=f;


m=i;

h=j;


b=k;

}

}



}

}

}



}

}

printf("Максимальное значение при коэффициентах %d, %d, %d равно %d/%d",m,h,b,max.N,max.D);



}

else


printf("Число дробей-коэффициентов перед x меньше 3-х");

getchar();

getchar();

}

Тесты

Тест 1



Тест 2


Структуры. Функции



Лабораторная работа №5

Вариант1

Задача



Исходный код


#include

#include

#include

#include

void Sort_Shell(int v[],int n,char fname[]){

FILE *f;

f=fopen(fname,"a");

fprintf(f,"Сортировка Шелла:\n");

int gap,i,j,temp,k=0,m=0;

for(gap=n/2;gap>0;gap/=2){

for(i=gap;i

k++;


for(j=i-gap;j>=0&&v[j]>v[j+gap];j-=gap){

m++;


temp=v[j];

v[j]=v[j+gap];

v[j+gap]=temp;
}

}

}



fprintf(f,"Массив после сортировки\n");

for(i=0;i

fprintf(f,"%5d",v[i]);

fprintf(f,"\n");

fprintf(f,"Сделано шагов %d\n",k);

fprintf(f,"Перестановок сделано %d\n",m);

fprintf(f,"\n\n");

fclose(f);

}

void Sort_vstavka(int v[],int n, char fname[]){



FILE *f;

f=fopen(fname,"a");

fprintf(f,"Сортировка вставками\n");

int i,j,key,k=0,m=0;

for(j=1;j

i=j-1;


key=v[j];

m++;


while(i>=0&&v[i]>key){

v[i+1]=v[i];

i=i-1;

k++;


}

v[i+1]=key;

}

fprintf(f,"Массив после сортировки\n");



for(i=0;i

fprintf(f,"%5d",v[i]);

fprintf(f,"\n");

fprintf(f,"Сделано шагов %d\n",m);

fprintf(f,"Перестановок сделано %d\n",k);

fprintf(f,"\n");

fclose(f);

}

int massiv1(int v[],int n,char fname[]){



FILE *f;

f=fopen(fname,"a");

fprintf(f,"Хороший массив\n");

int i;


for(i=0;i v[i]=i+1;

fprintf(f,"Массив до сортировки\n");

for(i=0;i

fprintf(f,"%5d",v[i]);

fprintf(f,"\n");

fclose(f);

return v[n];

}

int massiv2(int v[],int n, char fname[]){



FILE *f;

f=fopen(fname,"a");

fprintf(f,"Плохой массив\n");

int i;


for(i=0;i v[i]=n-i;

}

fprintf(f,"Массив до сортировки\n");



for(i=0;i

fprintf(f,"%5d",v[i]);

fprintf(f,"\n");

fclose(f);

return v[n];

}
int random(int N){

return rand()%N;

}

int copy(int v[],int h[], int n){



int i;

for(i=0;i

v[i]=h[i];

return v[n];

}

int massiv3(int v[], int n,char fname[]){



FILE *f;

f=fopen(fname,"a");

fprintf(f,"Рандомный массив\n");

int i;


for(i=0;i v[i]=random(n);

fprintf(f,"Массив до сортировки\n");

for(i=0;i

fprintf(f,"%5d",v[i]);

fprintf(f,"\n");

fclose(f);

return v[n];

}

void main(){



SetConsoleOutputCP(1251);

FILE *f;

f=fopen("123.txt","w");

char fname[]="123.txt";

int n,*a,*b;

do{


printf("Введите размер массива\n");

scanf("%d",&n);

if(n<=0)

printf("Ошибка!!! Повторите ввод\n");

}

while(n<=0);



a=new int[n];

b=new int[n];

a[n]=massiv1(a,n,fname);

b[n]=copy(b,a,n);

Sort_vstavka(a,n,fname);

Sort_Shell(b,n,fname);

a[n]=massiv2(a,n,fname);

b[n]=copy(b,a,n);

Sort_vstavka(a,n,fname);

Sort_Shell(b,n,fname);

a[n]=massiv3(a,n,fname);

b[n]=copy(b,a,n);

Sort_vstavka(a,n,fname);

Sort_Shell(b,n,fname);

fclose(f);

delete a;

system("pause");

}

Тесты

Тест 1




Тест 2







izumzum.ru