ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 01.03.2019

Просмотров: 465

Скачиваний: 11

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Черныш Э.И. 19101110

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САМАРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ »





Факультет математики

Кафедра Информатики и вычислительной математики



Отчет о лабораторном практикуме по началам программирования













Выполнила Черныш Э.И.

Группа 12101.150

Проверил: Рубцова Т. П.

оценка дата









2017


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

Задание:

Найти значение алгебраического выражения, соответствующего варианту задания. Вывести результаты на печать, сохраняя 4 знака после запятой (самостоятельно посмотрите форматированный вывод). Все результаты выводить в развернутом виде (например: "Сумма чисел А и B равна 3.7854"). Значения вводимых величин должны иметь не менее четырех значащих цифр и задаются студентом самостоятельно.

B7

a=b=0 a=1, b= -1 a=b= -1 a=1000000,b=0 a=b=1

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

#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 
#include <math.h> 
int main() 
{ 
setlocale(LC_ALL,"RUS"); 
double a,b; 
printf("Введите а: "); 
scanf("%lf",&a); 
printf("Введите b: "); 
scanf("%lf",&b); 
double s = exp(a*a-13.4*b); 
if(s>=0 && a+b>0 || s<=0 && a+b<0) 
{ 
double res = pow(cos(a+b*b),3.0)*sqrt(s/pow(a+b,3)); 
printf("%.4lf\n",res); 
} 
else 
{ 
printf("Невозможно посчитать!\n"); 
} 
return 0; 
}

Результат выполнения контрольного примера: a=1 b=0




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

Задание:

Следующее и предыдущее

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

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ int a,b,c; 
printf("a="); 
scanf("%d", &a); 
b=a+1; 
c=a-1; 
printf("The next number for the number %d\ ", a); 
printf("is %d", b); 
printf(".\n "); 
printf("The previous number for the number %d\ ", a); 
printf("is %d", c); 
printf(".\n "); 
return 0; 
}

Результат выполнения контрольного примера:

а=122
















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

Задание:

Разработать консольное приложение для вычисления значения функции, заданной графически для всех значений аргумента из области определения:

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

#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 
#include <math.h> 

int main() 
{ 
setlocale(LC_ALL,"RUS"); 
double x; 
printf("Введите х: "); 
scanf("%lf",&x); 
if(x>=-8 && x<=-5) /// если x=-5 лежит в этом отрезке, т.к это точка разрыва и непонятно, y=-3 или y=-2, предположили что у=-3; 
{ 
printf("y = -3,00"); 
} 
else if(x>-5&&x<=-3) 
{ 
printf("y = %.2lf",3+x); 
} 
else if(x>-3 && x<3) 
{ 
printf("y = %.2lf",sqrt(9-x*x)); 
} 
else if(x>=3 && x<8) 
{ 
printf("y = %.2lf",(3*x-9)/5); 
} 
else if(x>=8 && x<=10) 
{ 
printf("y = 3,00"); 
} 
return 0; 
}

Результат выполнения контрольного примера:



































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

Задание:

Разработать консольное приложение для того, чтобы определить принадлежность заданной точке заштрихованной области:

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

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#include <locale.h> 
int main() 
{ 
setlocale(LC_ALL,"RUS"); 

printf("Введите радиус R: "); 
double r; scanf("%lf",&r); 
double x,y; 
printf("Введите x: "); 
scanf("%lf",&x); 
printf("Введите y: "); 
scanf("%lf",&y); 
if(x>=0 && x<=2*r && y>=0) 
{ 
if(pow(x-r,2)+y*y<=r*r) 
{ 
printf("Точка принадлежит области!"); 
} 
else 
{ 
printf("Точка не принадлежит области!"); 
} 
} 
else if(x>=-r && x<=0 &&y>=-r && y<=0) 
{ 
if(pow(x+r,2)+pow(y+r,2)>=r*r) 
{ 
printf("Точка принадлежит области!"); 
} 
else 
{ 
printf("Точка не принадлежит области!"); 
} 
} 
else 
{ 
printf("Точка не принадлежит области!"); 
} 
return 0; 
}


Результат выполнения контрольного примера:

















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

Задание:


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

#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 
#include <math.h> 

int main() 
{ 
setlocale(LC_ALL,"RUS"); 
double a = 1.45; 
double pi = 3.1415; 
double e = 0.0001; 
double x,k; 
printf("Введите x: "); 
scanf("%lf",&x); 
printf("Введите точность E: "); 
scanf("%lf",&e); 
int i=1; 
double t = x*cos(a+(pi*i/2)); 
double s = t; 
while((fabs(t*k-t)<e)) 
{ 
i++; 
k =(x/i)*(cos(a+(pi*i/2))/cos(a+(pi*(i-1)/2))); 
t=t*k; 
s+=t; 
} 
double res = cos(a)-s; 
printf("Ответ: %.3lf",res); 
return 0; 
}

Результат выполнения контрольного примера:


































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

Задание:

Перечислить все пары «соседних» простых чисел, не превосходящих N, троичные представления которых получаются друг из друга записью цифр в обратном порядке (первая такая пара – это 5 и 7).


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

#include <stdio.h> 
#include <stdlib.h>
 
#include <locale.h>
 
#include <string.h>
 


char * inverce(char*);
 
char * decTo3(int);
 
int isEquals(char*,char*);
 

int main()
 
{
 
setlocale(LC_ALL,"RUS");
 
int n;
 
int i,k,l;
 
printf("
Введите число N: "); scanf("%d",&n); 
int s[n]; s[0]=0;
 
for(i=1;i<n;i++)
 
{
 
s[i]=1;
 
}
 
for(k=1; (k+1)*(k+1)<n; k++)
 
{
 
if(s[k]==1)
 
{
 
for(l=(k+1)*(k+1)-1; l<n; l+=k+1)
 
{
 
s[l]=0;
 
}
 
}
 
}
 
int *a=malloc(999999); int aN=0;;
 

for(i=0;i<n;i++)
 
{
 
if(s[i]==1)
 
{
 
a[aN]=i+1;
 
aN++;
 
}
 
}
 
for(i=0; i<aN;i++)
 
{
 
printf("%d ",a[i]);
 
}
 
printf("\n");
 
for(i=0;i<aN-1;i++)
 
{
 
char *g,*h;
 
g=decTo3(a[i]); h= inverce(decTo3(a[i+1]));
 
if(isEquals(g,h))
 
{
 
printf("
Пара %d , %d -> %s : %s\n",a[i],a[i+1],decTo3(a[i]),decTo3(a[i+1])); 
}
 
}
 

return 0;
 
}
 

char * inverce(char *t)
 
{
 
int i;
 
int k = strlen(t) - 2;
 
int m = k / 2;
 
for (i = 0; i <= m; i++)
 
{
 
char tmp = t[i];
 
t[i] = t[k - i + 1];
 
t[k - i + 1] = tmp;
 
}
 
return t;
 
}
 
char * decTo3(int x)
 
{
 
char *t = (char *)malloc(1000);
 
int i = 0;
 
do
 
{
 
t[i++] = x % 3 + '0';
 
x = x / 3;
 
} while (x != 0);
 
t[i] = '\0';
 
return inverce(t);
 
}
 
int isEquals(char* g, char* h)
 
{
 
int i;
 
if(strlen(g)!=strlen(h)){return 0;}
 
for(i=0;i<strlen(g);i++)
 
{
 
if(g[i]!=h[i]) return 0;
 
}
 
return 1;
 
}

Результат выполнения контрольного примера:





































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

Задание:


Задано множество точек M на плоскости. Определить, верно ли, что для каждой точки A M существует точка В M (AB) такая, что не существует двух точек множества M, лежащих по разные стороны от прямой AB.

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

#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 


int main() 
{ 
setlocale(LC_ALL,"RUS"); 

int n; 
int i,j,k; 
printf("Введите кол-во точек на множестве M: "); scanf("%d",&n); 
int x[n], y[n]; 
int checkPoint[n]; 
printf("Введите точки (координаты х и у через пробел)\n"); 
for(i=0;i<n;i++) 
{ 
printf("M%d: ",i+1); 
scanf("%d %d",&x[i],&y[i]); 
checkPoint[i]=0; 
} 
int f;int leftSide=0, rightSide=0; 

for(i=0;i<n-1;i++) 
{ 
for(j=i+1;j<n;j++) 
{ 
leftSide=0; rightSide=0; 
for(k=0;k<n;k++) 
{ 
f = (x[k]-x[i])*(y[j]-y[i])-(y[k]-y[i])*(x[j]-x[i]); 
if(f>0) leftSide=1; 
if(f<0) rightSide=1; 
} 
if(leftSide==0 || rightSide ==0) {checkPoint[i]=1; checkPoint[j]=1;} 
} 
} 
for(i=0;i<n;i++) 
{ 
if(checkPoint[i]==0) 
{ 
printf("Условие не выполнено, не для каждой точки A существует точка B, такая, что что не существует двух точек множества M, лежащих по разные стороны от прямой AB."); 
return 0; 
} 
} 
printf("Условие выполнено! Для каждой точки A существует точка B, такая, что что не существует двух точек множества M, лежащих по разные стороны от прямой AB."); 
return 0; 
}


Результат выполнения контрольного примера: